Files
yjs/src/Struct/ItemString.js

44 lines
1.3 KiB
JavaScript
Raw Normal View History

2017-10-16 04:53:12 +02:00
import { splitHelper, default as Item } from './Item.js'
import { logID } from '../MessageHandler/messageToString.js'
2017-10-11 03:41:54 +02:00
export default class ItemString extends Item {
constructor () {
super()
this._content = null
}
2018-01-30 15:51:54 -08:00
_copy (undeleteChildren, copyPosition) {
let struct = super._copy(undeleteChildren, copyPosition)
2017-10-30 11:33:00 +01:00
struct._content = this._content
return struct
}
2017-10-11 03:41:54 +02:00
get _length () {
return this._content.length
}
_fromBinary (y, decoder) {
let missing = super._fromBinary(y, decoder)
this._content = decoder.readVarString()
return missing
}
2017-10-16 04:53:12 +02:00
_toBinary (encoder) {
super._toBinary(encoder)
2017-10-11 03:41:54 +02:00
encoder.writeVarString(this._content)
}
_logString () {
2017-10-23 22:43:33 +02:00
const left = this._left !== null ? this._left._lastId : null
const origin = this._origin !== null ? this._origin._lastId : null
2017-11-08 13:40:36 -08:00
return `ItemJSON(id:${logID(this._id)},content:${JSON.stringify(this._content)},left:${logID(left)},origin:${logID(origin)},right:${logID(this._right)},parent:${logID(this._parent)},parentSub:${this._parentSub})`
2017-10-11 03:41:54 +02:00
}
2017-10-16 04:53:12 +02:00
_splitAt (y, diff) {
if (diff === 0) {
return this
} else if (diff >= this._length) {
return this._right
}
let item = new ItemString()
item._content = this._content.slice(diff)
this._content = this._content.slice(0, diff)
splitHelper(y, this, item, diff)
return item
}
2017-10-11 03:41:54 +02:00
}