UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

92 lines 6.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.standardTextResource = exports.TextEditCommand = void 0; const Command_1 = require("../../../undoRedo/Command"); const Resource_1 = require("../../../undoRedo/dependencies/Resource"); /** A base command that can be used to edit textfields */ class TextEditCommand extends Command_1.Command { /** * Creates a new text edit command * @param target The field of which to alter the text * @param change The function to retrieve the new contents of the text field * @param type The type of the command, used for undo/redo merging */ constructor(target, change, type = {}) { var _a; super(); this.metadata = { name: "Edit text", }; this.dependencies = [exports.standardTextResource]; this.target = target; if ("resource" in target && target.resource) this.dependencies = [target.resource]; this.change = change; this.addedText = type.addedText; this.selectionChange = (_a = type.isSelectionChange) !== null && _a !== void 0 ? _a : false; } /** * Uses the change function to compute the new text and selection for the field */ computeChange() { var _a; const oldText = this.target.get(); const oldSelection = this.target.getSelection(); const change = this.change({ selection: oldSelection, text: oldText }); const alteration = change.text ? { ...change.text, prevContent: oldText.substring(change.text.start, change.text.end), } : undefined; this.addedText = (alteration === null || alteration === void 0 ? void 0 : alteration.content) || undefined; const newText = change.text ? oldText.substring(0, change.text.start) + change.text.content + oldText.substring(change.text.end) : oldText; const newSelection = (_a = change.selection) !== null && _a !== void 0 ? _a : oldSelection; return { oldText, oldSelection, newText, newSelection, alteration, }; } /** @override */ onExecute() { // Compute the data for execution (and reverting) if (this.data == undefined) { this.data = this.computeChange(); } // Set the new value this.target.set(this.data.newText); this.target.setSelection(this.data.newSelection); } /** @override */ onRevert() { if (this.data) { this.target.set(this.data.oldText); this.target.setSelection(this.data.oldSelection); } } // Getters /** @override */ getAddedText() { return this.addedText; } /** @override */ isSelectionChange() { return this.selectionChange; } /** @override */ getAlterations() { var _a, _b; return ((_a = this.data) === null || _a === void 0 ? void 0 : _a.alteration) ? [(_b = this.data) === null || _b === void 0 ? void 0 : _b.alteration] : []; } } exports.TextEditCommand = TextEditCommand; /** A standard resource for text editing */ exports.standardTextResource = new Resource_1.Resource("Text edit"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEVkaXRDb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24vY29tbWFuZHMvVGV4dEVkaXRDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFrRDtBQUNsRCxzRUFBaUU7QUFPakUsMERBQTBEO0FBQzFELE1BQWEsZUFBZ0IsU0FBUSxpQkFBTztJQWN4Qzs7Ozs7T0FLRztJQUNILFlBQ0ksTUFBa0IsRUFDbEIsTUFBaUMsRUFDakMsT0FBMEQsRUFBRTs7UUFFNUQsS0FBSyxFQUFFLENBQUM7UUF4QkwsYUFBUSxHQUFHO1lBQ2QsSUFBSSxFQUFFLFdBQVc7U0FDcEIsQ0FBQztRQUNpQixpQkFBWSxHQUFHLENBQUMsNEJBQW9CLENBQWUsQ0FBQztRQXNCbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLFNBQUcsSUFBSSxDQUFDLGlCQUFpQixtQ0FBSSxLQUFLLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYTs7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxP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