UNPKG

@launchmenu/applet-notes

Version:
70 lines 4.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AddNoteCommand = exports.createAddNoteMenuItem = void 0; const core_1 = require("@launchmenu/core"); const model_react_1 = require("model-react"); /** * Creates a new menu item to add new notes * @param notesSource The notes source to add the item to * @param onCreate A callback for when a note is created * @returns The menu item that can be used to create new notes */ function createAddNoteMenuItem(notesSource, onCreate) { return core_1.createStandardMenuItem({ name: "Add note", category: core_1.getControlsCategory(), actionBindings: [ core_1.sequentialExecuteHandler.createBinding(async ({ context }) => { // Create a field to store the input name, and request an input from the user const field = new model_react_1.Field(""); await core_1.executeAction.execute(context, [ { actionBindings: [ core_1.inputExecuteHandler.createBinding({ field, undoable: false }), ], }, ]); // Create the command to execute with the retrieved name return new AddNoteCommand(field.get(), notesSource, onCreate); }), ], }); } exports.createAddNoteMenuItem = createAddNoteMenuItem; /** A command to add a note to a notes source */ class AddNoteCommand extends core_1.Command { /** * Creates a new add note command * @param name The name of the note * @param source The notes source to add the note to * @param onCreate A callback for when the note is created */ constructor(name, source, onCreate = () => { }) { super(); this.metadata = { name: "Add note", }; this.name = name; this.notesSource = source; this.onCreate = onCreate; } /** @override */ async onExecute() { // If there was any note data, restore it to keep the future stack valid if (this.noteData) this.note = await this.notesSource.createNote(this.noteData); // Create a new note from scratch on first execution else this.note = await this.notesSource.addNote(this.name); // Invoke the callback this.onCreate(this.note, !this.noteData); } /** @override */ async onRevert() { var _a; this.noteData = this.note.getData(); (_a = this.note) === null || _a === void 0 ? void 0 : _a.delete(); } } exports.AddNoteCommand = AddNoteCommand; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQWRkTm90ZUl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL2NvbnRyb2xzL2NyZWF0ZUFkZE5vdGVJdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQVEwQjtBQUMxQiw2Q0FBa0M7QUFLbEM7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FDakMsV0FBd0IsRUFDeEIsUUFBaUQ7SUFFakQsT0FBTyw2QkFBc0IsQ0FBQztRQUMxQixJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUUsMEJBQW1CLEVBQUU7UUFDL0IsY0FBYyxFQUFFO1lBQ1osK0JBQXdCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUU7Z0JBQ3ZELDZFQUE2RTtnQkFDN0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixNQUFNLG9CQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtvQkFDakM7d0JBQ0ksY0FBYyxFQUFFOzRCQUNaLDBCQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUM7eUJBQzlEO3FCQUNKO2lCQUNKLENBQUMsQ0FBQztnQkFFSCx3REFBd0Q7Z0JBQ3hELE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUM7U0FDTDtLQUNKLENBQUMsQ0FBQztBQUNQLENBQUM7QUF4QkQsc0RBd0JDO0FBRUQsZ0RBQWdEO0FBQ2hELE1BQWEsY0FBZSxTQUFRLGNBQU87SUFXdkM7Ozs7O09BS0c7SUFDSCxZQUNJLElBQVksRUFDWixNQUFtQixFQUNuQixXQUlZLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFFcEIsS0FBSyxFQUFFLENBQUM7UUF6QkwsYUFBUSxHQUFHO1lBQ2QsSUFBSSxFQUFFLFVBQVU7U0FDbkIsQ0FBQztRQXdCRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO0lBQ04sS0FBSyxDQUFDLFNBQVM7UUFDckIsd0VBQXdFO1FBQ3hFLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLG9EQUFvRDs7WUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQkFBZ0I7SUFDTixLQUFLLENBQUMsUUFBUTs7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsTUFBTSxHQUFHO0lBQ3hCLENBQUM7Q0FDSjtBQWhERCx3Q0FnREMifQ==