UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

50 lines 4.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkTextNumberConstraints = void 0; /** * Checks whether a given text matches the numeric constraints specified * @param text The text to match * @param constraints The constraints * @returns The numbers */ function checkTextNumberConstraints(text, { min, max, increment, baseValue, checkValidity }) { // Make sure the text is numeric if (!/^(\-?\d*\.)?\d+$/.exec(text)) { const res = /(\-?\d*\.)?\d+/.exec(text); return { message: "Value must be a number", ranges: res ? [ ...(res.index > 0 ? [{ start: 0, end: res.index }] : []), ...(res.index + res[0].length < text.length ? [{ start: res.index + res[0].length, end: text.length }] : []), ] : [{ start: 0, end: text.length }], }; } // Check whether the number satisfies the constraints const value = Number(text); if (min != undefined && min > value) return { message: `Value must be larger than ${min}`, ranges: [{ start: 0, end: text.length }], }; if (max != undefined && max < value) return { message: `Value must be smaller than ${max}`, ranges: [{ start: 0, end: text.length }], }; if (increment != undefined) { const dif = (value - (baseValue !== null && baseValue !== void 0 ? baseValue : 0)) % increment; const slack = 1e-6; if (dif > slack && increment - dif > slack) return { message: `Value must be a multiple of ${increment}${baseValue != undefined ? ` starting at ${baseValue}` : ""}`, ranges: [{ start: 0, end: text.length }], }; } return checkValidity === null || checkValidity === void 0 ? void 0 : checkValidity(text); } exports.checkTextNumberConstraints = checkTextNumberConstraints; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tUZXh0TnVtYmVyQ29uc3RyYWludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWVudXMvaXRlbXMvaW5wdXRzL2hhbmRsZXJzL251bWJlci9jaGVja1RleHROdW1iZXJDb25zdHJhaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQTs7Ozs7R0FLRztBQUNILFNBQWdCLDBCQUEwQixDQUN0QyxJQUFZLEVBQ1osRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFxQjtJQUVuRSxnQ0FBZ0M7SUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNoQyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTztZQUNILE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsTUFBTSxFQUFFLEdBQUc7Z0JBQ1AsQ0FBQyxDQUFDO29CQUNJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3RELEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU07d0JBQ3ZDLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO3dCQUN4RCxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNaO2dCQUNILENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1NBQ3ZDLENBQUM7S0FDTDtJQUVELHFEQUFxRDtJQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsSUFBSSxHQUFHLElBQUksU0FBUyxJQUFJLEdBQUcsR0FBRyxLQUFLO1FBQy9CLE9BQU87WUFDSCxPQUFPLEVBQUUsNkJBQTZCLEdBQUcsRUFBRTtZQUMzQyxNQUFNLEVBQUUsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztTQUN6QyxDQUFDO0lBQ04sSUFBSSxHQUFHLElBQUksU0FBUyxJQUFJLEdBQUcsR0FBRyxLQUFLO1FBQy9CLE9BQU87WUFDSCxPQUFPLEVBQUUsOEJBQThCLEdBQUcsRUFBRTtZQUM1QyxNQUFNLEVBQUUsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztTQUN6QyxDQUFDO0lBQ04sSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLEdBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxTQUFTLEdBQUcsR0FBRyxHQUFHLEtBQUs7WUFDdEMsT0FBTztnQkFDSCxPQUFPLEVBQUUsK0JBQStCLFNBQVMsR0FDN0MsU0FBUyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMzRCxFQUFFO2dCQUNGLE1BQU0sRUFBRSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO2FBQ3pDLENBQUM7S0FDVDtJQUNELE9BQU8sYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFHLElBQUksRUFBRTtBQUNqQyxDQUFDO0FBNUNELGdFQTRDQyJ9