UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

50 lines (49 loc) 1.81 kB
import { CardAttributes } from '@atlaskit/adf-schema'; import { Node as PMNode } from '@atlaskit/editor-prosemirror/model'; import { SortOrder } from '../types'; export declare enum ContentType { NUMBER = 0, TEXT = 5, MENTION = 10, DATE = 15, STATUS = 20, LINK = 25 } interface CompareOptions { getInlineCardTextFromStore(attrs: CardAttributes): string | null; } interface NodeMetaGenerator<Type, Value> { type: Type; value: Value; } type TextNodeMeta = NodeMetaGenerator<ContentType.TEXT, string>; type NodeMeta = TextNodeMeta | NodeMetaGenerator<ContentType.NUMBER, number> | NodeMetaGenerator<ContentType.STATUS, string> | NodeMetaGenerator<ContentType.DATE, number> | NodeMetaGenerator<ContentType.MENTION, string> | NodeMetaGenerator<ContentType.LINK, string>; type NormalizeTextParser = (text: string) => string | number | null; export declare function createNormalizeTextParser(): NormalizeTextParser; export declare function extractMetaFromTextNode(textNode: PMNode, normalizeTextParser: NormalizeTextParser): NodeMeta; /** * Compare 2 prosemirror nodes and check if it's greater, equal or less than the other node * based on the sort order. * * @param {Node} nodeA * @param {Node} nodeB * @returns {(1 | 0 | -1)} * * For Ascending order: * 1 -> NodeA > NodeB * 0 -> NodeA === NodeB * -1 -> Node A < NodeB * For Descending order: * 1 -> NodeA < NodeB * 0 -> NodeA === NodeB * -1 -> Node A > NodeB * * If either node is empty: * The empty node is always treated as lower priority, * irrespective of the order. * * If no order is provided the method defaults to Ascending order, * like a regular JS sort method. */ export declare const createCompareNodes: (options: CompareOptions, order?: SortOrder) => Function; export {};