import { Node } from "prosemirror-model"; import { mutatingSortedInsert } from "@heydovetail/array"; import { encodeToPlainSingleLine, EncodeToPlainSingleLineConstraints } from "./encodeToPlainSingleLine"; import { groupBy } from "./iter"; import * as set from "./set"; import { sortComparatorAsc } from "@heydovetail/array"; export interface Range { id: string; from: number; to: number; } export interface Label { id: string; rangeId: string; } export interface Segment { rangeId?: string; labelIds: ReadonlySet; text: string; textAfter: string; textBefore: string; } /** * Slice a node into segments, returning an array of combinations. */ export function segmentRanges( node: Node, ranges: ReadonlyArray, labels: ReadonlyArray