implemented xml type for new event system

This commit is contained in:
Kevin Jahns
2017-10-19 17:36:28 +02:00
parent 1311c7a0d8
commit 755c9eb16e
38 changed files with 1272 additions and 322 deletions

View File

@@ -3,6 +3,11 @@ import Item from '../Struct/Item.js'
import ItemJSON from '../Struct/ItemJSON.js'
export default class YMap extends Type {
_callObserver (parentSub) {
this._eventHandler.callEventListeners({
name: parentSub
})
}
toJSON () {
const map = {}
for (let [key, item] of this._map) {
@@ -22,22 +27,40 @@ export default class YMap extends Type {
}
return map
}
delete (key) {
this._y.transact(() => {
let c = this._map.get(key)
if (c !== undefined) {
c._delete(this._y)
}
})
}
set (key, value) {
let old = this._map.get(key)
let v
if (value instanceof Item) {
v = value
} else {
let v = new ItemJSON()
v._content = JSON.stringify(value)
}
v._right = old
v._parent = this
v._parentSub = key
v._integrate()
this._y.transact(() => {
const old = this._map.get(key) || null
if (old !== null) {
old._delete(this._y)
}
let v
if (value instanceof Item) {
v = value
} else {
v = new ItemJSON()
v._content = [value]
}
v._right = old
v._right_origin = old
v._parent = this
v._parentSub = key
v._integrate(this._y)
})
return value
}
get (key) {
let v = this._map.get(key)
if (v === undefined || v._deleted) {
return undefined
}
if (v instanceof Type) {
return v
} else {