@launchmenu/applet-notes
Version:
An applet to make short notes
253 lines • 16.4 kB
JavaScript
"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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