/**
* Represents a DOM region.
* A region is a range under a given node, and possibly after one child and before another child
* e.g.
* ```html
*
*
*
...
*
...
*
*
* ```
* We can define a region under DIV before the second TABLE and after the first TABLE
*
* This is used when user's selection go across different TD elements or start from TD and end after
* that TD (or inverse way). Some block operation should not ruin the TABLE structure, so we need to
* split the selection into several regions.
*/
export default interface RegionBase {
/**
* Root node of this region
*/
rootNode: HTMLElement;
/**
* A node to define the beginning boundary of this region.
* All nodes after this node before nodeAfter and contained by rootNode will be treated contained by this region.
*/
nodeBefore?: Node;
/**
* A node to define the ending boundary of this region.
* All nodes before this node after nodeBefore and contained by rootNode will be treated contained by this region.
*/
nodeAfter?: Node;
/**
* Tags that child elements will be skipped
*/
skipTags: string[];
}