1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-15 19:54:02 +02:00

Improve debug mutations plugin (#2844)

This commit is contained in:
Sunny Hirai
2019-05-29 18:03:42 -07:00
committed by GitHub
parent 78264cf117
commit d2f9b4167c

View File

@@ -38,7 +38,7 @@ const MUTATION_PROPERTIES = [
* @param {Object} options * @param {Object} options
*/ */
function DebugMutationsPlugin({ editor }) { function DebugMutationsPlugin() {
const observer = new window.MutationObserver(mutations => { const observer = new window.MutationObserver(mutations => {
const array = Array.from(mutations).map(mutationRecord => { const array = Array.from(mutations).map(mutationRecord => {
const object = {} const object = {}
@@ -48,7 +48,21 @@ function DebugMutationsPlugin({ editor }) {
MUTATION_PROPERTIES.forEach(key => { MUTATION_PROPERTIES.forEach(key => {
const value = mutationRecord[key] const value = mutationRecord[key]
if (value == null) return if (value == null) return
if (value instanceof window.NodeList && value.length === 0) return
// Make NodeList easier to read
if (value instanceof window.NodeList) {
if (value.length === 0) return
object[key] = Array.from(value)
.map(node => {
const { outerHTML, innerHTML } = node
if (outerHTML == null) return JSON.stringify(node.textContent)
return outerHTML.slice(0, outerHTML.indexOf(innerHTML))
})
.join(', ')
return
}
object[key] = value object[key] = value
}) })
@@ -72,10 +86,10 @@ function DebugMutationsPlugin({ editor }) {
* Start observing the DOM node for mutations if it isn't being observed * Start observing the DOM node for mutations if it isn't being observed
*/ */
function start() { function start(event, editor, next) {
const rootEl = editor.findDOMNode([]) const rootEl = editor.findDOMNode([])
if (rootEl === prevRootEl) return if (rootEl === prevRootEl) return next()
debug('start') debug('start')
@@ -88,17 +102,20 @@ function DebugMutationsPlugin({ editor }) {
}) })
prevRootEl = rootEl prevRootEl = rootEl
next()
} }
/** /**
* Stop observing the DOM node for mutations * Stop observing the DOM node for mutations
*/ */
function stop() { function stop(event, editor, next) {
debug('stop') debug('stop')
observer.disconnect() observer.disconnect()
prevRootEl = null prevRootEl = null
next()
} }
return { return {