viewof component = {
let uses = Alpine,
wrap = html`<div @click=$dispatch('input')>`,
counter = html`<div>
<button @click=$store.counter.count-->Dec</button>
<button @click=$store.counter.count++>Inc</button>
<button @click="$store.counter.count = (Math.random()*10).toFixed(3)">Rand</button>
<label>Slice:</label> <span x-text=($store.counter.count+'').slice(0,5)>`,
field = html`<div>
<input type="text" x-model="$store.counter.count">`;
uses.store('counter',{count: 0})
uses.effect(() => {
uses.store('counter').count;
wrap.dispatchEvent(new Event('click'))})()
wrap.append(field,counter,html`<br>`)
Object.defineProperty(wrap, 'value' , {
get : ()=> uses.store('counter').count,
set : (v)=> uses.store('counter').count = v })
return wrap }