npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

visual-dom-diff

v0.7.2

Published

Highlight differences between two DOM trees.

Downloads

8,081

Readme

visual-dom-diff

Highlight differences between two DOM trees.

Installation

npm i visual-dom-diff

Usage

import { visualDomDiff } from 'visual-dom-diff'

const diffNode = visualDomDiff(originalNode, changedNode, options)

API

visualDomDiff(originalNode: Node, changedNode: Node, options?: Options): DocumentFragment

Returns a new document fragment with the content from the two input nodes and annotations indicating if the given fragment was removed, modified or added in the changedNode, ralative to the originalNode.

Changes to text content are represented as deletions (<del class="vdd-removed">) followed by insertions (<ins class="vdd-added">).

Changes to the document structure are indicated by adding the vdd-removed and vdd-added classes to the removed and inserted elements respectively.

Changes to formatting are treated as content modifications (<ins class="vdd-modified"> wraps the modified text) and only the new formatting is carried over to the returned document fragment.

Changes to attributes of structural elements are treated as modifications (vdd-modified class is added to the element) and only the new attributes are carried over to the returned document fragment.

Options

  • addedClass: string = 'vdd-added' The class used for annotating content additions.
  • modifiedClass: string = 'vdd-modified' The class used for annotating content modifications.
  • removedClass: string = 'vdd-removed' The class used for annotating content removals.
  • skipModified: boolean = false If true, then formatting changes are NOT wrapped in <ins class="vdd-modified"> and modified structural elements are NOT annotated with the vdd-modified class.
  • skipChildren: (node: Node): boolean | undefined Indicates if the child nodes of the specified node should be ignored. It is useful for ignoring child nodes of an element representing some embedded content, which should not be compared. Return undefined for the default behaviour.
  • skipSelf: (node: Node): boolean | undefined Indicates if the specified node should be ignored. Even if the node is ignored, its child nodes will still be processed, unless skipChildNodes says they should also be ignored. Ignored elements whose child nodes are processed are treated as formatting elements. Return undefined for the default behaviour.
  • diffText: (oldText: string, newText: string): Diff[] A function to use for diffing serialized representations of DOM nodes, where each DOM element is represented by a single character from the Private Use Area of the Basic Multilingual Unicode Plane. The default implementation is case sensitive and inteligently merges related changes to make the result more user friendly. See the source code for more details, especially if you want to implement a custom diffText function.