UNPKG

@launchmenu/applet-notes

Version:
86 lines 6.41 kB
"use strict"; 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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