json-joy
Version:
Collection of libraries for building collaborative editing apps.
25 lines (24 loc) • 679 B
JavaScript
export const apply = (str, op) => {
const length = op.length;
let res = '';
let offset = 0;
for (let i = 0; i < length; i++) {
const component = op[i];
switch (typeof component) {
case 'string':
res += component;
break;
case 'number': {
if (component > 0) {
const end = offset + component;
res += str.substring(offset, end);
offset = end;
}
else
offset -= component;
break;
}
}
}
return res + str.substring(offset);
};