um/dist/tagged.min.js

3 lines
883 B
JavaScript

/*! Tagged v:0.1 | MIT LICENSE | https://github.com/n2geoff/tagged */
function tag(tag,...args){const el=document.createElement(tag);return args.forEach((arg=>{"string"==typeof arg||"number"==typeof arg?el.appendChild(document.createTextNode(arg)):Array.isArray(arg)?el.append(...arg):Object.assign(el,arg)})),el}function app(opts,selector="body"){let data={},view=()=>null,actions={};const $=document.querySelector.bind(document),state=state=>("object"==typeof state&&(data={...data,...state}),update(),data),update=()=>{$(selector).replaceChildren(view(data,actions))};return opts.view&&"function"==typeof opts.view&&(view=opts?.view),opts.state&&"object"==typeof opts.state&&(data=state(opts.state)),opts.actions&&"object"==typeof opts.actions&&(actions=opts.actions),opts.view&&selector&&update(),{state:state,actions:actions}}const h=tag;export{app,h};
//# sourceMappingURL=true