import type { RefinedNode } from './node-refined-types'; /** * Represents Editor content node in editing context. * Adds functionality on top of RefinedNode (which, on turn, is based on proto-derived Node) * * @template T specific Refined Node */ export interface Editable { getId(): T['id']; getSelection(): boolean; setSelection(selection: boolean): Editable; getRefinedNode(): T; getNodes(): Editables; } /** * Basic aggregate over Editable * */ export interface Editables { /** * Filters nodes according to predicate * * @param {(node: Editable) => boolean} predicate * @returns {Editables} * @memberof Editables */ filter(predicate: (node: Editable) => boolean): Editables; /** * Appends a new node to nodes * * @param {T} node * @returns {Editables} * @memberof Editables */ insert(node: T): Editables; /** * Modifies the Editable collection according to modification * * @param {(node: Editable) => Editable} modification * @returns {Editables} * @memberof Editables */ modify(modification: (node: Editable) => Editable): Editables; /** * Deletes nodes * * @returns {Editables} * @memberof Editables */ delete(): Editables; /** * Gets node array * * @returns {Editable[]} * @memberof Editables */ asArray(): Editable[]; /** * Gets RefinedNode subtree * * @returns {T[]} * @memberof Editables */ getRefinedNodes(): T[]; } //# sourceMappingURL=editable-content.d.ts.map