import { Html5QrcodeScanType, Html5QrcodeConstants } from "../../core";
|
export class ScanTypeSelector {
|
constructor(supportedScanTypes) {
|
this.supportedScanTypes = this.validateAndReturnScanTypes(supportedScanTypes);
|
}
|
getDefaultScanType() {
|
return this.supportedScanTypes[0];
|
}
|
hasMoreThanOneScanType() {
|
return this.supportedScanTypes.length > 1;
|
}
|
isCameraScanRequired() {
|
for (const scanType of this.supportedScanTypes) {
|
if (ScanTypeSelector.isCameraScanType(scanType)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
static isCameraScanType(scanType) {
|
return scanType === Html5QrcodeScanType.SCAN_TYPE_CAMERA;
|
}
|
static isFileScanType(scanType) {
|
return scanType === Html5QrcodeScanType.SCAN_TYPE_FILE;
|
}
|
validateAndReturnScanTypes(supportedScanTypes) {
|
if (!supportedScanTypes || supportedScanTypes.length === 0) {
|
return Html5QrcodeConstants.DEFAULT_SUPPORTED_SCAN_TYPE;
|
}
|
let maxExpectedValues = Html5QrcodeConstants.DEFAULT_SUPPORTED_SCAN_TYPE.length;
|
if (supportedScanTypes.length > maxExpectedValues) {
|
throw `Max ${maxExpectedValues} values expected for `
|
+ "supportedScanTypes";
|
}
|
for (const scanType of supportedScanTypes) {
|
if (!Html5QrcodeConstants.DEFAULT_SUPPORTED_SCAN_TYPE
|
.includes(scanType)) {
|
throw `Unsupported scan type ${scanType}`;
|
}
|
}
|
return supportedScanTypes;
|
}
|
}
|
//# sourceMappingURL=scan-type-selector.js.map
|