import { BrowserQRCodeReader, NotFoundException } from "@zxing/library"; export interface PairingQrScannerHandle { stop(): void; } export async function startPairingQrScanner( video: HTMLVideoElement, onScan: (value: string) => void, onError: (error: Error) => void, ): Promise { const reader = new BrowserQRCodeReader(); await reader.decodeFromVideoDevice(null, video, (result, error) => { if (result) { onScan(result.getText()); return; } if (error && !(error instanceof NotFoundException)) onError(error); }); return { stop: () => reader.reset() }; }