function createBarcodeHandler(callback, delay = 60, lenght = 3) { let barcode = ""; let lastInputTime; let procTimer; return (char) => { if (char) { const timeSinceInput = new Date() - lastInputTime; lastInputTime = new Date(); clearTimeout(procTimer); if (timeSinceInput < delay) { barcode += char; } else { barcode = char; } if (barcode.length >= lenght) procTimer = setTimeout(() => callback(barcode), delay); } }; } function parseUserId(barcode) { const pattern = /^([a-z]{1})(\d{5})$/; // UserID num patter: S12345 or S00001 ([a-zA-Z]{1})\d{5} const re = new RegExp(pattern, "i"); const match = barcode.match(re); if (match) return match[2]; return null; } export { createBarcodeHandler, parseUserId };