slate
Version:
A completely customizable framework for building rich text editors.
133 lines • 4.66 kB
TypeScript
import { InsertNodeOperation, MergeNodeOperation, MoveNodeOperation, Operation, RemoveNodeOperation, SplitNodeOperation } from '..';
import { TextDirection } from '../types/types';
/**
* `Path` arrays are a list of indexes that describe a node's exact position in
* a Slate node tree. Although they are usually relative to the root `Editor`
* object, they can be relative to any `Node` object.
*/
export type Path = number[];
export interface PathAncestorsOptions {
reverse?: boolean;
}
export interface PathLevelsOptions {
reverse?: boolean;
}
export interface PathTransformOptions {
affinity?: TextDirection | null;
}
export interface PathInterface {
/**
* Get a list of ancestor paths for a given path.
*
* The paths are sorted from shallowest to deepest ancestor. However, if the
* `reverse: true` option is passed, they are reversed.
*/
ancestors: (path: Path, options?: PathAncestorsOptions) => Path[];
/**
* Get the common ancestor path of two paths.
*/
common: (path: Path, another: Path) => Path;
/**
* Compare a path to another, returning an integer indicating whether the path
* was before, at, or after the other.
*
* Note: Two paths of unequal length can still receive a `0` result if one is
* directly above or below the other. If you want exact matching, use
* [[Path.equals]] instead.
*/
compare: (path: Path, another: Path) => -1 | 0 | 1;
/**
* Check if a path ends after one of the indexes in another.
*/
endsAfter: (path: Path, another: Path) => boolean;
/**
* Check if a path ends at one of the indexes in another.
*/
endsAt: (path: Path, another: Path) => boolean;
/**
* Check if a path ends before one of the indexes in another.
*/
endsBefore: (path: Path, another: Path) => boolean;
/**
* Check if a path is exactly equal to another.
*/
equals: (path: Path, another: Path) => boolean;
/**
* Check if the path of previous sibling node exists
*/
hasPrevious: (path: Path) => boolean;
/**
* Check if a path is after another.
*/
isAfter: (path: Path, another: Path) => boolean;
/**
* Check if a path is an ancestor of another.
*/
isAncestor: (path: Path, another: Path) => boolean;
/**
* Check if a path is before another.
*/
isBefore: (path: Path, another: Path) => boolean;
/**
* Check if a path is a child of another.
*/
isChild: (path: Path, another: Path) => boolean;
/**
* Check if a path is equal to or an ancestor of another.
*/
isCommon: (path: Path, another: Path) => boolean;
/**
* Check if a path is a descendant of another.
*/
isDescendant: (path: Path, another: Path) => boolean;
/**
* Check if a path is the parent of another.
*/
isParent: (path: Path, another: Path) => boolean;
/**
* Check is a value implements the `Path` interface.
*/
isPath: (value: any) => value is Path;
/**
* Check if a path is a sibling of another.
*/
isSibling: (path: Path, another: Path) => boolean;
/**
* Get a list of paths at every level down to a path. Note: this is the same
* as `Path.ancestors`, but including the path itself.
*
* The paths are sorted from shallowest to deepest. However, if the `reverse:
* true` option is passed, they are reversed.
*/
levels: (path: Path, options?: PathLevelsOptions) => Path[];
/**
* Given a path, get the path to the next sibling node.
*/
next: (path: Path) => Path;
/**
* Returns whether this operation can affect paths or not. Used as an
* optimization when updating dirty paths during normalization
*
* NOTE: This *must* be kept in sync with the implementation of 'transform'
* below
*/
operationCanTransformPath: (operation: Operation) => operation is InsertNodeOperation | RemoveNodeOperation | MergeNodeOperation | SplitNodeOperation | MoveNodeOperation;
/**
* Given a path, return a new path referring to the parent node above it.
*/
parent: (path: Path) => Path;
/**
* Given a path, get the path to the previous sibling node.
*/
previous: (path: Path) => Path;
/**
* Get a path relative to an ancestor.
*/
relative: (path: Path, ancestor: Path) => Path;
/**
* Transform a path by an operation.
*/
transform: (path: Path, operation: Operation, options?: PathTransformOptions) => Path | null;
}
export declare const Path: PathInterface;
//# sourceMappingURL=path.d.ts.map