| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /* eslint-disable
- no-undef,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS101: Remove unnecessary use of Array.from
- * DS102: Remove unnecessary code created because of implicit returns
- * DS205: Consider reworking code to avoid use of IIFEs
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- // Text document API for text
- let type
- if (typeof WEB !== 'undefined' && WEB !== null) {
- type = exports.types['text-composable']
- } else {
- type = require('./text-composable')
- }
- type.api = {
- provides: { text: true },
- // The number of characters in the string
- getLength() {
- return this.snapshot.length
- },
- // Get the text contents of a document
- getText() {
- return this.snapshot
- },
- insert(pos, text, callback) {
- const op = type.normalize([pos, { i: text }, this.snapshot.length - pos])
- this.submitOp(op, callback)
- return op
- },
- del(pos, length, callback) {
- const op = type.normalize([
- pos,
- { d: this.snapshot.slice(pos, pos + length) },
- this.snapshot.length - pos - length,
- ])
- this.submitOp(op, callback)
- return op
- },
- _register() {
- return this.on('remoteop', function (op) {
- let pos = 0
- return (() => {
- const result = []
- for (const component of Array.from(op)) {
- if (typeof component === 'number') {
- result.push((pos += component))
- } else if (component.i !== undefined) {
- this.emit('insert', pos, component.i)
- result.push((pos += component.i.length))
- } else {
- // delete
- result.push(this.emit('delete', pos, component.d))
- }
- }
- return result
- })()
- })
- },
- }
- // We don't increment pos, because the position
- // specified is after the delete has happened.
|