UNPKG

@launchmenu/applet-notes

Version:
253 lines 16.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Note = void 0; const core_1 = require("@launchmenu/core"); const model_react_1 = require("model-react"); const ifNotInherited_1 = require("./tools/ifNotInherited"); class Note { /** * Creates a new note instance * @param ID The ID of the note * @param dataSource The data source of the note * @param update A function to update the note's data * @param categoriesSource All categories in the system, including ones not assigned to this note */ constructor(ID, dataSource, update, notesSource) { // Manage the note file this.file = new model_react_1.DataCacher((h, prev) => { const filePath = this.dataSource(h).location; if (prev) { // If the path hasn't changed, use the previous items if (prev.file.getPath() == filePath) return prev; // IF it has changed, destroy the previous items prev.fileSaver.destroy(); prev.fileReloader.destroy(); } try { const file = new core_1.File(filePath); return { file, fileSaver: new core_1.FileAutoSaver(file), fileReloader: new core_1.FileAutoReloader(file), }; } catch (e) { console.error(e); return undefined; } }); /** The cached category */ this.category = new model_react_1.DataCacher(h => { const ID = this.dataSource(h).categoryID; return this.notesSource.getAllCategories(h).find(({ ID: vID }) => vID == ID); }); this.ID = ID; this.dataSource = dataSource; this.update = update; this.notesSource = notesSource; } /** * Properly disposes this note */ destroy() { const file = this.file.get(); if (!file) return; const { fileSaver, fileReloader } = file; fileSaver.destroy(); fileReloader.destroy(); } // Getters /** * Retrieves the name of the note * @param hook The hook to subscribe to changes * @returns The note's name */ getName(hook) { return this.dataSource(hook).name; } /** * Retrieves the notes source that this note belongs to * @returns The notes source */ getSource() { return this.notesSource; } /** * Retrieves the note's category * @param hook The hook to subscribe to changes * @returns The note's category */ getCategory(hook) { return this.category.get(hook); } /** * Retrieves the path of the note's file * @param hook The hook to subscribe to changes * @returns The note's file path */ getFilePath(hook) { return this.dataSource(hook).location; } /** * Retrieves the text of the note * @param hook The hook to subscribe to changes * @returns The note's contents */ getText(hook) { var _a, _b; return (_b = (_a = this.file.get(hook)) === null || _a === void 0 ? void 0 : _a.file.get(hook)) !== null && _b !== void 0 ? _b : ""; } /** * Retrieves the last update time * @param hook The hook to subscribe to changes * @returns The timestamp of the last update */ getModifiedAt(hook) { return this.dataSource(hook).modifiedAt; } /** * Retrieves all the notes metadata at once * @param hook The hook to subscribe to changes * @returns The notes metadata */ getData(hook) { return this.dataSource(hook); } // All appearance getters /** * Retrieves the color of this note * @param hook The hook to subscribe to changes * @returns The color of the note */ getColor(hook) { var _a, _b, _c; return ((_c = (_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).color)) !== null && _a !== void 0 ? _a : (_b = this.getCategory(hook)) === null || _b === void 0 ? void 0 : _b.getColor(hook)) !== null && _c !== void 0 ? _c : this.notesSource.defaults.color(hook)); } /** * Retrieves the font size for the note * @param hook The hook to subscribe to changes * @returns The font size of the note */ getFontSize(hook) { var _a, _b, _c; return ((_c = (_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).fontSize)) !== null && _a !== void 0 ? _a : (_b = this.getCategory(hook)) === null || _b === void 0 ? void 0 : _b.getFontSize(hook)) !== null && _c !== void 0 ? _c : this.notesSource.defaults.fontSize(hook)); } /** * Retrieves the syntax mode for the note * @param hook The hook to subscribe to changes * @returns The syntax mode of the note */ getSyntaxMode(hook) { var _a, _b, _c; return ((_c = (_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).syntaxMode)) !== null && _a !== void 0 ? _a : (_b = this.getCategory(hook)) === null || _b === void 0 ? void 0 : _b.getSyntaxMode(hook)) !== null && _c !== void 0 ? _c : this.notesSource.defaults.syntaxMode(hook)); } /** * Retrieves the value of whether to show rich content * @param hook The hook to subscribe to changes * @returns Whether to show rich content */ getShowRichContent(hook) { var _a, _b, _c; return ((_c = (_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).showRichContent)) !== null && _a !== void 0 ? _a : (_b = this.getCategory(hook)) === null || _b === void 0 ? void 0 : _b.getShowRichContent(hook)) !== null && _c !== void 0 ? _c : this.notesSource.defaults.showRichContent(hook)); } /** * Retrieves the default value of whether to search the content for notes in this category * @param hook The hook to subscribe to changes * @returns Whether to search content */ getSearchContent(hook) { var _a, _b, _c; return ((_c = (_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).searchContent)) !== null && _a !== void 0 ? _a : (_b = this.getCategory(hook)) === null || _b === void 0 ? void 0 : _b.getSearchContent(hook)) !== null && _c !== void 0 ? _c : this.notesSource.defaults.searchContent(hook)); } // Setters /** * Updates the note's name * @param name The new name of the node */ setName(name) { this.update(this.ID, { ...this.dataSource(), name }); } /** * Updates the note's category * @param category The new category of the note */ setCategory(category) { this.setCategoryID(category === null || category === void 0 ? void 0 : category.ID); } /** * Updates the note category's ID * @param categoryID The new category ID of the note */ setCategoryID(categoryID) { this.update(this.ID, { ...this.dataSource(), categoryID: categoryID !== null && categoryID !== void 0 ? categoryID : undefined }); } /** * Sets the file path * @param path The path to the note's file */ setFilePath(path) { this.update(this.ID, { ...this.dataSource(), location: path }); } /** * Sets the text of the note's file * @param text The text to be set */ setText(text) { var _a; (_a = this.file.get()) === null || _a === void 0 ? void 0 : _a.file.set(text); this.setModifiedAt(Date.now()); } /** * Sets the last update time * @param time The time to set */ setModifiedAt(time) { this.update(this.ID, { ...this.dataSource(), modifiedAt: time }); } /** * Deletes the note */ delete() { this.update(this.ID); } // All appearance setters /** * Sets the color of the note * @param color The new color of the note */ setColor(color) { this.update(this.ID, { ...this.dataSource(), color }); } /** * Sets the font size of the note * @param fontSize The new font size of the category */ setFontSize(fontSize) { this.update(this.ID, { ...this.dataSource(), fontSize }); } /** * Sets the syntax mode of the note * @param mode The new syntax mode of the note */ setSyntaxMode(mode) { this.update(this.ID, { ...this.dataSource(), syntaxMode: mode }); } /** * Sets whether to show rich content of the note * @param showRichContent Whether to show rich content */ setShowRichContent(showRichContent) { this.update(this.ID, { ...this.dataSource(), showRichContent }); } /** * Sets the default for whether to search content for notes in this category * @param searchContent Whether to search content for this category */ setSearchContent(searchContent) { this.update(this.ID, { ...this.dataSource(), searchContent }); } } exports.Note = Note; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhTW9kZWwvTm90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUU7QUFDdkUsNkNBQWtFO0FBS2xFLDJEQUFzRDtBQUd0RCxNQUFhLElBQUk7SUF1Q2I7Ozs7OztPQU1HO0lBQ0gsWUFDSSxFQUFVLEVBQ1YsVUFBeUMsRUFDekMsTUFBa0QsRUFDbEQsV0FBd0I7UUExQzVCLHVCQUF1QjtRQUNiLFNBQUksR0FBRyxJQUFJLHdCQUFVLENBS1YsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFFN0MsSUFBSSxJQUFJLEVBQUU7Z0JBQ04scURBQXFEO2dCQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksUUFBUTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFFakQsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQy9CO1lBRUQsSUFBSTtnQkFDQSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsT0FBTztvQkFDSCxJQUFJO29CQUNKLFNBQVMsRUFBRSxJQUFJLG9CQUFhLENBQUMsSUFBSSxDQUFDO29CQUNsQyxZQUFZLEVBQUUsSUFBSSx1QkFBZ0IsQ0FBQyxJQUFJLENBQUM7aUJBQzNDLENBQUM7YUFDTDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFrREgsMEJBQTBCO1FBQ2hC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