be-persistent is a behavior/decorator/enhancement alternative to purr-sist.
<input be-persistent>
What this does:
Stores input's value in session storage (key is based on location within the DOM), but can also be specified.
The syntax above is short-hand for:
<input be-persistent="of value::input via sessionStorage://{autoGenId}.">
The fragment "of value::input" is assumed if not provided.
Also, the event "::input" is assumed if not provided.
The end of the statement above: "sessionStorage://{autoGenId}" is based on the Uniform Storage Path vernacular.
<input 💾="of value::input via sessionStorage://{autoGenId}.">
<input 💾="via indexedDB://myDB/myStore/{autoGenId}.">
<input 💾="via cookie://{autoGenId}.">
<input 💾="via locationHash://{autoGenId}.">
There are certain, limited circumstances, where we want to throw security to the dogs, and provide a convenient way of creating "virtual web pages embedded in the url". Here's how we do this:
<div 💾="of unsanitizedInnerHTML via locationHash://{autoGenId}"
onsecuritypolicyviolation="event.anythingGoes = true">
<span conteneditable></span>
</div>
On refreshing the browser, the inner content's edits are retained.
We make use of trusted types [TODO]
Any web server that can serve static files will do, but...
- Install git.
- Fork/clone this repo.
- Install node.js
- Install Python 3 or later
- Open command window to folder where you cloned this repo.
-
npm install
-
npm run serve
- Open http://localhost:8000/demo/ in a modern browser.
> npm run test
import 'be-persistent/be-persistent.js';
<script type=module crossorigin=anonymous>
import 'https://esm.run/be-persistent';
</script>