UNPKG

campfire.js

Version:
2 lines (1 loc) 5.06 kB
var g=Object.defineProperty;var I=t=>g(t,"__esModule",{value:!0});var Z=(t,e)=>{I(t);for(var s in e)g(t,s,{get:e[s],enumerable:!0})};Z(exports,{ListStore:()=>f,MapStore:()=>b,Store:()=>c,default:()=>F,empty:()=>q,escape:()=>l,extend:()=>h,html:()=>_,insert:()=>j,mustache:()=>v,nu:()=>E,onload:()=>A,r:()=>m,rm:()=>R,select:()=>x,selectAll:()=>y,seq:()=>C,template:()=>O,unescape:()=>w});var m=(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()}},_=(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("")},D=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}:{}},h=(t,e={})=>{let{contents:s,c:n,misc:r,m:i,style:o,s:L,on:S,attrs:T,a:k,raw:M,g:$,gimme:z}=e,p=[t];s=s||n||"",s=M?s:l(s),s&&(t.innerHTML=s),Object.assign(t,r||i),Object.assign(t.style,o||L);let a=z||$||[];if(a&&a.length)for(let u of a)p.push(t.querySelector(u));return Object.entries(S||{}).forEach(([u,d])=>t.addEventListener(u,d)),Object.entries(T||k||{}).forEach(([u,d])=>t.setAttribute(u,d)),p},E=(t,e={})=>{let{tag:s,id:n,classes:r}=D(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)),h(i,e)},j=(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={}}},f=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}},b=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)}},H=(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")},v=(t,e={},s=!0)=>{let n=Object.assign({},e);return s&&(n=Object.fromEntries(Object.entries(n).map(([r,i])=>[r,l(i)]))),H(t,n)},O=(t,e=!0)=>s=>v(t,s,e),l=t=>t?t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"):"",w=t=>{if(!t)return"";let e=/&(?:amp|lt|gt|quot|#(0+)?39);/g,s={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"};return t.replace(e,n=>s[n]||"'")},A=t=>globalThis.addEventListener("DOMContentLoaded",t),x=(t,e=document)=>e.querySelector(t),y=(t,e=document)=>Array.from(e.querySelectorAll(t)),R=t=>t.remove(),q=t=>{t.innerHTML=""},C=(...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},F={Store:c,ListStore:f,nu:E,mustache:v,template:O,escape:l,unescape:w,extend:h,insert:j,empty:q,rm:R,selectAll:y,select:x,onload:A,html:_,r:m,seq:C,MapStore:b};