@launchmenu/applet-notes
Version:
An applet to make short notes
86 lines • 6.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SetNoteCategoryCommand = exports.setCategoryAction = void 0;
const core_1 = require("@launchmenu/core");
/** An action to set the category of a note */
exports.setCategoryAction = core_1.createContextAction({
name: "Set category",
contextItem: {
priority: core_1.Priority.MEDIUM,
},
core: (data) => {
const getExecuteBindings = () => {
const groups = core_1.groupBy(data, "options", arrayEquals);
return groups.map(({ key: options, values: notes }) => core_1.singlePromptExecuteHandler.createBinding({
init: [
...notes
.map(({ note }) => note.getCategory())
.filter((c) => !!c),
undefined,
],
valueRetriever: ({ field }) => core_1.promptSelectExecuteHandler.createBinding({
field,
options: [...options, undefined],
createOptionView: category => core_1.createStandardMenuItem({
name: h => (category ? category.getName(h) : "None"),
icon: category ? undefined : "delete",
}),
}),
setValues: value => notes.map(({ note }) => new SetNoteCategoryCommand(note, value)),
commandName: "Set note category",
}));
};
return {
// Return the bindings for executing the action in the menu
actionBindings: getExecuteBindings,
// As well as some result for programmatic access for extension
result: {
execute: ({ context }) => core_1.executeAction.execute(context, [
{ actionBindings: getExecuteBindings() },
]),
getSelectBindings: getExecuteBindings,
},
};
},
});
/**
* Checks whether arrays a and b are equal (contain exactly the same items)
* @param a The first array
* @param b The second array
* @returns Whether the arrays are equal
*/
function arrayEquals(a, b) {
return (a.length == b.length &&
a.every(item => b.includes(item)) &&
b.every(item => a.includes(item)));
}
// Could realistically
/**
* A command for changing the note's category
*/
class SetNoteCategoryCommand extends core_1.Command {
/**
* Creates a new set category command
* @param note The note to update
* @param category The new category
*/
constructor(note, category) {
super();
this.metadata = {
name: "Set note category",
};
this.note = note;
this.category = category;
}
/** @override */
async onExecute() {
this.oldCategory = this.note.getCategory();
this.note.setCategory(this.category);
}
/** @override */
async onRevert() {
this.note.setCategory(this.oldCategory);
}
}
exports.SetNoteCategoryCommand = SetNoteCategoryCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0Q2F0ZWdvcnlBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL2FjdGlvbkhhbmRsZXJzL3NldENhdGVnb3J5QWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQVUwQjtBQUsxQiw4Q0FBOEM7QUFDakMsUUFBQSxpQkFBaUIsR0FBRywwQkFBbUIsQ0FBQztJQUNqRCxJQUFJLEVBQUUsY0FBYztJQUNwQixXQUFXLEVBQUU7UUFDVCxRQUFRLEVBQUUsZUFBUSxDQUFDLE1BQU07S0FDNUI7SUFDRCxJQUFJLEVBQUUsQ0FBQyxJQUF3QixFQUFFLEVBQUU7UUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxNQUFNLEdBQUcsY0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDckQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFFLENBQ2hELGlDQUEwQixDQUFDLGFBQWEsQ0FBQztnQkFDckMsSUFBSSxFQUFFO29CQUNGLEdBQUcsS0FBSzt5QkFDSCxHQUFHLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7eUJBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLFNBQVM7aUJBQ1o7Z0JBQ0QsY0FBYyxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFLENBQ3hCLGlDQUEwQixDQUFDLGFBQWEsQ0FBQztvQkFDckMsS0FBSztvQkFDTCxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7b0JBQ2hDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxFQUFF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