UNPKG

@launchmenu/applet-window-manager

Version:
134 lines 11.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCoordinateSetting = void 0; const react_1 = __importDefault(require("react")); const core_1 = require("@launchmenu/core"); const model_react_1 = require("model-react"); /** * Creates a setting to control window positions * @param param0 */ function createCoordinateSetting({ name, init, allowNegative, actionBindings = () => [], min, max, }) { const castMin = min; const castMax = max; const normalizedMin = castMin && ("x" in castMin ? [castMin.x, castMin.y] : [castMin.width, castMin.height]); const normalizedMax = castMax && ("x" in castMax ? [castMax.x, castMax.y] : [castMax.width, castMax.height]); return core_1.createFieldMenuItem({ init: init, data: (field) => ({ name, icon: "window", valueView: (react_1.default.createElement(model_react_1.Loader, null, h => { const coordinates = field.get(h); if ("x" in coordinates) { const { x, y } = coordinates; return `${x}, ${y}`; } else { const { width, height } = coordinates; return `${width}, ${height}`; } })), searchPattern: core_1.settingPatternMatcher, resetable: true, resetUndoable: true, actionBindings: [ ...actionBindings(field), core_1.promptInputExecuteHandler.createBinding({ field, undoable: true, serialize: (coordinate) => "x" in coordinate ? `${coordinate.x}, ${coordinate.y}` : `${coordinate.width}, ${coordinate.height}`, deserialize: (text) => { var _a, _b, _c, _d; const numbers = text.split(",").map(v => { const number = Number(v); if (isNaN(number)) return 0; return number !== null && number !== void 0 ? number : 0; }); if ("x" in init) return { x: (_a = numbers[0]) !== null && _a !== void 0 ? _a : 0, y: (_b = numbers[1]) !== null && _b !== void 0 ? _b : 0 }; else return { width: (_c = numbers[0]) !== null && _c !== void 0 ? _c : 0, height: (_d = numbers[1]) !== null && _d !== void 0 ? _d : 0 }; }, checkValidity: text => checkValidity(text, allowNegative, normalizedMin, normalizedMax), }), ], }), }); } exports.createCoordinateSetting = createCoordinateSetting; /** * Checks whether a given piece of text is a valid coordinate input * @param text The text to be checked * @param allowNegative Whether to allow negative values * @param min The minimum values * @param max The maximum values * @returns An input error if present */ const checkValidity = (text, allowNegative, min, max) => { const match = text.match(allowNegative ? /([^\s\d\-]*)(\s*)(-?\d*)(\s*)([^\s,]*)(\s*)(,?)(\s*)([^\s\d\-]*)(\s*)(-?\d*)(\s*)(.*)/ : /([^\s\d]*)(\s*)(\d*)(\s*)([^\s,]*)(\s*)(,?)(\s*)([^\s\d]*)(\s*)(\d*)(\s*)(.*)/); if (match) { const extraRanges = match.slice(1).reduce(({ ranges, index }, value, i) => { const end = index + value.length; if (i % 4 == 0 && value.length > 0) return { index: end, ranges: [...ranges, { start: index, end }], }; return { ranges, index: end }; }, { ranges: [], index: 0 }).ranges; if (extraRanges.length > 0) return { message: "Invalid characters", ranges: extraRanges, }; const missingRanges = match.slice(1).reduce(({ ranges, index }, value, i) => { const end = index + value.length; if (i % 4 == 2 && value.length == 0) return { index: end, ranges: [...ranges, { start: index, end }], }; return { ranges, index: end }; }, { ranges: [], index: 0 }).ranges; if (missingRanges.length > 0) return { message: "Invalid format, should be 'x, y'", ranges: missingRanges, }; const v1 = Number(match[3]); const v2 = Number(match[11]); if (min && (v1 < min[0] || v2 < min[1])) return { message: `Values should be at least: ${min[0]}, ${min[1]}`, ranges: [], }; if (max && (v1 < max[0] || v2 < max[1])) return { message: `Values should be at most: ${max[0]}, ${max[1]}`, ranges: [], }; } else { // I don't think this case is reachable, but just in case return { message: "Invalid format, should be 'x, y'", ranges: [{ start: 0, end: text.length }], }; } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29vcmRpbmF0ZVNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlQ29vcmRpbmF0ZVNldHRpbmcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiwyQ0FTMEI7QUFDMUIsNkNBQW1DO0FBRW5DOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QixDQUE4QixFQUNqRSxJQUFJLEVBQ0osSUFBSSxFQUNKLGFBQWEsRUFDYixjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUN6QixHQUFHLEVBQ0gsR0FBRyxHQVFOO0lBQ0csTUFBTSxPQUFPLEdBQUcsR0FBd0IsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FBRyxHQUF3QixDQUFDO0lBQ3pDLE1BQU0sYUFBYSxHQUNmLE9BQU87UUFDUCxDQUFDLEdBQUcsSUFBSSxPQUFPO1lBQ1gsQ0FBQyxDQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFXO1lBQ25DLENBQUMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxhQUFhLEdBQ2YsT0FBTztRQUNQLENBQUMsR0FBRyxJQUFJLE9BQU87WUFDWCxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQVc7WUFDbkMsQ0FBQyxDQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFXLENBQUMsQ0FBQztJQUV0RCxPQUFPLDBCQUFtQixDQUFPO1FBQzdCLElBQUksRUFBRSxJQUFXO1FBQ2pCLElBQUksRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsSUFBSTtZQUNKLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLENBQ1AsOEJBQUMsb0JBQU0sUUFDRixDQUFD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