/* 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.