virtual-dom-patch-viewer

View the details of a Virtual-DOM patch in the console.

Usage no npm install needed!

<script type="module">
  import virtualDomPatchViewer from 'https://cdn.skypack.dev/virtual-dom-patch-viewer';
</script>

README

virtual-dom-patch-viewer

Designed to work with the patch object returned by the virtual-dom diff method.

javascript:

var patchView = require('virtual-dom-patch-viewer')

// get patch, then...
patchView(patch)

console:

REMOVE HTML(0) > HEAD(1) > STYLE(8) (node/8) VirtualNode {...} undefined
INSERT HTML(0) > BODY(10) (node/10) null VirtualText {...}
PROPS HTML(0) > BODY(10) > DIV(19) > H2(21) (node/21) VirtualNode {...} Object {...}
VTEXT HTML(0) > BODY(10) > DIV(19) > H2(21) > Hello (text/22) VirtualText {...} VirtualText {...}
REMOVE HTML(0) > BODY(10) > DIV(19) > H2(21) > SPAN(23) (node/23) VirtualNode {...} undefined
VNODE HTML(0) > BODY(10) > DIV(19) > BUTTON(26) (node/26) VirtualNode {...} VirtualNode {...}

Optionally you can limit the report to particular types or tags.

// only show virtual patches that affect DIV tags
patchView(patch, 'div')

// show either DIV or H2 tags or patches with type REMOVE
patchView(patch, ['div', 'h2', 'remove'])

// only show patches that are type REMOVE and affect SCRIPT tags
patchView(patch, {type:'remove', tag:'script'})

// show patches that are type REMOVE or INSERT, and affect SCRIPT tags
patchView(patch, {type:['remove','insert'], tag:'script'})

// show patches that are type PROPS, and affect DIV or ANCHOR tags
patchView(patch, {type:'props', tag:['div','a']})

// exclude patches with type REMOVE
patchView(patch, {exclude:'REMOVE'})

There is a supplementary find method made available on the patchView function. Provide a virtual-dom object and a node index and the find method returns the node path to the given index.

console.log(
  patchView.find(vdom, 4)
)
// HTML(0) > HEAD(1) > TITLE(3) > patchdom (text/4)

license

MIT