@launchmenu/applet-notes
Version:
An applet to make short notes
187 lines • 11.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NoteCategory = void 0;
const model_react_1 = require("model-react");
const createCustomSearchPatternMatcher_1 = require("./tools/createCustomSearchPatternMatcher");
const ifNotInherited_1 = require("./tools/ifNotInherited");
class NoteCategory {
/**
* Creates a new note category instance
* @param ID The ID of the note
* @param dataSource The data source of the note category
* @param update A function to update the category's data
* @param notesSource All registered notes, including ones not part of this category
*/
constructor(ID, dataSource, update, notesSource) {
/** The cached notes of this category */
this.notes = new model_react_1.DataCacher(h => this.notesSource.getAllNotes(h).filter(note => { var _a; return ((_a = note.getCategory(h)) === null || _a === void 0 ? void 0 : _a.ID) == this.ID; }));
/** The search pattern matcher */
this.searchPatternMatcher = createCustomSearchPatternMatcher_1.createCustomSearchPatternMatcher(hook => this.getSearchPattern(hook), h => this.getName(h));
this.ID = ID;
this.dataSource = dataSource;
this.update = update;
this.notesSource = notesSource;
}
// Getters
/**
* Retrieves the name of the category
* @param hook The hook to subscribe to changes
* @returns The category's name
*/
getName(hook) {
return this.dataSource(hook).name;
}
/**
* Retrieves the notes source that this category belongs to
* @returns The notes source
*/
getSource() {
return this.notesSource;
}
/**
* Retrieves all notes in this category
* @param hook The hook to subscribe to changes
* @returns The notes in the category
*/
getNotes(hook) {
return this.notes.get(hook);
}
/**
* Retrieves the search pattern as a text string
* @param hook The hook to subscribe to changes
* @returns The search pattern if any
*/
getSearchPattern(hook) {
return this.dataSource(hook).searchPattern || undefined;
}
/**
* Retrieves the search pattern matcher for this category
* @returns The search pattern matcher if any
*
* @remarks The matcher is never replaced, it only changes internally, so there is no need to subscribe to changes
*/
getSearchPatternMatcher() {
return this.searchPatternMatcher;
}
/**
* Retrieves the data of this category
* @param hook The hook to subscribe to changes
* @returns All the data of the category
*/
getData(hook) {
return this.dataSource(hook);
}
// All appearance getters
/**
* Retrieves the default color for notes in this category
* @param hook The hook to subscribe to changes
* @returns The color of the note
*/
getColor(hook) {
var _a;
return ((_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).color)) !== null && _a !== void 0 ? _a : this.notesSource.defaults.color(hook));
}
/**
* Retrieves the default font size for notes in this category
* @param hook The hook to subscribe to changes
* @returns The font size of the note
*/
getFontSize(hook) {
var _a;
return ((_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).fontSize)) !== null && _a !== void 0 ? _a : this.notesSource.defaults.fontSize(hook));
}
/**
* Retrieves the default syntax mode for notes in this category
* @param hook The hook to subscribe to changes
* @returns The syntax mode of the note
*/
getSyntaxMode(hook) {
var _a;
return ((_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).syntaxMode)) !== null && _a !== void 0 ? _a : this.notesSource.defaults.syntaxMode(hook));
}
/**
* Retrieves the default value of whether to show rich content for notes in this category
* @param hook The hook to subscribe to changes
* @returns Whether to show rich content
*/
getShowRichContent(hook) {
var _a;
return ((_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).showRichContent)) !== null && _a !== void 0 ? _a : 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;
return ((_a = ifNotInherited_1.ifNotInherited(this.dataSource(hook).searchContent)) !== null && _a !== void 0 ? _a : this.notesSource.defaults.searchContent(hook));
}
// Setters
/**
* Updates the category's name
* @param name The new name of the category
*/
setName(name) {
this.update(this.ID, { ...this.dataSource(), name });
}
/**
* Adds a note to this category
* @param note The note to be added
*/
addNote(note) {
note.setCategory(this);
}
/**
* Deletes the category
*/
delete() {
this.update(this.ID);
}
/**
* Sets the search pattern as a text string
* @param pattern The search pattern for this category
* @returns The search pattern if any
*/
setSearchPattern(pattern) {
this.update(this.ID, { ...this.dataSource(), searchPattern: pattern });
}
// All appearance setters
/**
* Sets the default color for notes in this category
* @param color The new color of the category
*/
setColor(color) {
this.update(this.ID, { ...this.dataSource(), color });
}
/**
* Sets the default font size for notes in this category
* @param fontSize The new font size of the category
*/
setFontSize(fontSize) {
this.update(this.ID, { ...this.dataSource(), fontSize });
}
/**
* Sets the default syntax mode for notes in this category
* @param mode The new syntax mode of the category
*/
setSyntaxMode(mode) {
this.update(this.ID, { ...this.dataSource(), syntaxMode: mode });
}
/**
* Sets the default for whether to show rich content for notes in this category
* @param showRichContent Whether to show rich content for this category
*/
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.NoteCategory = NoteCategory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90ZUNhdGVnb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFNb2RlbC9Ob3RlQ2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWtFO0FBQ2xFLCtGQUEwRjtBQUMxRiwyREFBc0Q7QUFPdEQsTUFBYSxZQUFZO0lBUXJCOzs7Ozs7T0FNRztJQUNILFlBQ0ksRUFBVSxFQUNWLFVBQWlELEVBQ2pELE1BQTBELEVBQzFELFdBQXdCO1FBMEI1Qix3Q0FBd0M7UUFDOUIsVUFBSyxHQUFHLElBQUksd0JBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBQyxPQUFBLE9BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQUUsRUFBRSxLQUFJLElBQUksQ0FBQyxFQUFFLENBQUEsRUFBQSxDQUFDLENBQ3JGLENBQUM7UUFvQkYsaUNBQWlDO1FBQ3ZCLHlCQUFvQixHQUFHLG1FQUFnQyxDQUM3RCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN2QixDQUFDO1FBbkRFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVU7SUFDVjs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLElBQWdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJ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