import diff from "fast-diff"; import type { AttributeMap } from "../attributes/interface"; import type { Op } from "./interface"; export declare class Delta { /** 内建 ops */ ops: Op[]; /** * 构造函数 * @param ops */ constructor(ops?: Op[] | { ops: Op[]; }); /** * 插入操作 * @param insert * @param attributes * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#insert */ insert(insert: string, attributes?: AttributeMap): this; /** * 插入操作 * @param attributes */ insertEOL(attributes?: AttributeMap): this; /** * 删除操作 * @param length * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#delete */ delete(length: number): this; /** * 指针操作 * @param length * @param attributes * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#retain */ retain(length: number, attributes?: AttributeMap): this; /** * 追加 Op * @param newOp * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#push */ push(newOp: Op): this; /** * 裁剪末尾空 Op * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#chop */ chop(): this; /** * 过滤符合条件的 Ops * @param predicate * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#filter */ filter(predicate: (op: Op, index: number) => boolean): Op[]; /** * 迭代 Ops * @param predicate * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#foreach */ forEach(predicate: (op: Op, index: number) => void): void; /** * 转换 Ops * @param predicate * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#map */ map(predicate: (op: Op, index: number) => T): T[]; /** * 分组 Ops * @param predicate * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#partition */ partition(predicate: (op: Op) => boolean): [Op[], Op[]]; /** * Reduce Ops * @param predicate * @param initialValue * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#reduce */ reduce(predicate: (acc: T, cur: Op, index: number) => T, initialValue: T): T; /** * 获取 Ops 内容变更的长度 * - 即 insert 长度 - delete 长度 */ changeLength(): number; /** * 获取 Ops 变更总长度 * - 相当于累计了所有操作的长度 len(r) + len(i) + len(d) * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#length */ length(): number; /** * 切片 Ops * @param start * @param end * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#slice */ slice(start?: number, end?: number): Delta; /** * 组合 Ops * @param other * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#compose */ compose(other: Delta): Delta; /** * 拼接 Ops * @param other * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#concat */ concat(other: Delta): Delta; /** * 原地拼接 Ops * - 常用于纯文档描述的原地拼接, 非纯文档应使用 compose * @param other Delta * @param fastMode [?=true] 快速模式下直接拼接, 否则会尝试合并 Ops */ merge(other: Delta, fastMode?: boolean): Delta; /** * Diff Ops * - 获取由 this -> other 变更的增量 * @param other * @param cursor * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#diff */ diff(other: Delta, cursor?: number | diff.CursorInfo): Delta; /** * 按行迭代 Ops * - 迭代的行 Delta 会携带 LF-Op, 不存在则会自动补充 * - predicate 返回 false 之后, 将不会继续拆分行循环迭代 * @param predicate * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#eachline */ eachLine(predicate: (line: Delta, attributes: AttributeMap, index: number) => boolean | void): void; /** * 反转增量 invert * @param base 变更应用前的状态快照, 以记录原属性值 * @example inverted = delta.invert(base) * @example base.compose(delta).compose(inverted) === base * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#invert */ invert(base: Delta): Delta; /** * 操作变换 * @param other 操作变换目标 * @param priority true: this > other false: other > this * @usage User: A [uid:1] B [uid:2] Base: i("12") Priority: A > B * - oa=r(2).i("A") 12A ob1=oa.transform(ob, true)=r(3).i("B") 12AB * - ob=r(2).i("B") 12B oa1=ob.transform(oa, false)=r(2).i("A") 12AB * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#transform */ transform(other: Delta, priority?: boolean): Delta; /** * 操作变换指针 * @param index index to transform * @param priority true: this > other false: other > this * @link https://www.npmjs.com/package/quill-delta/v/4.2.2#transformposition */ transformPosition(index: number, priority?: boolean): number; /** * 克隆 Delta * @param deep [?=undef] 是否深克隆 */ clone(deep?: boolean): Delta; }