/** * Define the elements to which a set of CSS queries apply. * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors} * * @example * query = '.classSelector' * query = 'nodeSelector' * query = '#idSelector' * * @typedef {string} CSS_Selector */ /** * Dom filter function. * * @callback domFilter * @param {string} nodeName The nodeName of the element * @param {Map} attributes The map of attributes. * @return {boolean} Whether to include the Dom node in the YXmlElement. */ /** * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a * position within them. * * Can be created with {@link YXmlFragment#createTreeWalker} * * @public * @implements {Iterable} */ export class YXmlTreeWalker implements Iterable { /** * @param {YXmlFragment | YXmlElement} root * @param {function(AbstractType):boolean} [f] */ constructor(root: YXmlFragment | YXmlElement, f?: ((arg0: AbstractType) => boolean) | undefined); _filter: (arg0: AbstractType) => boolean; _root: YXmlElement<{ [key: string]: string; }> | YXmlFragment; /** * @type {Item} */ _currentNode: Item; _firstCall: boolean; /** * Get the next node. * * @return {IteratorResult} The next node. * * @public */ public next(): IteratorResult; [Symbol.iterator](): YXmlTreeWalker; } /** * Represents a list of {@link YXmlElement}.and {@link YXmlText} types. * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a * nodeName and it does not have attributes. Though it can be bound to a DOM * element - in this case the attributes and the nodeName are not shared. * * @public * @extends AbstractType */ export class YXmlFragment extends AbstractType { constructor(); /** * @type {Array|null} */ _prelimContent: Array | null; /** * @type {YXmlElement|YXmlText|null} */ get firstChild(): YXmlElement<{ [key: string]: string; }> | YXmlText | null; /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item} item */ _integrate(y: Doc, item: Item): void; _copy(): YXmlFragment; /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YXmlFragment} */ clone(): YXmlFragment; get length(): number; /** * Create a subtree of childNodes. * * @example * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div') * for (let node in walker) { * // `node` is a div node * nop(node) * } * * @param {function(AbstractType):boolean} filter Function that is called on each child element and * returns a Boolean indicating whether the child * is to be included in the subtree. * @return {YXmlTreeWalker} A subtree and a position within it. * * @public */ public createTreeWalker(filter: (arg0: AbstractType) => boolean): YXmlTreeWalker; /** * Returns the first YXmlElement that matches the query. * Similar to DOM's {@link querySelector}. * * Query support: * - tagname * TODO: * - id * - attribute * * @param {CSS_Selector} query The query on the children. * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null. * * @public */ public querySelector(query: CSS_Selector): YXmlElement | YXmlText | YXmlHook | null; /** * Returns all YXmlElements that match the query. * Similar to Dom's {@link querySelectorAll}. * * @todo Does not yet support all queries. Currently only query by tagName. * * @param {CSS_Selector} query The query on the children * @return {Array} The elements that match this query. * * @public */ public querySelectorAll(query: CSS_Selector): Array; /** * @return {string} */ toJSON(): string; /** * Creates a Dom Element that mirrors this YXmlElement. * * @param {Document} [_document=document] The document object (you must define * this when calling this method in * nodejs) * @param {Object} [hooks={}] Optional property to customize how hooks * are presented in the DOM * @param {any} [binding] You should not set this property. This is * used if DomBinding wants to create a * association to the created DOM type. * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element} * * @public */ public toDOM(_document?: Document | undefined, hooks?: { [x: string]: any; } | undefined, binding?: any): Node; /** * Inserts new content at an index. * * @example * // Insert character 'a' at position 0 * xml.insert(0, [new Y.XmlText('text')]) * * @param {number} index The index to insert content at * @param {Array} content The array of content */ insert(index: number, content: Array): void; /** * Inserts new content at an index. * * @example * // Insert character 'a' at position 0 * xml.insert(0, [new Y.XmlText('text')]) * * @param {null|Item|YXmlElement|YXmlText} ref The index to insert content at * @param {Array} content The array of content */ insertAfter(ref: null | Item | YXmlElement | YXmlText, content: Array): void; /** * Deletes elements starting from an index. * * @param {number} index Index at which to start deleting elements * @param {number} [length=1] The number of elements to remove. Defaults to 1. */ delete(index: number, length?: number | undefined): void; /** * Transforms this YArray to a JavaScript Array. * * @return {Array} */ toArray(): Array; /** * Appends content to this YArray. * * @param {Array} content Array of content to append. */ push(content: Array): void; /** * Prepends content to this YArray. * * @param {Array} content Array of content to prepend. */ unshift(content: Array): void; /** * Returns the i-th element from a YArray. * * @param {number} index The index of the element to return from the YArray * @return {YXmlElement|YXmlText} */ get(index: number): YXmlElement | YXmlText; /** * Returns a portion of this YXmlFragment into a JavaScript Array selected * from start to end (end not included). * * @param {number} [start] * @param {number} [end] * @return {Array} */ slice(start?: number | undefined, end?: number | undefined): Array; /** * Executes a provided function on once on every child element. * * @param {function(YXmlElement|YXmlText,number, typeof self):void} f A function to execute on every element of this YArray. */ forEach(f: (arg0: YXmlElement | YXmlText, arg1: number, arg2: typeof self) => void): void; } export function readYXmlFragment(_decoder: UpdateDecoderV1 | UpdateDecoderV2): YXmlFragment; /** * Define the elements to which a set of CSS queries apply. * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors} */ export type CSS_Selector = string; /** * Dom filter function. */ export type domFilter = (nodeName: string, attributes: Map) => boolean; import { YXmlElement } from "./YXmlElement.js"; import { YXmlText } from "./YXmlText.js"; import { YXmlHook } from "./YXmlHook.js"; import { AbstractType } from "./AbstractType.js"; import { Item } from "../structs/Item.js"; import { YXmlEvent } from "./YXmlEvent.js"; import { Doc } from "../utils/Doc.js"; import { UpdateDecoderV1 } from "../utils/UpdateDecoder.js"; import { UpdateDecoderV2 } from "../utils/UpdateDecoder.js"; //# sourceMappingURL=YXmlFragment.d.ts.map