import { IToolbarStatus, OffsetPosition } from './interface'; import { IsFormatted } from '../editor-manager/plugin/isformatted'; /** * Mapping of legacy image layout class names to normalized layout class names. * * Keys are legacy layout class names that may appear on image elements or * caption wrappers (for example, when content is pasted). Values are the * normalized class names used throughout the editor styles. * * @private */ export declare const layoutMap: { [key: string]: string; }; /** * @returns {boolean} - returns boolean value * @hidden */ export declare function isIDevice(): boolean; /** * @param {Element} editableElement - specifies the editable element. * @param {string} selector - specifies the string values. * @returns {void} * @hidden */ export declare function setEditFrameFocus(editableElement: Element, selector: string): void; /** * @param {string} value - specifies the string value * @param {boolean} [isBlazor] - specifies if the editor is in Blazor mode * @returns {void} * @hidden */ export declare function updateTextNode(value: string, isBlazor?: boolean): string; /** * Swap and normalize caption wrapper class names and layout classes. * * @param {HTMLElement} wrap - The caption wrapper element that may contain legacy classes. * @param {HTMLElement} img - The image element associated with the caption. * @param {Object} layoutMap - Mapping of legacy layout class names to new class names. * @returns {void} * @private * @hidden */ export declare function swapCaptionClassName(wrap: HTMLElement, img: HTMLElement, layoutMap: { [key: string]: string; }): void; /** * Swap and normalize image-only layout class names. * * @param {HTMLElement} img - The image element to normalize. * @param {Object} layoutMap - Mapping of legacy layout class names to new class names. * @returns {void} * @private * @hidden */ export declare function swapImageClassName(img: HTMLElement, layoutMap: { [key: string]: string; }): void; /** * @param {Node} startChildNodes - specifies the node * @returns {void} * @hidden */ export declare function getLastTextNode(startChildNodes: Node): Node; /** * @returns {void} * @hidden */ export declare function getDefaultHtmlTbStatus(): IToolbarStatus; /** * @returns {void} * @hidden */ export declare function getDefaultMDTbStatus(): IToolbarStatus; /** * Checks if the node has any formatting * * @param {Node} node - specifies the node. * @param {IsFormatted} isFormatted - specifies the IsFormatted instance. * @returns {boolean} - returns whether the node has any formatting */ export declare function hasAnyFormatting(node: Node, isFormatted?: IsFormatted): boolean; /** * @param {Range} range - specifies the range * @param {Node} parentNode - specifies the parent node * @returns {void} * @hidden */ export declare function nestedListCleanUp(range: Range, parentNode: Node): void; /** * Method to scroll the content to the cursor position * * @param {Document} document - specifies the document. * @param {HTMLElement | HTMLBodyElement} inputElement - specifies the input element. * @returns {void} */ export declare function scrollToCursor(document: Document, inputElement: HTMLElement | HTMLBodyElement): void; /** * Inserts items at a specific index in an array. * * @template T * @param {Array} oldArray - Specifies the old array. * @param {Array} newArray - Specifies the elements to insert. * @param {number} indexToInsert - Specifies the index to insert. * @returns {Array} - Returns the array after inserting the elements. */ export declare function insertItemsAtIndex(oldArray: Array, newArray: Array, indexToInsert: number): Array; /** * Wrapper function to remove a class from the element and remove the attribute if the class is empty. * * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes * @param {string|string[]} classes - String or array of string that need to add an individual element as a class * * @returns {Element[]|NodeList} - Returns the array of elements after removing the class. * @private */ export declare function removeClassWithAttr(elements: Element[] | NodeList, classes: string | string[]): Element[] | NodeList; /** * Creates a two-dimensional array mapping the logical structure of a table. * * @private * @param {HTMLTableElement} table - The HTMLTableElement to process. * @returns {Array.>} A 2D matrix of table cells accounting for colspan and rowspan. * @hidden */ export declare function getCorrespondingColumns(table: HTMLTableElement): HTMLElement[][]; /** * Maps a cell to all its positions in the logical table matrix. * * @param {Array.>} matrix - The 2D matrix being constructed. * @param {HTMLElement} cell - The current cell being placed. * @param {number} startRow - The row index where the cell starts. * @param {number} startCol - The column index where the cell starts. * @param {number} colspan - The number of columns the cell spans. * @param {number} rowspan - The number of rows the cell spans. * @returns {number} - The adjusted starting column index for the next cell in the row. * @hidden */ export declare function mapCellToMatrixPositions(matrix: HTMLElement[][], cell: HTMLElement, startRow: number, startCol: number, colspan: number, rowspan: number): number; /** * Finds the position of a specific cell element in the table matrix. * * @param {HTMLElement} cell - The HTML element to find in the table * @param {Array.>} allCells - The 2D array representing the table structure * @returns {number[]} An array containing the row and column indices [rowIndex, columnIndex], or empty array if not found * @hidden */ export declare function getCorrespondingIndex(cell: HTMLElement, allCells: HTMLElement[][]): number[]; /** * Inserts a with calculated sizes to the table. * This function analyzes the table structure and adds appropriate column definitions * with width values based on the current table layout. * * @param {HTMLTableElement} curTable - The table element to add colgroup to table. * @param {boolean} hasUpdate - Flag indicating whether to update existing colgroup (default: false) * @returns {void} * @hidden */ export declare function insertColGroupWithSizes(curTable: HTMLTableElement, hasUpdate?: boolean): void; /** * Gets the colgroup element from a table * * @param {HTMLTableElement} table - The table element to search in * @returns {HTMLTableColElement | null} The colgroup element or null if not found * @hidden */ export declare function getColGroup(table: HTMLTableElement): HTMLTableColElement | null; /** * Gets the maximum cell count in a table, accounting for colspan attributes. * This function calculates the effective number of columns by examining all rows * and considering the colspan attribute of each cell. * * @param {HTMLTableElement} table - The table element to analyze * @returns {number} - The maximum number of cells/columns in the table * @hidden */ export declare function getMaxCellCount(table: HTMLTableElement): number; /** * Recursively finds the correct column index for a cell, accounting for rowspan cells. * This function adjusts the column index by checking if there are any rowspan cells * from previous rows that occupy the current position. * * @param {Map} rowSpanCells - Map of rowspan cells with their positions * @param {number} rowIndex - Current row index * @param {number} colIndex - Initial column index to check * @returns {number} - The adjusted column index accounting for rowspan cells * @hidden */ export declare function getCellIndex(rowSpanCells: Map, rowIndex: number, colIndex: number): number; /** * Converts a pixel measurement to a percentage relative to a container's width. * Used to maintain proper proportions when splitting cells. * * @param {number} value - The pixel value to convert * @param {number} offsetValue - The container width in pixels * @returns {number} The equivalent percentage value * @hidden */ export declare function convertPixelToPercentage(value: number, offsetValue: number): number; /** * @param {string} value - specifies the string value * @param {string} editorMode - specifies the string value * @returns {string} - returns the string value * @hidden */ export declare function resetContentEditableElements(value: string, editorMode: string): string; /** * @param {string} value - specifies the string value * @param {string} editorMode - specifies the string value * @returns {string} - returns the string value * @hidden */ export declare function cleanupInternalElements(value: string, editorMode: string): string; /** * @param {HTMLElement} element - specifies the element * @returns {void} * @hidden */ export declare function removeSelectionClassStates(element: HTMLElement): void; /** * Processes the given inner HTML value and returns a structured HTML string. * * @param {string} innerValue - The inner HTML content to be processed. * @param {string} enterKey - The key used for inserting line breaks. * @param {boolean} enableHtmlEncode - A flag indicating whether HTML encoding should be enabled. * @returns {string} - The structured HTML string. */ export declare function getStructuredHtml(innerValue: string, enterKey: string, enableHtmlEncode: boolean): string; /** * * checks if tag is in set * * @param {Set} set - The set to check for the tag. * @param {string} value - The tag to check for. * * @returns {boolean} - True if the tag is in the set, false otherwise. */ export declare function isInSet(set: Set, value: string): boolean; /** * * Wraps text and inline nodes within a given node to ensure proper HTML structure. * * @param {Node} node - The DOM node whose child nodes are to be wrapped. * @param {string} parentElement - The parent element tag to use for wrapping. * @returns {void} - This function does not return anything. */ export declare function wrapTextAndInlineNodes(node: Node, parentElement: string): void; /** * * Returns the next meaningful sibling of the given node. * * @param {Node} node - The DOM node whose child nodes are to be wrapped. * @returns {Node | null} - Returns a node or null. */ export declare function getNextMeaningfulSibling(node: Node | null): Node | null; /** * * Returns the previous meaningful sibling of the given node. * * @param {Node} node - The DOM node whose child nodes are to be wrapped. * @returns {Node | null} - Returns a node or null. */ export declare function getPreviousMeaningfulSibling(node: Node | null): Node | null; /** * * Checks if the given node is need to be wrapped. * * @param {Node} node - The DOM node whose child nodes are to be wrapped. * @param {Set} blockTags - The set of block tags. * @returns {boolean} - Returns a boolean value. */ export declare function needToWrapLiChild(node: Node): boolean; /** * Checks if the given HTML element is a block-level element. * * @param {Element} element - The HTML element to check. * @returns {boolean} - True if the element is a block-level element, false otherwise. */ export declare function isBlockNode(element: Element): boolean; /** * Removes all newlines from a string and replaces consecutive spaces between tags with a single space. * * @param {string} htmlString - The string value from which newlines will be removed. * @param {Element} editNode - The editable element. * @returns {string} - Returns the modified string without newline characters. * @hidden */ export declare function cleanHTMLString(htmlString: string, editNode: Element): string; /** * Converting the base64 url to blob * * @param {string} dataUrl - specifies the string value * @returns {Blob} - returns the blob * @hidden */ export declare function convertToBlob(dataUrl: string): Blob; /** * Escapes HTML characters in a string. * * @param {string} html - The HTML string to be escaped. * @returns {string} The escaped HTML string. */ export declare function escaseHtml(html: string): string; /** * Aligns HTML content by parsing it through the DOM parser and returning the structured HTML. * * @param {string} htmlString - The HTML string to be aligned. * @returns {string} The aligned HTML string. */ export declare function alignmentHtml(htmlString: string): string; /** * Formats a DOM node with proper indentation for improved readability. * * @param {Node} node - The DOM node to format. * @param {number} indentLevel - The current indentation level. * @returns {string} The formatted node as a string with proper indentation. */ export declare function formatNode(node: Node, indentLevel: number): string; /** * Opens a new window, injects the given element and styles, and triggers print. * * @param {Element} element - The element to clone and print. * @param {Window} [printWindow] - Optional existing window, otherwise a new one is created. * @returns {Window} - The print window instance. */ export declare function openPrintWindow(element: Element, printWindow?: Window): Window; /** * Determines the effective root offset parent of a given image or Video element, * * @private * @param {HTMLElement} mediaElement - The image or Video element whose offset parent is to be found. * @param {string} parentID - The ID of the parent element. * @returns {HTMLElement} - The resolved root offset parent element. */ export declare function getRootOffsetParent(mediaElement: HTMLElement, parentID: string): HTMLElement; /** * Determines the image or video element top and left position, * * @private * @param {HTMLElement} mediaElement - The image or Video element whose offset parent is to be found. * @param {HTMLTextAreaElement} rootEle - RichTextEditor root div element. * @returns {OffsetPosition} - The resolved media element top and left position value. */ export declare function getMediaResizeBarValue(mediaElement: HTMLElement, rootEle: HTMLTextAreaElement): OffsetPosition; /** * Converts font size from one unit to another. * * @param {number} value - The font size value to convert. * @param {string} originalUnit - The original unit of the font size. * @param {string} targetUnit - The target unit to convert the font size to. * @returns {number} - The converted font size value. */ export declare function convertFontSize(value: number, originalUnit: string, targetUnit: string): number;