@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
50 lines (49 loc) • 1.81 kB
TypeScript
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 {};