Skip to content

ES2019 browser library that sends user input events as JSON Patch operations

Notifications You must be signed in to change notification settings

npolar/patch-event

Repository files navigation

@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.

About

ES2019 browser library that sends user input events as JSON Patch operations

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published