Non-destructive data modification via (JSON) Patch events.
Register
Use register to have a host element re-emit regular input events as patch events.
import { register } from "@npolar/patch-event/src/host.js";
const host = document.querySelector("form");
const handler = event => console.log(event.detail);
register(host, handler);<form>
  <input path="/foo" />
  <input path="/bar" />
</form>The code above will log a JSON Patch operation for every native input event, example payload:
{ "op": "replace", "path": "/foo", "value": "bar" }eventTypes
Specify which events that should be re-sent as patch events using eventTypes:
register(host, handler, { eventTypes: ["change"] });- Modern: Codebase is ECMAScript2019
- Functional: employs a set of pure functions
- Safe: Patches are performed on a deep copy of the original
- Tiny (2Kb gzipped)
Created with the following usage scenarios in mind:
- Form editing with modification history and undo/redo functionality (demo)
- Parameter transformation, ie. convert user input into the shape needed by your application's internals
yarn add https://github.com/npolar/patch-event#v0.0.1A ES2019 compliant browser; eg. Firefox >= 63, Chrome >= 73, Edge >= 7x
This library builds a non-destructive patch function over chbrown's JSON Pointer and JSON Patch implementation (rfc6902), using Dr. Alex's deepCopy.