pi-kiosk-shared 2.2.89 → 2.2.91
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/dist/barcode-scanner.d.ts +1 -1
- package/dist/barcode-scanner.d.ts.map +1 -1
- package/dist/barcode-scanner.js +1 -1
- package/dist/barcode-scanner.js.map +1 -1
- package/dist/hooks/scannerCameraConstraints.d.ts +43 -4
- package/dist/hooks/scannerCameraConstraints.d.ts.map +1 -1
- package/dist/hooks/scannerCameraConstraints.js +161 -22
- package/dist/hooks/scannerCameraConstraints.js.map +1 -1
- package/dist/hooks/scannerScanPasses.d.ts +21 -0
- package/dist/hooks/scannerScanPasses.d.ts.map +1 -0
- package/dist/hooks/scannerScanPasses.js +59 -0
- package/dist/hooks/scannerScanPasses.js.map +1 -0
- package/dist/hooks/selectEngine.d.ts +5 -6
- package/dist/hooks/selectEngine.d.ts.map +1 -1
- package/dist/hooks/useBarcodeScanner.d.ts +21 -9
- package/dist/hooks/useBarcodeScanner.d.ts.map +1 -1
- package/dist/hooks/useBarcodeScanner.js +143 -168
- package/dist/hooks/useBarcodeScanner.js.map +1 -1
- package/dist/hooks/zxingJsSensitiveDecode.d.ts +13 -0
- package/dist/hooks/zxingJsSensitiveDecode.d.ts.map +1 -0
- package/dist/hooks/zxingJsSensitiveDecode.js +54 -0
- package/dist/hooks/zxingJsSensitiveDecode.js.map +1 -0
- package/dist/ui/Switch/Switch.d.ts.map +1 -1
- package/dist/ui/Switch/Switch.js +10 -3
- package/dist/ui/Switch/Switch.js.map +1 -1
- package/package.json +3 -5
- package/dist/hooks/zxingWasmEngine.d.ts +0 -66
- package/dist/hooks/zxingWasmEngine.d.ts.map +0 -1
- package/dist/hooks/zxingWasmEngine.js +0 -203
- package/dist/hooks/zxingWasmEngine.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useBarcodeScanner, type UseBarcodeScannerMessages, type UseBarcodeScannerOptions, type UseBarcodeScannerReturn, type ScannerStatus, } from './hooks/useBarcodeScanner.js';
|
|
2
2
|
export type { ScannerEngine } from './hooks/selectEngine.js';
|
|
3
3
|
export { resolveScannerFormatConfig, type BarcodeScannerFormatProfile, type ScannerFormatConfig, } from './hooks/scannerFormats.js';
|
|
4
|
-
export {
|
|
4
|
+
export { SCANNER_VIDEO_CONSTRAINTS, SCANNER_VIDEO_CONSTRAINT_FALLBACKS, openScannerMediaStream, applyScannerTrackEnhancements, } from './hooks/scannerCameraConstraints.js';
|
|
5
5
|
//# sourceMappingURL=barcode-scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barcode-scanner.d.ts","sourceRoot":"","sources":["../src/barcode-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,0BAA0B,EAC1B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"barcode-scanner.d.ts","sourceRoot":"","sources":["../src/barcode-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,0BAA0B,EAC1B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,qCAAqC,CAAC"}
|
package/dist/barcode-scanner.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { useBarcodeScanner, } from './hooks/useBarcodeScanner.js';
|
|
2
2
|
export { resolveScannerFormatConfig, } from './hooks/scannerFormats.js';
|
|
3
|
-
export {
|
|
3
|
+
export { SCANNER_VIDEO_CONSTRAINTS, SCANNER_VIDEO_CONSTRAINT_FALLBACKS, openScannerMediaStream, applyScannerTrackEnhancements, } from './hooks/scannerCameraConstraints.js';
|
|
4
4
|
//# sourceMappingURL=barcode-scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barcode-scanner.js","sourceRoot":"","sources":["../src/barcode-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAKlB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,0BAA0B,GAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"barcode-scanner.js","sourceRoot":"","sources":["../src/barcode-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAKlB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,0BAA0B,GAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,qCAAqC,CAAC"}
|
|
@@ -1,13 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* High-sensitivity camera constraints for live barcode / QR decode.
|
|
3
|
-
* Prefer rear camera +
|
|
3
|
+
* Prefer rear camera + high ideal resolution so small symbols fill pixels.
|
|
4
|
+
*
|
|
5
|
+
* Do not set hard `min` width/height - Android Chrome often rejects those with
|
|
6
|
+
* OverconstrainedError. Some Android builds also surface soft-constraint failure
|
|
7
|
+
* as NotAllowedError; the ladder retries NotAllowed only until the final
|
|
8
|
+
* `video: true` rung (a true user deny there is not retried).
|
|
4
9
|
*/
|
|
5
10
|
export declare const SCANNER_VIDEO_CONSTRAINTS: MediaTrackConstraints;
|
|
6
|
-
/** Mild optical zoom when supported — enlarges distant/small codes without user effort. */
|
|
7
|
-
export declare const SCANNER_PREFERRED_ZOOM = 1.75;
|
|
8
11
|
/**
|
|
9
|
-
*
|
|
12
|
+
* Progressive getUserMedia ladder for mobile browsers.
|
|
13
|
+
* Soften resolution first, then facingMode-only, then any camera.
|
|
14
|
+
*/
|
|
15
|
+
export declare const SCANNER_VIDEO_CONSTRAINT_FALLBACKS: ReadonlyArray<MediaTrackConstraints | true>;
|
|
16
|
+
/**
|
|
17
|
+
* Optical zoom policy for scanner tracks: use the device's capability max
|
|
18
|
+
* (not a hard 2x ceiling). Documented for callers; resolution is via
|
|
19
|
+
* resolvePreferredOpticalZoom.
|
|
20
|
+
*/
|
|
21
|
+
export declare const SCANNER_OPTICAL_ZOOM_POLICY: "max";
|
|
22
|
+
/**
|
|
23
|
+
* Resolve preferred optical zoom from MediaTrackCapabilities.zoom bounds.
|
|
24
|
+
* Targets device max (G2) - no fixed 2x ceiling. Snaps down to a valid step
|
|
25
|
+
* when `step` is provided.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolvePreferredOpticalZoom(min: number, max: number, step?: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Midpoint zoom for a stepped ladder toward max (G4 distance lever).
|
|
30
|
+
* Snaps to step when provided.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveMidOpticalZoom(min: number, maxTarget: number, step?: number): number;
|
|
33
|
+
/**
|
|
34
|
+
* Open a camera stream with progressive constraint fallbacks.
|
|
35
|
+
*
|
|
36
|
+
* Overconstrained / NotFound / NotReadable / Abort -> next rung.
|
|
37
|
+
* NotAllowedError -> next rung only while `video` is not yet the final `true`
|
|
38
|
+
* (any-camera) rung; on that last rung NotAllowed is a real deny and is rethrown.
|
|
39
|
+
* Other failures (SecurityError, etc.) are rethrown immediately.
|
|
40
|
+
*/
|
|
41
|
+
export declare function openScannerMediaStream(getUserMedia: MediaDevices['getUserMedia']): Promise<MediaStream>;
|
|
42
|
+
/**
|
|
43
|
+
* Best-effort continuous autofocus, max optical zoom, and torch after getUserMedia.
|
|
10
44
|
* Unsupported constraints are ignored so older devices still scan.
|
|
45
|
+
*
|
|
46
|
+
* Distance levers (G2/G4):
|
|
47
|
+
* - Optical zoom targets capability max (policy SCANNER_OPTICAL_ZOOM_POLICY).
|
|
48
|
+
* - When the zoom range is wide, applies a mid -> max stepped ladder.
|
|
49
|
+
* - Enables torch when getCapabilities().torch is true.
|
|
11
50
|
*/
|
|
12
51
|
export declare function applyScannerTrackEnhancements(track: MediaStreamTrack): Promise<void>;
|
|
13
52
|
//# sourceMappingURL=scannerCameraConstraints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scannerCameraConstraints.d.ts","sourceRoot":"","sources":["../../src/hooks/scannerCameraConstraints.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scannerCameraConstraints.d.ts","sourceRoot":"","sources":["../../src/hooks/scannerCameraConstraints.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,qBAKvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,aAAa,CAAC,qBAAqB,GAAG,IAAI,CAS1F,CAAC;AAqBF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAG,KAAc,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CASR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAWR;AAmBD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,GACzC,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E1F"}
|
|
@@ -1,18 +1,121 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* High-sensitivity camera constraints for live barcode / QR decode.
|
|
3
|
-
* Prefer rear camera +
|
|
3
|
+
* Prefer rear camera + high ideal resolution so small symbols fill pixels.
|
|
4
|
+
*
|
|
5
|
+
* Do not set hard `min` width/height - Android Chrome often rejects those with
|
|
6
|
+
* OverconstrainedError. Some Android builds also surface soft-constraint failure
|
|
7
|
+
* as NotAllowedError; the ladder retries NotAllowed only until the final
|
|
8
|
+
* `video: true` rung (a true user deny there is not retried).
|
|
4
9
|
*/
|
|
5
10
|
export const SCANNER_VIDEO_CONSTRAINTS = {
|
|
6
11
|
facingMode: { ideal: 'environment' },
|
|
7
|
-
width: { ideal:
|
|
8
|
-
height: { ideal:
|
|
12
|
+
width: { ideal: 1920 },
|
|
13
|
+
height: { ideal: 1080 },
|
|
9
14
|
frameRate: { ideal: 30 },
|
|
10
15
|
};
|
|
11
|
-
/** Mild optical zoom when supported — enlarges distant/small codes without user effort. */
|
|
12
|
-
export const SCANNER_PREFERRED_ZOOM = 1.75;
|
|
13
16
|
/**
|
|
14
|
-
*
|
|
17
|
+
* Progressive getUserMedia ladder for mobile browsers.
|
|
18
|
+
* Soften resolution first, then facingMode-only, then any camera.
|
|
19
|
+
*/
|
|
20
|
+
export const SCANNER_VIDEO_CONSTRAINT_FALLBACKS = [
|
|
21
|
+
SCANNER_VIDEO_CONSTRAINTS,
|
|
22
|
+
{
|
|
23
|
+
facingMode: { ideal: 'environment' },
|
|
24
|
+
width: { ideal: 1280 },
|
|
25
|
+
height: { ideal: 720 },
|
|
26
|
+
},
|
|
27
|
+
{ facingMode: { ideal: 'environment' } },
|
|
28
|
+
true,
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Optical zoom policy for scanner tracks: use the device's capability max
|
|
32
|
+
* (not a hard 2x ceiling). Documented for callers; resolution is via
|
|
33
|
+
* resolvePreferredOpticalZoom.
|
|
34
|
+
*/
|
|
35
|
+
export const SCANNER_OPTICAL_ZOOM_POLICY = 'max';
|
|
36
|
+
/**
|
|
37
|
+
* Resolve preferred optical zoom from MediaTrackCapabilities.zoom bounds.
|
|
38
|
+
* Targets device max (G2) - no fixed 2x ceiling. Snaps down to a valid step
|
|
39
|
+
* when `step` is provided.
|
|
40
|
+
*/
|
|
41
|
+
export function resolvePreferredOpticalZoom(min, max, step) {
|
|
42
|
+
if (!(max > min)) {
|
|
43
|
+
return min;
|
|
44
|
+
}
|
|
45
|
+
if (step !== undefined && step > 0) {
|
|
46
|
+
const stepsFromMin = Math.floor((max - min) / step + Number.EPSILON);
|
|
47
|
+
return min + stepsFromMin * step;
|
|
48
|
+
}
|
|
49
|
+
return max;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Midpoint zoom for a stepped ladder toward max (G4 distance lever).
|
|
53
|
+
* Snaps to step when provided.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveMidOpticalZoom(min, maxTarget, step) {
|
|
56
|
+
if (!(maxTarget > min)) {
|
|
57
|
+
return min;
|
|
58
|
+
}
|
|
59
|
+
const mid = (min + maxTarget) / 2;
|
|
60
|
+
if (step !== undefined && step > 0) {
|
|
61
|
+
const stepsFromMin = Math.round((mid - min) / step);
|
|
62
|
+
const snapped = min + stepsFromMin * step;
|
|
63
|
+
return Math.min(maxTarget, Math.max(min, snapped));
|
|
64
|
+
}
|
|
65
|
+
return mid;
|
|
66
|
+
}
|
|
67
|
+
function isConstraintRetryableError(err) {
|
|
68
|
+
if (!(err instanceof DOMException)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return (err.name === 'OverconstrainedError' ||
|
|
72
|
+
err.name === 'ConstraintNotSatisfiedError' ||
|
|
73
|
+
err.name === 'NotFoundError' ||
|
|
74
|
+
err.name === 'NotReadableError' ||
|
|
75
|
+
err.name === 'AbortError');
|
|
76
|
+
}
|
|
77
|
+
function isNotAllowedError(err) {
|
|
78
|
+
return err instanceof DOMException && err.name === 'NotAllowedError';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Open a camera stream with progressive constraint fallbacks.
|
|
82
|
+
*
|
|
83
|
+
* Overconstrained / NotFound / NotReadable / Abort -> next rung.
|
|
84
|
+
* NotAllowedError -> next rung only while `video` is not yet the final `true`
|
|
85
|
+
* (any-camera) rung; on that last rung NotAllowed is a real deny and is rethrown.
|
|
86
|
+
* Other failures (SecurityError, etc.) are rethrown immediately.
|
|
87
|
+
*/
|
|
88
|
+
export async function openScannerMediaStream(getUserMedia) {
|
|
89
|
+
let lastError;
|
|
90
|
+
for (let i = 0; i < SCANNER_VIDEO_CONSTRAINT_FALLBACKS.length; i++) {
|
|
91
|
+
const video = SCANNER_VIDEO_CONSTRAINT_FALLBACKS[i];
|
|
92
|
+
try {
|
|
93
|
+
return await getUserMedia({ video, audio: false });
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
lastError = err;
|
|
97
|
+
if (isConstraintRetryableError(err)) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
// Soft-constraint NotAllowed: retry until final any-camera rung only.
|
|
101
|
+
if (isNotAllowedError(err) && video !== true) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
throw lastError instanceof Error
|
|
108
|
+
? lastError
|
|
109
|
+
: new Error('Could not open scanner camera', { cause: lastError });
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Best-effort continuous autofocus, max optical zoom, and torch after getUserMedia.
|
|
15
113
|
* Unsupported constraints are ignored so older devices still scan.
|
|
114
|
+
*
|
|
115
|
+
* Distance levers (G2/G4):
|
|
116
|
+
* - Optical zoom targets capability max (policy SCANNER_OPTICAL_ZOOM_POLICY).
|
|
117
|
+
* - When the zoom range is wide, applies a mid -> max stepped ladder.
|
|
118
|
+
* - Enables torch when getCapabilities().torch is true.
|
|
16
119
|
*/
|
|
17
120
|
export async function applyScannerTrackEnhancements(track) {
|
|
18
121
|
const getCapabilities = track.getCapabilities;
|
|
@@ -20,30 +123,66 @@ export async function applyScannerTrackEnhancements(track) {
|
|
|
20
123
|
return;
|
|
21
124
|
}
|
|
22
125
|
const capabilities = getCapabilities.call(track);
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
advanced.push({ focusMode: 'continuous' });
|
|
26
|
-
}
|
|
126
|
+
const hasContinuousFocus = capabilities.focusMode?.includes('continuous') === true;
|
|
127
|
+
const hasTorch = capabilities.torch === true;
|
|
27
128
|
const zoomCap = capabilities.zoom;
|
|
129
|
+
let zoomMin = 1;
|
|
130
|
+
let zoomMax = 1;
|
|
131
|
+
let zoomStep;
|
|
132
|
+
let hasZoomRange = false;
|
|
28
133
|
if (zoomCap !== undefined) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (target > min) {
|
|
34
|
-
advanced.push({ zoom: target });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
134
|
+
zoomMin = zoomCap.min ?? 1;
|
|
135
|
+
zoomMax = zoomCap.max ?? 1;
|
|
136
|
+
zoomStep = zoomCap.step;
|
|
137
|
+
hasZoomRange = zoomMax > zoomMin;
|
|
37
138
|
}
|
|
38
|
-
if (
|
|
139
|
+
if (!hasContinuousFocus && !hasTorch && !hasZoomRange) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const preferredZoom = hasZoomRange
|
|
143
|
+
? resolvePreferredOpticalZoom(zoomMin, zoomMax, zoomStep)
|
|
144
|
+
: undefined;
|
|
145
|
+
const midZoom = preferredZoom !== undefined && preferredZoom > zoomMin
|
|
146
|
+
? resolveMidOpticalZoom(zoomMin, preferredZoom, zoomStep)
|
|
147
|
+
: undefined;
|
|
148
|
+
const useZoomLadder = midZoom !== undefined &&
|
|
149
|
+
preferredZoom !== undefined &&
|
|
150
|
+
midZoom > zoomMin &&
|
|
151
|
+
midZoom < preferredZoom;
|
|
152
|
+
const firstAdvanced = [];
|
|
153
|
+
if (hasContinuousFocus) {
|
|
154
|
+
firstAdvanced.push({ focusMode: 'continuous' });
|
|
155
|
+
}
|
|
156
|
+
if (hasTorch) {
|
|
157
|
+
firstAdvanced.push({ torch: true });
|
|
158
|
+
}
|
|
159
|
+
if (useZoomLadder) {
|
|
160
|
+
firstAdvanced.push({ zoom: midZoom });
|
|
161
|
+
}
|
|
162
|
+
else if (preferredZoom !== undefined && preferredZoom > zoomMin) {
|
|
163
|
+
firstAdvanced.push({ zoom: preferredZoom });
|
|
164
|
+
}
|
|
165
|
+
if (firstAdvanced.length === 0) {
|
|
39
166
|
return;
|
|
40
167
|
}
|
|
41
168
|
try {
|
|
42
|
-
const
|
|
43
|
-
await track.applyConstraints(
|
|
169
|
+
const first = { advanced: firstAdvanced };
|
|
170
|
+
await track.applyConstraints(first);
|
|
171
|
+
// Second lever: step optical zoom to max after focus/torch/mid settled.
|
|
172
|
+
if (useZoomLadder && preferredZoom !== undefined) {
|
|
173
|
+
try {
|
|
174
|
+
const second = {
|
|
175
|
+
advanced: [{ zoom: preferredZoom }],
|
|
176
|
+
};
|
|
177
|
+
await track.applyConstraints(second);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Max zoom rejected after mid - keep mid + prior enhancements.
|
|
181
|
+
}
|
|
182
|
+
}
|
|
44
183
|
}
|
|
45
184
|
catch {
|
|
46
|
-
// Device rejected advanced focus/zoom
|
|
185
|
+
// Device rejected advanced focus/zoom/torch - keep the stream as opened.
|
|
47
186
|
}
|
|
48
187
|
}
|
|
49
188
|
//# sourceMappingURL=scannerCameraConstraints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scannerCameraConstraints.js","sourceRoot":"","sources":["../../src/hooks/scannerCameraConstraints.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scannerCameraConstraints.js","sourceRoot":"","sources":["../../src/hooks/scannerCameraConstraints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Digital-zoom scan regions for distant / small barcodes.
|
|
3
|
+
* Used by the pure-JS @zxing multi-pass decoder.
|
|
4
|
+
*/
|
|
5
|
+
export interface ScanPass {
|
|
6
|
+
readonly sx: number;
|
|
7
|
+
readonly sy: number;
|
|
8
|
+
readonly sw: number;
|
|
9
|
+
readonly sh: number;
|
|
10
|
+
/** Upscale factor when drawing the crop into the decode canvas. */
|
|
11
|
+
readonly scale: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Full frame + center zooms + mid-band (1D) + four corner crops + optional tight center.
|
|
15
|
+
* Covers off-center / distant codes that are not in the viewfinder center.
|
|
16
|
+
*
|
|
17
|
+
* CPU bound: at most 10 passes (1 full + 3 center + 1 mid-band + 4 corners + 1 tight center).
|
|
18
|
+
* Do not add more regions without raising this documented ceiling (~10–12 max).
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildMaxSensitivityScanPasses(videoWidth: number, videoHeight: number): ScanPass[];
|
|
21
|
+
//# sourceMappingURL=scannerScanPasses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scannerScanPasses.d.ts","sourceRoot":"","sources":["../../src/hooks/scannerScanPasses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CA0DjG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full frame + center zooms + mid-band (1D) + four corner crops + optional tight center.
|
|
3
|
+
* Covers off-center / distant codes that are not in the viewfinder center.
|
|
4
|
+
*
|
|
5
|
+
* CPU bound: at most 10 passes (1 full + 3 center + 1 mid-band + 4 corners + 1 tight center).
|
|
6
|
+
* Do not add more regions without raising this documented ceiling (~10–12 max).
|
|
7
|
+
*/
|
|
8
|
+
export function buildMaxSensitivityScanPasses(videoWidth, videoHeight) {
|
|
9
|
+
const vw = videoWidth;
|
|
10
|
+
const vh = videoHeight;
|
|
11
|
+
if (vw < 2 || vh < 2) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const center = (frac, scale) => {
|
|
15
|
+
const sw = Math.max(2, Math.floor(vw * frac));
|
|
16
|
+
const sh = Math.max(2, Math.floor(vh * frac));
|
|
17
|
+
return {
|
|
18
|
+
sx: Math.floor((vw - sw) / 2),
|
|
19
|
+
sy: Math.floor((vh - sh) / 2),
|
|
20
|
+
sw,
|
|
21
|
+
sh,
|
|
22
|
+
scale,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
/** Corner crop: `frac`×`frac` of the frame anchored at a corner (off-center). */
|
|
26
|
+
const corner = (anchor, frac, scale) => {
|
|
27
|
+
const sw = Math.max(2, Math.floor(vw * frac));
|
|
28
|
+
const sh = Math.max(2, Math.floor(vh * frac));
|
|
29
|
+
const sx = anchor === 'tr' || anchor === 'br' ? vw - sw : 0;
|
|
30
|
+
const sy = anchor === 'bl' || anchor === 'br' ? vh - sh : 0;
|
|
31
|
+
return { sx, sy, sw, sh, scale };
|
|
32
|
+
};
|
|
33
|
+
const bandH = Math.max(2, Math.floor(vh * 0.28));
|
|
34
|
+
const midBand = {
|
|
35
|
+
sx: 0,
|
|
36
|
+
sy: Math.floor((vh - bandH) / 2),
|
|
37
|
+
sw: vw,
|
|
38
|
+
sh: bandH,
|
|
39
|
+
scale: 2,
|
|
40
|
+
};
|
|
41
|
+
return [
|
|
42
|
+
// 1. full frame
|
|
43
|
+
{ sx: 0, sy: 0, sw: vw, sh: vh, scale: 1 },
|
|
44
|
+
// 2–4. center zooms
|
|
45
|
+
center(0.7, 1.75),
|
|
46
|
+
center(0.5, 2.25),
|
|
47
|
+
center(0.35, 3),
|
|
48
|
+
// 5. mid-band 1D
|
|
49
|
+
midBand,
|
|
50
|
+
// 6–9. four corner crops (off-center distant codes)
|
|
51
|
+
corner('tl', 0.4, 2.75),
|
|
52
|
+
corner('tr', 0.4, 2.75),
|
|
53
|
+
corner('bl', 0.4, 2.75),
|
|
54
|
+
corner('br', 0.4, 2.75),
|
|
55
|
+
// 10. stronger tight center
|
|
56
|
+
center(0.25, 3.5),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=scannerScanPasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scannerScanPasses.js","sourceRoot":"","sources":["../../src/hooks/scannerScanPasses.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,UAAkB,EAAE,WAAmB;IACnF,MAAM,EAAE,GAAG,UAAU,CAAC;IACtB,MAAM,EAAE,GAAG,WAAW,CAAC;IACvB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAAY,EAAE;QACvD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,EAAE;YACF,EAAE;YACF,KAAK;SACN,CAAC;IACJ,CAAC,CAAC;IAEF,iFAAiF;IACjF,MAAM,MAAM,GAAG,CACb,MAAiC,EACjC,IAAY,EACZ,KAAa,EACH,EAAE;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,OAAO,GAAa;QACxB,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,CAAC;KACT,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QAC1C,oBAAoB;QACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;QACjB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACf,iBAAiB;QACjB,OAAO;QACP,oDAAoD;QACpD,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QACvB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QACvB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QACvB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;QACvB,4BAA4B;QAC5B,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Decode engines used by {@link useBarcodeScanner}:
|
|
3
|
-
* - `zxing
|
|
4
|
-
* - `native-detector` —
|
|
5
|
-
*
|
|
3
|
+
* - `zxing` — pure-JS @zxing/browser (decodeFromStream + multi-pass zoom)
|
|
4
|
+
* - `native-detector` — legacy union member; G5 no longer starts native-only
|
|
5
|
+
* (weak path without TRY_HARDER / multi-pass). Kept for API compatibility.
|
|
6
6
|
*
|
|
7
|
-
* Engine selection lives only in `useBarcodeScanner
|
|
8
|
-
* There is no separate `selectBarcodeScannerEngine` helper — that was a dual SoT (G7).
|
|
7
|
+
* Engine selection lives only in `useBarcodeScanner`.
|
|
9
8
|
*/
|
|
10
|
-
export type ScannerEngine = 'zxing
|
|
9
|
+
export type ScannerEngine = 'zxing' | 'native-detector';
|
|
11
10
|
//# sourceMappingURL=selectEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/selectEngine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"selectEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/selectEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,iBAAiB,CAAC"}
|
|
@@ -10,8 +10,21 @@ export interface UseBarcodeScannerMessages {
|
|
|
10
10
|
runningZxing: string;
|
|
11
11
|
error: string;
|
|
12
12
|
scannerOff: string;
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Optional — shown when the page is not a secure context (HTTP over LAN IP).
|
|
15
|
+
* Falls back to `noCamera` when omitted.
|
|
16
|
+
*/
|
|
17
|
+
insecureContext?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Optional — camera busy / hardware lock (NotReadableError / AbortError after
|
|
20
|
+
* constraint ladder exhaustion). Falls back to `error` when omitted.
|
|
21
|
+
*/
|
|
22
|
+
cameraInUse?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional — secure-context / Permissions-Policy block (SecurityError).
|
|
25
|
+
* Falls back to `error` when omitted. Not treated as user permission deny.
|
|
26
|
+
*/
|
|
27
|
+
policyBlocked?: string;
|
|
15
28
|
}
|
|
16
29
|
export interface UseBarcodeScannerOptions {
|
|
17
30
|
enabled: boolean;
|
|
@@ -20,7 +33,7 @@ export interface UseBarcodeScannerOptions {
|
|
|
20
33
|
messages: UseBarcodeScannerMessages;
|
|
21
34
|
formatProfile?: BarcodeScannerFormatProfile;
|
|
22
35
|
/**
|
|
23
|
-
*
|
|
36
|
+
* Fired when the tab/page backgrounds and the hook releases the camera.
|
|
24
37
|
* Parent should set `enabled` false so the CTA must be tapped again (no auto-restart).
|
|
25
38
|
*/
|
|
26
39
|
onBackgroundStop?: () => void;
|
|
@@ -33,12 +46,11 @@ export interface UseBarcodeScannerReturn {
|
|
|
33
46
|
/**
|
|
34
47
|
* Live camera barcode/QR decode.
|
|
35
48
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* 3. then pure-JS @zxing/browser
|
|
49
|
+
* Primary: pure-JS @zxing/browser `decodeFromStream` (former working engine)
|
|
50
|
+
* plus parallel multi-pass digital zoom + TRY_HARDER for distant / small codes.
|
|
51
|
+
* If stream fails but a canvas exists, multi-pass alone is the sensitive path.
|
|
52
|
+
* G5: never start native BarcodeDetector alone (no TRY_HARDER / distance assist) —
|
|
53
|
+
* hard-fail with recovery copy when neither @zxing path can start.
|
|
42
54
|
*/
|
|
43
55
|
export declare function useBarcodeScanner(options: UseBarcodeScannerOptions): UseBarcodeScannerReturn;
|
|
44
56
|
//# sourceMappingURL=useBarcodeScanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBarcodeScanner.d.ts","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useBarcodeScanner.d.ts","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjF,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAKD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,uBAAuB,CAyW5F"}
|