import type { Universe } from '@ephox/boss'; import * as Splitter from '../../search/Splitter'; import * as Positions from '../../split/Positions'; import * as Range from '../../split/Range'; import * as Split from '../../split/Split'; import type { SplitPosition } from '../data/SplitPosition'; import type { TextSplit } from '../data/TextSplit'; import type { SpotRange } from '../data/Types'; type SplitApi = (universe: Universe, item: E, position: number) => TextSplit; const split: SplitApi = Split.split; type SplitByPairApi = (universe: Universe, item: E, start: number, end: number) => E; const splitByPair: SplitByPairApi = Split.splitByPair; type RangeApi = (universe: Universe, base: E, baseOffset: number, end: E, endOffset: number) => E[]; const range: RangeApi = Range.nodes; type SubdivideApi = (universe: Universe, item: E, positions: number[]) => SpotRange[]; const subdivide: SubdivideApi = Splitter.subdivide; type PositionApi = (_universe: Universe, target: TextSplit) => SplitPosition; const position: PositionApi = (_universe, target) => Positions.determine(target); export { split, splitByPair, range, subdivide, position };