MCPcopy Create free account
hub / github.com/editablejs/editable / sliceInsertDelta

Function sliceInsertDelta

packages/yjs-transform/src/delta.ts:47–86  ·  view source on GitHub ↗
(delta: InsertDelta, start: number, length: number)

Source from the content-addressed store, hash-verified

45}
46
47export function sliceInsertDelta(delta: InsertDelta, start: number, length: number): InsertDelta {
48 if (length < 1) {
49 return []
50 }
51
52 let currentOffset = 0
53 const sliced: InsertDelta = []
54 const end = start + length
55
56 for (let i = 0; i < delta.length; i++) {
57 if (currentOffset >= end) {
58 break
59 }
60
61 const element = delta[i]
62 const elementLength = getInsertLength(element)
63
64 if (currentOffset + elementLength <= start) {
65 currentOffset += elementLength
66 continue
67 }
68
69 if (typeof element.insert !== 'string') {
70 currentOffset += elementLength
71 sliced.push(element)
72 continue
73 }
74
75 const startOffset = Math.max(0, start - currentOffset)
76 const endOffset = Math.min(elementLength, elementLength - (currentOffset + elementLength - end))
77
78 sliced.push({
79 ...element,
80 insert: element.insert.slice(startOffset, endOffset),
81 })
82 currentOffset += elementLength
83 }
84
85 return sliced
86}

Callers 2

getYTargetFunction · 0.90
splitNodeFunction · 0.90

Calls 1

getInsertLengthFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…