@launchmenu/applet-notes
Version:
An applet to make short notes
73 lines • 5.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AddNoteCategoryCommand = exports.createAddNoteCategoryMenuItem = void 0;
const core_1 = require("@launchmenu/core");
const model_react_1 = require("model-react");
/**
* Creates a new menu item to add new note categories
* @param notesSource The notes source to add the item to
* @param onCreate A callback for when a note category is created
* @returns The menu item that can be used to create new note categories
*/
function createAddNoteCategoryMenuItem(notesSource, onCreate) {
return core_1.createStandardMenuItem({
name: "Add category",
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.promptInputExecuteHandler.createBinding({
field,
undoable: false,
}),
],
},
]);
// Create the command to execute with the retrieved name
return new AddNoteCategoryCommand(field.get(), notesSource, onCreate);
}),
],
});
}
exports.createAddNoteCategoryMenuItem = createAddNoteCategoryMenuItem;
/** A command to add a note category to a notes source */
class AddNoteCategoryCommand extends core_1.Command {
/**
* Creates a new add note category command
* @param name The name of the note category
* @param source The notes source to add the note to
* @param onCreate A callback for when the category is created
*/
constructor(name, source, onCreate = () => { }) {
super();
this.metadata = {
name: "Add note category",
};
this.name = name;
this.notesSource = source;
this.onCreate = onCreate;
}
/** @override */
async onExecute() {
// If there was any note category data, restore it to keep the future stack valid
if (this.noteCategoryData)
this.noteCategory = await this.notesSource.createNoteCategory(this.noteCategoryData);
// Create a new note category from scratch on first execution
else
this.noteCategory = await this.notesSource.addNoteCategory(this.name);
// Invoke the callback
this.onCreate(this.noteCategory, !this.noteCategoryData);
}
/** @override */
async onRevert() {
var _a;
this.noteCategoryData = this.noteCategory.getData();
(_a = this.noteCategory) === null || _a === void 0 ? void 0 : _a.delete();
}
}
exports.AddNoteCategoryCommand = AddNoteCategoryCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQWRkTm90ZUNhdGVnb3J5TWVudUl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50ZXJmYWNlL2NhdGVnb3JpZXMvY29udHJvbHMvY3JlYXRlQWRkTm90ZUNhdGVnb3J5TWVudUl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBUTBCO0FBQzFCLDZDQUFrQztBQUtsQzs7Ozs7R0FLRztBQUNILFNBQWdCLDZCQUE2QixDQUN6QyxXQUF3QixFQUN4QixRQUFpRTtJQUVqRSxPQUFPLDZCQUFzQixDQUFDO1FBQzFCLElBQUksRUFBRSxjQUFjO1FBQ3BCLFFBQVEsRUFBRSwwQkFBbUIsRUFBRTtRQUMvQixjQUFjLEVBQUU7WUFDWiwrQkFBd0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBRTtnQkFDdkQsNkVBQTZFO2dCQUM3RSxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sb0JBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNqQzt3QkFDSSxjQUFjLEVBQUU7NEJBQ1osZ0NBQXlCLENBQUMsYUFBYSxDQUFDO2dDQUNwQyxLQUFLO2dDQUNMLFFBQVEsRUFBRSxLQUFLOzZCQUNsQixDQUFDO3lCQUNMO3FCQUNKO2lCQUNKLENBQUMsQ0FBQztnQkFFSCx3REFBd0Q7Z0JBQ3hELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFFLENBQUMsQ0FBQztTQUNMO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQTNCRCxzRUEyQkM7QUFFRCx5REFBeUQ7QUFDekQsTUFBYSxzQkFBdUIsU0FBUSxjQUFPO0lBVy9DOzs7OztPQUtHO0lBQ0gsWUFDSSxJQUFZLEVBQ1osTUFBbUIsRUFDbkIsV0FJWSxHQUFHLEVBQUUsR0FBRSxDQUFDO1FBRXBCLEtBQUssRUFBRSxDQUFDO1FBekJMLGFBQVEsR0FBRztZQUNkLElBQUksRUFBRSxtQkFBbUI7U0FDNUIsQ0FBQztRQXdCRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO0lBQ04sS0FBSyxDQUFDLFNBQVM7UUFDckIsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FDekQsSUFBSSxDQUFDLGdCQUFnQixDQUN4QixDQUFDO1FBQ04sNkRBQTZEOztZQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNFLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ04sS0FBSyxDQUFDLFFBQVE7O1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BELE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsTUFBTSxHQUFHO0lBQ2hDLENBQUM7Q0FDSjtBQW5ERCx3REFtREMifQ==
;