@launchmenu/applet-notes
Version:
An applet to make short notes
70 lines • 4.9 kB
JavaScript
;
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==