overleaf/services/web/frontend/js/ide/editor/EditorShareJsCodec.js
Alf Eaton 1be43911b4 Merge pull request #3942 from overleaf/prettier-trailing-comma
Set Prettier's "trailingComma" setting to "es5"

GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
2021-04-28 02:10:01 +00:00

50 lines
1.3 KiB
JavaScript

/* eslint-disable
max-len,
no-return-assign,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
let EditorShareJsCodec
export default EditorShareJsCodec = {
rangeToShareJs(range, lines) {
let offset = 0
for (let i = 0; i < lines.length; i++) {
const line = lines[i]
offset += i < range.row ? line.length : range.column
}
offset += range.row // Include newlines
return offset
},
changeToShareJs(delta, lines) {
const offset = EditorShareJsCodec.rangeToShareJs(delta.start, lines)
const text = delta.lines.join('\n')
switch (delta.action) {
case 'insert':
return { i: text, p: offset }
case 'remove':
return { d: text, p: offset }
default:
throw new Error(`unknown action: ${delta.action}`)
}
},
shareJsOffsetToRowColumn(offset, lines) {
let row = 0
for (row = 0; row < lines.length; row++) {
const line = lines[row]
if (offset <= line.length) {
break
}
offset -= lines[row].length + 1
} // + 1 for newline char
return { row, column: offset }
},
}