Skip to content
Snippets Groups Projects

Intuitive erasing

+ 39
33
@@ -145,60 +145,66 @@ class Room extends EventTarget {
mergeIntervals: "Map",
},
})
const dispatchRemovedIntervalsEvent = (lineEvent) => {
const id = lineEvent.name
const intervals = this._generateRemovedIntervals(id)
const points = this._generatePath(id)
const detail = { id, intervals, points }
this.dispatchEvent(
new CustomEvent("removedIntervalsChange", {
detail,
}),
)
}
const dispatchPathUpdateEvent = (lineEvent) => {
const id = lineEvent.name
const points = this._generatePath(id)
const detail = { id, points }
this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail }))
}
this._y.share.strokeAdd.observe((lineEvent) => {
if (lineEvent.type == "add") {
const points = this._generatePath(lineEvent.name)
const detail = { id: lineEvent.name, points }
this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail }))
dispatchPathUpdateEvent(lineEvent)
lineEvent.value.observe((pointEvent) => {
if (pointEvent.type == "insert") {
const points = this._generatePath(lineEvent.name)
const detail = { id: lineEvent.name, points }
this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail }))
dispatchPathUpdateEvent(lineEvent)
}
})
}
})
this._y.share.strokeErase.observe((lineEvent) => {
if (lineEvent.type == "add") {
const points = this._generatePath(lineEvent.name)
const detail = { id: lineEvent.name, points }
this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail }))
dispatchPathUpdateEvent(lineEvent)
lineEvent.value.observe((pointEvent) => {
if (pointEvent.type == "add") {
const points = this._generatePath(lineEvent.name)
const detail = { id: lineEvent.name, points }
this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail }))
dispatchPathUpdateEvent(lineEvent)
}
})
}
})
this.sharedMergeIntervals.observe((lineEvent) => {
if (lineEvent.type == "add") {
const dispatchEvent = () => {
const id = lineEvent.name
const intervals = this._generateRemovedIntervals(id)
const points = this._generatePath(lineEvent.name)
this.dispatchEvent(
new CustomEvent("removedIntervalsChange", {
detail: { id, intervals, points },
}),
)
}
if (lineEvent.type != "add") {
return
}
dispatchEvent()
dispatchRemovedIntervalsEvent(lineEvent)
lineEvent.value.observe((pointEvent) => {
if (pointEvent.type == "add") {
dispatchEvent()
lineEvent.value.observe((pointEvent) => {
if (pointEvent.type != "add") {
return
}
pointEvent.value.observe(() => {
dispatchEvent()
})
}
dispatchRemovedIntervalsEvent(lineEvent)
pointEvent.value.observe(() => {
dispatchRemovedIntervalsEvent(lineEvent)
})
}
})
})
}
}
Loading