pi-kiosk-shared 2.2.89 → 2.2.92
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 -3
- 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/index.d.ts +2 -2
- package/dist/index.js +2 -2
- 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,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ZXing-C++ WebAssembly decode path (zxing-wasm).
|
|
3
|
-
* Much more sensitive than pure-JS @zxing/library for live camera frames.
|
|
4
|
-
*
|
|
5
|
-
* WASM must be same-origin under CSP (`connect-src 'self'`). Apps call
|
|
6
|
-
* {@link setZXingWasmUrl} once at boot with a Vite `?url` import.
|
|
7
|
-
*
|
|
8
|
-
* Sensitivity strategy (maximize hit rate for small / distant / low-contrast codes):
|
|
9
|
-
* - Eager WASM instantiate (`fireImmediately`)
|
|
10
|
-
* - Multi-pass digital zoom: full frame + center crops upscaled + 1D mid-band
|
|
11
|
-
* - Alternate binarizer on tight crops
|
|
12
|
-
* - tryDenoise + minLineCount: 1 (non-default reader deltas)
|
|
13
|
-
*/
|
|
14
|
-
import { type ReaderOptions } from 'zxing-wasm/reader';
|
|
15
|
-
import type { BarcodeScannerFormatProfile } from './scannerFormats.js';
|
|
16
|
-
/**
|
|
17
|
-
* Configure same-origin URL for `zxing_reader.wasm` (Vite `?url` or `/public`).
|
|
18
|
-
* Empty / whitespace-only URL clears configuration (`isZXingWasmConfigured()` → false).
|
|
19
|
-
*/
|
|
20
|
-
export declare function setZXingWasmUrl(url: string): void;
|
|
21
|
-
/** True only when a non-empty URL was set via {@link setZXingWasmUrl}. */
|
|
22
|
-
export declare function isZXingWasmConfigured(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Eagerly instantiate zxing-wasm (asset fetch + WASM compile).
|
|
25
|
-
*
|
|
26
|
-
* Must use `fireImmediately: true` and await the Promise — with the library
|
|
27
|
-
* default `fireImmediately: false`, prepare only registers overrides and
|
|
28
|
-
* `prepared = true` would lie; asset/instantiate failure then surfaces later
|
|
29
|
-
* as `readBarcodes` rejects (G4 fallthrough) while status stays `running`.
|
|
30
|
-
*
|
|
31
|
-
* On reject/throw: leave `prepared = false` and rethrow so the caller can
|
|
32
|
-
* hard-fail via G3 `wasmBootstrapFailed` (no native/@zxing fallthrough).
|
|
33
|
-
* G4 ≥8 hard-fail fallthrough applies ONLY to post-start decode rejects after
|
|
34
|
-
* a successfully instantiated module — unloadable WASM is a bootstrap error.
|
|
35
|
-
*/
|
|
36
|
-
export declare function ensureZXingWasmPrepared(): Promise<void>;
|
|
37
|
-
export declare function resolveWasmReaderFormats(formatProfile: BarcodeScannerFormatProfile): ReaderOptions['formats'];
|
|
38
|
-
/**
|
|
39
|
-
* Reader options for the high-sensitivity WASM path.
|
|
40
|
-
*
|
|
41
|
-
* Note: `tryHarder` / `tryRotate` / `tryInvert` / `tryDownscale` already default to
|
|
42
|
-
* `true` in zxing-wasm@3.1.3 — kept explicit but they are not the sensitivity upgrade.
|
|
43
|
-
* Real deltas vs library defaults: `tryDenoise: true`, `minLineCount: 1`, earlier
|
|
44
|
-
* downscale threshold, multi-pass digital zoom in {@link decodeVideoFrameWithZxingWasm},
|
|
45
|
-
* plus camera constraints / optical zoom elsewhere.
|
|
46
|
-
*/
|
|
47
|
-
export declare function buildSensitiveReaderOptions(formatProfile: BarcodeScannerFormatProfile): ReaderOptions;
|
|
48
|
-
export interface ScanPass {
|
|
49
|
-
readonly sx: number;
|
|
50
|
-
readonly sy: number;
|
|
51
|
-
readonly sw: number;
|
|
52
|
-
readonly sh: number;
|
|
53
|
-
/** Upscale factor when drawing the crop into the decode canvas (digital zoom). */
|
|
54
|
-
readonly scale: number;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Full frame + center zooms + mid-band (1D). Digital zoom is the main lever for
|
|
58
|
-
* distant / small symbols when the user does not fill the viewfinder.
|
|
59
|
-
*/
|
|
60
|
-
export declare function buildMaxSensitivityScanPasses(videoWidth: number, videoHeight: number): ScanPass[];
|
|
61
|
-
/**
|
|
62
|
-
* Decode one video frame via multi-pass canvas crops → ImageData → zxing-wasm.
|
|
63
|
-
* Returns the first payload or null when nothing is found.
|
|
64
|
-
*/
|
|
65
|
-
export declare function decodeVideoFrameWithZxingWasm(video: HTMLVideoElement, canvas: HTMLCanvasElement, readerOptions: ReaderOptions): Promise<string | null>;
|
|
66
|
-
//# sourceMappingURL=zxingWasmEngine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zxingWasmEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/zxingWasmEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAKvE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASjD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B7D;AAMD,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,2BAA2B,GACzC,aAAa,CAAC,SAAS,CAAC,CAQ1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,2BAA2B,GACzC,aAAa,CAcf;AAED,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,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjG;AA4BD;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ZXing-C++ WebAssembly decode path (zxing-wasm).
|
|
3
|
-
* Much more sensitive than pure-JS @zxing/library for live camera frames.
|
|
4
|
-
*
|
|
5
|
-
* WASM must be same-origin under CSP (`connect-src 'self'`). Apps call
|
|
6
|
-
* {@link setZXingWasmUrl} once at boot with a Vite `?url` import.
|
|
7
|
-
*
|
|
8
|
-
* Sensitivity strategy (maximize hit rate for small / distant / low-contrast codes):
|
|
9
|
-
* - Eager WASM instantiate (`fireImmediately`)
|
|
10
|
-
* - Multi-pass digital zoom: full frame + center crops upscaled + 1D mid-band
|
|
11
|
-
* - Alternate binarizer on tight crops
|
|
12
|
-
* - tryDenoise + minLineCount: 1 (non-default reader deltas)
|
|
13
|
-
*/
|
|
14
|
-
import { prepareZXingModule, readBarcodes, } from 'zxing-wasm/reader';
|
|
15
|
-
let wasmUrl = null;
|
|
16
|
-
let prepared = false;
|
|
17
|
-
/**
|
|
18
|
-
* Configure same-origin URL for `zxing_reader.wasm` (Vite `?url` or `/public`).
|
|
19
|
-
* Empty / whitespace-only URL clears configuration (`isZXingWasmConfigured()` → false).
|
|
20
|
-
*/
|
|
21
|
-
export function setZXingWasmUrl(url) {
|
|
22
|
-
const trimmed = url.trim();
|
|
23
|
-
if (trimmed.length === 0) {
|
|
24
|
-
wasmUrl = null;
|
|
25
|
-
prepared = false;
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
wasmUrl = trimmed;
|
|
29
|
-
prepared = false;
|
|
30
|
-
}
|
|
31
|
-
/** True only when a non-empty URL was set via {@link setZXingWasmUrl}. */
|
|
32
|
-
export function isZXingWasmConfigured() {
|
|
33
|
-
return wasmUrl !== null && wasmUrl.length > 0;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Eagerly instantiate zxing-wasm (asset fetch + WASM compile).
|
|
37
|
-
*
|
|
38
|
-
* Must use `fireImmediately: true` and await the Promise — with the library
|
|
39
|
-
* default `fireImmediately: false`, prepare only registers overrides and
|
|
40
|
-
* `prepared = true` would lie; asset/instantiate failure then surfaces later
|
|
41
|
-
* as `readBarcodes` rejects (G4 fallthrough) while status stays `running`.
|
|
42
|
-
*
|
|
43
|
-
* On reject/throw: leave `prepared = false` and rethrow so the caller can
|
|
44
|
-
* hard-fail via G3 `wasmBootstrapFailed` (no native/@zxing fallthrough).
|
|
45
|
-
* G4 ≥8 hard-fail fallthrough applies ONLY to post-start decode rejects after
|
|
46
|
-
* a successfully instantiated module — unloadable WASM is a bootstrap error.
|
|
47
|
-
*/
|
|
48
|
-
export async function ensureZXingWasmPrepared() {
|
|
49
|
-
if (prepared) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const url = wasmUrl;
|
|
53
|
-
if (url === null) {
|
|
54
|
-
throw new Error('ZXing WASM URL not configured. Import initBarcodeScannerWasm in the app entry.');
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
await prepareZXingModule({
|
|
58
|
-
fireImmediately: true,
|
|
59
|
-
overrides: {
|
|
60
|
-
locateFile: (path, prefix) => {
|
|
61
|
-
if (path.endsWith('.wasm')) {
|
|
62
|
-
return url;
|
|
63
|
-
}
|
|
64
|
-
return prefix + path;
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
prepared = true;
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
prepared = false;
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const WASM_RETAIL_FORMATS = ['Code128', 'EAN13', 'EAN8', 'UPCA'];
|
|
76
|
-
const WASM_QR_ONLY_FORMATS = ['QRCode'];
|
|
77
|
-
const WASM_ALL_FORMATS = [...WASM_RETAIL_FORMATS, 'QRCode'];
|
|
78
|
-
export function resolveWasmReaderFormats(formatProfile) {
|
|
79
|
-
if (formatProfile === 'qr-only') {
|
|
80
|
-
return [...WASM_QR_ONLY_FORMATS];
|
|
81
|
-
}
|
|
82
|
-
if (formatProfile === 'all') {
|
|
83
|
-
return [...WASM_ALL_FORMATS];
|
|
84
|
-
}
|
|
85
|
-
return [...WASM_RETAIL_FORMATS];
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Reader options for the high-sensitivity WASM path.
|
|
89
|
-
*
|
|
90
|
-
* Note: `tryHarder` / `tryRotate` / `tryInvert` / `tryDownscale` already default to
|
|
91
|
-
* `true` in zxing-wasm@3.1.3 — kept explicit but they are not the sensitivity upgrade.
|
|
92
|
-
* Real deltas vs library defaults: `tryDenoise: true`, `minLineCount: 1`, earlier
|
|
93
|
-
* downscale threshold, multi-pass digital zoom in {@link decodeVideoFrameWithZxingWasm},
|
|
94
|
-
* plus camera constraints / optical zoom elsewhere.
|
|
95
|
-
*/
|
|
96
|
-
export function buildSensitiveReaderOptions(formatProfile) {
|
|
97
|
-
return {
|
|
98
|
-
tryHarder: true,
|
|
99
|
-
tryRotate: true,
|
|
100
|
-
tryInvert: true,
|
|
101
|
-
tryDownscale: true,
|
|
102
|
-
tryDenoise: true,
|
|
103
|
-
minLineCount: 1,
|
|
104
|
-
maxNumberOfSymbols: 1,
|
|
105
|
-
// Start multi-scale search earlier on high-res frames.
|
|
106
|
-
downscaleThreshold: 800,
|
|
107
|
-
downscaleFactor: 2,
|
|
108
|
-
formats: resolveWasmReaderFormats(formatProfile),
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Full frame + center zooms + mid-band (1D). Digital zoom is the main lever for
|
|
113
|
-
* distant / small symbols when the user does not fill the viewfinder.
|
|
114
|
-
*/
|
|
115
|
-
export function buildMaxSensitivityScanPasses(videoWidth, videoHeight) {
|
|
116
|
-
const vw = videoWidth;
|
|
117
|
-
const vh = videoHeight;
|
|
118
|
-
if (vw < 2 || vh < 2) {
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
const center = (frac, scale) => {
|
|
122
|
-
const sw = Math.max(2, Math.floor(vw * frac));
|
|
123
|
-
const sh = Math.max(2, Math.floor(vh * frac));
|
|
124
|
-
return {
|
|
125
|
-
sx: Math.floor((vw - sw) / 2),
|
|
126
|
-
sy: Math.floor((vh - sh) / 2),
|
|
127
|
-
sw,
|
|
128
|
-
sh,
|
|
129
|
-
scale,
|
|
130
|
-
};
|
|
131
|
-
};
|
|
132
|
-
const bandH = Math.max(2, Math.floor(vh * 0.28));
|
|
133
|
-
const midBand = {
|
|
134
|
-
sx: 0,
|
|
135
|
-
sy: Math.floor((vh - bandH) / 2),
|
|
136
|
-
sw: vw,
|
|
137
|
-
sh: bandH,
|
|
138
|
-
scale: 2,
|
|
139
|
-
};
|
|
140
|
-
return [
|
|
141
|
-
{ sx: 0, sy: 0, sw: vw, sh: vh, scale: 1 },
|
|
142
|
-
center(0.7, 1.75),
|
|
143
|
-
center(0.5, 2.25),
|
|
144
|
-
center(0.35, 3),
|
|
145
|
-
midBand,
|
|
146
|
-
];
|
|
147
|
-
}
|
|
148
|
-
function firstBarcodeText(results) {
|
|
149
|
-
const first = results[0];
|
|
150
|
-
if (first === undefined || first.text.length === 0) {
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
return first.text;
|
|
154
|
-
}
|
|
155
|
-
async function decodeImageDataPass(imageData, readerOptions) {
|
|
156
|
-
const primary = firstBarcodeText(await readBarcodes(imageData, readerOptions));
|
|
157
|
-
if (primary !== null) {
|
|
158
|
-
return primary;
|
|
159
|
-
}
|
|
160
|
-
// Alternate binarizer helps washed-out / low-contrast packaging.
|
|
161
|
-
const alt = firstBarcodeText(await readBarcodes(imageData, {
|
|
162
|
-
...readerOptions,
|
|
163
|
-
binarizer: 'GlobalHistogram',
|
|
164
|
-
}));
|
|
165
|
-
return alt;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Decode one video frame via multi-pass canvas crops → ImageData → zxing-wasm.
|
|
169
|
-
* Returns the first payload or null when nothing is found.
|
|
170
|
-
*/
|
|
171
|
-
export async function decodeVideoFrameWithZxingWasm(video, canvas, readerOptions) {
|
|
172
|
-
const width = video.videoWidth;
|
|
173
|
-
const height = video.videoHeight;
|
|
174
|
-
if (width < 2 || height < 2) {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
const ctx = canvas.getContext('2d', { willReadFrequently: true });
|
|
178
|
-
if (ctx === null) {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
// Nearest-neighbor upscale keeps barcode edges sharp for digital zoom passes.
|
|
182
|
-
ctx.imageSmoothingEnabled = false;
|
|
183
|
-
const passes = buildMaxSensitivityScanPasses(width, height);
|
|
184
|
-
for (const pass of passes) {
|
|
185
|
-
const outW = Math.max(2, Math.floor(pass.sw * pass.scale));
|
|
186
|
-
const outH = Math.max(2, Math.floor(pass.sh * pass.scale));
|
|
187
|
-
if (canvas.width !== outW) {
|
|
188
|
-
canvas.width = outW;
|
|
189
|
-
}
|
|
190
|
-
if (canvas.height !== outH) {
|
|
191
|
-
canvas.height = outH;
|
|
192
|
-
}
|
|
193
|
-
ctx.clearRect(0, 0, outW, outH);
|
|
194
|
-
ctx.drawImage(video, pass.sx, pass.sy, pass.sw, pass.sh, 0, 0, outW, outH);
|
|
195
|
-
const imageData = ctx.getImageData(0, 0, outW, outH);
|
|
196
|
-
const text = await decodeImageDataPass(imageData, readerOptions);
|
|
197
|
-
if (text !== null) {
|
|
198
|
-
return text;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=zxingWasmEngine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zxingWasmEngine.js","sourceRoot":"","sources":["../../src/hooks/zxingWasmEngine.ts"],"names":[],"mappings":"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"}
|