campfire.js
Version:
a cozy web framework
2 lines (1 loc) • 4.91 kB
JavaScript
var A=(t,e)=>{var s;return{raw:!0,contents:Array.isArray(t)?t.join((s=e==null?void 0:e.joiner)!==null&&s!==void 0?s:" "):t.toString()}},x=(t,...e)=>{let s=[];for(let n=0;n<t.length;n++){s.push(t[n]||"");let r=e[n];typeof r!="undefined"&&typeof r!="object"?s.push(l((r||"").toString())):s.push((r==null?void 0:r.contents)||"")}return s.join("")},y=t=>{var e;let s=t?t.match(/([0-9a-zA-Z\-]*)?(#[0-9a-zA-Z\-]*)?((.[0-9a-zA-Z\-]+)*)/):void 0,n=s?(e=s.slice(1,4))===null||e===void 0?void 0:e.map(r=>r?r.trim():void 0):Array(3).fill(void 0);return n&&n[1]&&(n[1]=n[1].replace(/#*/g,"")),s?{tag:n[0]||void 0,id:n[1]||void 0,classes:n[2]?n[2].split(".").filter(r=>r.trim()):void 0}:{}},f=(t,e={})=>{let{contents:s,c:n,misc:r,m:i,style:o,s:g,on:m,attrs:_,a:E,raw:j,g:O,gimme:w}=e,h=[t];s=s||n||"",s=j?s:l(s),s&&(t.innerHTML=s),Object.assign(t,r||i),Object.assign(t.style,o||g);let a=w||O||[];if(a&&a.length)for(let u of a)h.push(t.querySelector(u));return Object.entries(m||{}).forEach(([u,d])=>t.addEventListener(u,d)),Object.entries(_||E||{}).forEach(([u,d])=>t.setAttribute(u,d)),h},R=(t,e={})=>{let{tag:s,id:n,classes:r}=y(t);if(r==null?void 0:r.some(o=>o.includes("#")))throw new Error("Error: Found # in a class name. Did you mean to do elt#id.classes instead of elt.classes#id?");s||(s="div");let i=document.createElement(s);return n&&(i.id=n),(r||[]).forEach(o=>i.classList.add(o)),f(i,e)},q=(t,e)=>{if(Object.keys(e).length!==1)throw new Error("Too many or too few positions specified.");let n=Object.values(e)[0],r="afterend";return e.after?r="afterend":e.before?r="beforebegin":e.prependTo?r="afterbegin":e.appendTo&&(r="beforeend"),n.insertAdjacentElement(r,t),t},c=class{constructor(e){this._subscribers={},this._subscriberCounts={},this._dead=!1,this.value=e}on(e,s,n=!1){return this._subscriberCounts[e]=this._subscriberCounts[e]||0,this._subscribers[e]=this._subscribers[e]||{},this._subscribers[e][this._subscriberCounts[e]]=s,n&&!["push","remove","mutation","setAt"].includes(e)&&s(this.value),this._subscriberCounts[e]++}unsubscribe(e,s){delete this._subscribers[e][s]}update(e){this._dead||(this.value=e,this._sendEvent("update",e))}refresh(){this._sendEvent("refresh",this.value)}_sendEvent(e,s){if(!this._dead){this._subscribers[e]=this._subscribers[e]||{};for(let n in Object.keys(this._subscribers[e]))this._subscribers[e][n](s)}}dispose(){this._dead=!0,this._subscribers={},this._subscriberCounts={}}},b=class extends c{constructor(e){super(e)}clear(){this.update([])}push(e){this.value.push(e),this._sendEvent("push",{value:e,idx:this.value.length-1})}remove(e){if(e<0||e>=this.value.length)throw new RangeError("Invalid index.");this._sendEvent("remove",{value:this.value.splice(e,1)[0],idx:e})}get(e){if(e<0||e>this.value.length)throw new RangeError("Invalid index.");return this.value instanceof Array&&this.value[e]}setAt(e,s){if(e<0||e>=this.value.length)throw new RangeError("Invalid index.");this.value[e]=s,this._sendEvent("mutation",{value:s,idx:e})}get length(){return this.value.length}},v=class extends c{constructor(e){super(new Map);for(let[s,n]of Object.entries(e))this.value.set(s,n)}set(e,s){this.value.set(e,s),this._sendEvent("set",{key:e,value:s})}remove(e){this.value.delete(e),this._sendEvent("remove",{key:e,value:this.value})}clear(){this.value=new Map,this._sendEvent("clear",void 0)}transform(e,s){let n=this.value.get(e);if(!n)throw new Error(`ERROR: key ${e} does not exist in store!`);let r=s(n);this.set(e,r)}get(e){return this.value.get(e)}},C=(t,e={})=>{let s=new RegExp("\\\\({{\\s*"+Object.keys(e).join("|")+"\\s*}})","gi");return new RegExp(Object.keys(e).join("|"),"gi"),t.replace(new RegExp("(^|[^\\\\]){{\\s*("+Object.keys(e).join("|")+")\\s*}}","gi"),function(n,r,i){return`${r||""}${e[i]}`}).replace(s,"$1")},p=(t,e={},s=!0)=>{let n=Object.assign({},e);return s&&(n=Object.fromEntries(Object.entries(n).map(([r,i])=>[r,l(i)]))),C(t,n)},L=(t,e=!0)=>s=>p(t,s,e),l=t=>t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):"",S=t=>{if(!t)return"";let e=/&(?:amp|lt|gt|quot|#(0+)?39);/g,s={"&":"&","<":"<",">":">",""":'"',"'":"'"};return t.replace(e,n=>s[n]||"'")},T=t=>globalThis.addEventListener("DOMContentLoaded",t),k=(t,e=document)=>e.querySelector(t),M=(t,e=document)=>Array.from(e.querySelectorAll(t)),$=t=>t.remove(),z=t=>{t.innerHTML=""},I=(...t)=>{let e=0,s=t[0],n=1;typeof t[1]!="undefined"&&(e=t[0],s=t[1]),t[2]&&(n=t[2]);let r=[];for(let i=e;i<s;i+=n)r.push(i);return r},Z={Store:c,ListStore:b,nu:R,mustache:p,template:L,escape:l,unescape:S,extend:f,insert:q,empty:z,rm:$,selectAll:M,select:k,onload:T,html:x,r:A,seq:I,MapStore:v};export{b as ListStore,v as MapStore,c as Store,Z as default,z as empty,l as escape,f as extend,x as html,q as insert,p as mustache,R as nu,T as onload,A as r,$ as rm,k as select,M as selectAll,I as seq,L as template,S as unescape};