@launchmenu/applet-notes
Version:
An applet to make short notes
86 lines • 10.8 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@launchmenu/core");
const notePatternMatcher_1 = require("./notePatternMatcher");
const model_react_1 = require("model-react");
const NotesSource_1 = require("./dataModel/NotesSource");
const createNoteMenuItem_1 = require("./interface/createNoteMenuItem");
const createNoteCategoryCategory_1 = require("./interface/categories/createNoteCategoryCategory");
const createAddNoteMenuItem_1 = require("./interface/controls/createAddNoteMenuItem");
const createImportNoteMenuItem_1 = require("./interface/controls/createImportNoteMenuItem");
const createEditCategoriesMenuItem_1 = require("./interface/controls/createEditCategoriesMenuItem");
const settings_1 = require("./settings");
const createListCacher_1 = require("./util/createListCacher");
const createAddNoteCategoryMenuItem_1 = require("./interface/categories/controls/createAddNoteCategoryMenuItem");
const createSelectInMenuCallback_1 = require("./util/createSelectInMenuCallback");
const createEditMetadataMenuItem_1 = require("./interface/controls/createEditMetadataMenuItem");
const notesIcon_1 = require("./notesIcon");
exports.default = core_1.declare({
info: settings_1.info,
settings: settings_1.settings,
init({ settings: initSettings }) {
// Setup the notes source together with its item interfaces
const notesSource = new model_react_1.DataCacher(h => {
const { notesDir, defaults } = initSettings;
const path = notesDir.get(h);
return new NotesSource_1.NotesSource(`${path}/notes.json`, {
color: h => defaults.color.get(h),
fontSize: h => defaults.fontSize.get(h),
showRichContent: h => defaults.showRichContent.get(h),
syntaxMode: h => defaults.syntaxMode.get(h),
searchContent: h => defaults.searchContent.get(h),
});
});
// Create all categories, note items and items to search for categories
const categories = createListCacher_1.createListCacher(h => notesSource.get(h).getAllCategories(h), category => category.ID, category => createNoteCategoryCategory_1.createNoteCategoryCategory(category));
const notesItems = createListCacher_1.createListCacher(h => notesSource.get(h).getAllNotes(h), note => note.ID, note => createNoteMenuItem_1.createNoteMenuItem(note, notesSource.get(), h => categories.get(h).items, initSettings));
// Create some items that can be used to show categories even if they are empty
const categoryEmptyItems = createListCacher_1.createListCacher(h => categories.get(h).items, category => category.name, category => core_1.createCategoryDummyItem({
category,
}));
return {
async search(query, hook) {
// Only search the notes, not all the controls and categories
return {
patternMatch: notePatternMatcher_1.notePatternMatcher(query, hook),
children: core_1.searchAction.get(notesItems.get(hook).items),
};
},
open({ context, onClose }) {
// Create some callbacks for when new items are added to this menu (in order to select them)
const onCreateNote = createSelectInMenuCallback_1.createSelectInMenuCallback(() => menu, (note, h) => notesItems.get(h).map.get(note.ID));
const onCreateCategory = createSelectInMenuCallback_1.createSelectInMenuCallback(() => menu, (noteCategory, h) => { var _a; return (_a = categories.get(h).map.get(noteCategory.ID)) === null || _a === void 0 ? void 0 : _a.item; });
// Create the menu with its controls
const controls = new model_react_1.DataCacher(h => [
createAddNoteMenuItem_1.createAddNoteMenuItem(notesSource.get(h), onCreateNote),
...(context.settings.get(settings_1.settings).inlineCategory.get(h)
? [createEditCategoriesMenuItem_1.createEditCategoriesMenuItem(notesSource.get(h))]
: [
createAddNoteCategoryMenuItem_1.createAddNoteCategoryMenuItem(notesSource.get(h), onCreateCategory),
]),
...(context.settings.get(core_1.baseSettings).advancedUsage.get(h)
? [
createImportNoteMenuItem_1.createImportNoteMenuItem(notesSource.get(h), onCreateNote),
createEditMetadataMenuItem_1.createEditMetadataMenuItem(notesSource.get(h)),
]
: []),
]);
const allItems = new model_react_1.DataCacher(h => [
...notesItems.get(h).items,
...(context.settings.get(settings_1.settings).inlineCategory.get(h)
? []
: categoryEmptyItems.get(h).items),
...controls.get(h),
]);
const menu = new core_1.ProxiedMenu(context, h => allItems.get(h));
context.open(new core_1.UILayer(() => ({
icon: notesIcon_1.notesIcon,
menu: menu,
onClose,
}), { path: "Notes" }));
},
onDispose: () => notesSource.get().destroy(),
};
},
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBUTBCO0FBQzFCLDZEQUF3RDtBQUN4RCw2Q0FBdUM7QUFDdkMseURBQW9EO0FBQ3BELHVFQUFrRTtBQUNsRSxrR0FBNkY7QUFDN0Ysc0ZBQWlGO0FBQ2pGLDRGQUF1RjtBQUV2RixvR0FBK0Y7QUFDL0YseUNBQTBDO0FBQzFDLDhEQUF5RDtBQUN6RCxpSEFBNEc7QUFDNUcsa0ZBQTZFO0FBRTdFLGdHQUEyRjtBQUMzRiwyQ0FBc0M7QUFFdEMsa0JBQWUsY0FBTyxDQUFDO0lBQ25CLElBQUksRUFBSixlQUFJO0lBQ0osUUFBUSxFQUFSLG1CQUFRO0lBQ1IsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQztRQUN6QiwyREFBMkQ7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLEdBQUcsWUFBWSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLHlCQUFXLENBQUMsR0FBRyxJQUFJLGFBQWEsRUFBRTtnQkFDekMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDckQsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVB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
;