Skip to content

Latest commit

 

History

History
65 lines (44 loc) · 1.81 KB

readme.md

File metadata and controls

65 lines (44 loc) · 1.81 KB

@npolar/patch-event

Non-destructive data modification via (JSON) Patch events. Build status

Use

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"] });

Features

  • 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)

Scenarios

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

Install

yarn add https://github.com/npolar/patch-event#v0.0.1

Requirements

A ES2019 compliant browser; eg. Firefox >= 63, Chrome >= 73, Edge >= 7x

Credits

This library builds a non-destructive patch function over chbrown's JSON Pointer and JSON Patch implementation (rfc6902), using Dr. Alex's deepCopy.