campfire.js
Version:
a cozy web framework
2 lines (1 loc) • 7.43 kB
JavaScript
var h=Object.defineProperty,Z=Object.defineProperties,G=Object.getOwnPropertyDescriptor,J=Object.getOwnPropertyDescriptors,Q=Object.getOwnPropertyNames,A=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var I=(t,e,r)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,g=(t,e)=>{for(var r in e||(e={}))k.call(e,r)&&I(t,r,e[r]);if(A)for(var r of A(e))U.call(e,r)&&I(t,r,e[r]);return t},q=(t,e)=>Z(t,J(e));var W=(t,e)=>{for(var r in e)h(t,r,{get:e[r],enumerable:!0})},X=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Q(e))!k.call(t,s)&&s!==r&&h(t,s,{get:()=>e[s],enumerable:!(n=G(e,s))||n.enumerable});return t};var Y=t=>X(h({},"__esModule",{value:!0}),t);var oe={};W(oe,{ListStore:()=>c,MapStore:()=>m,Store:()=>o,default:()=>ie,empty:()=>S,escape:()=>a,extend:()=>d,html:()=>D,insert:()=>b,mustache:()=>y,nu:()=>_,onload:()=>T,r:()=>j,rm:()=>x,select:()=>v,seq:()=>w,store:()=>M,template:()=>P,unescape:()=>R});module.exports=Y(oe);var b=(t,e)=>{if(Object.keys(e).length!==1)throw new Error("Too many or too few positions specified.");let n="beforeend",s;return"after"in e?(n="afterend",s=e.after):"before"in e?(n="beforebegin",s=e.before):("into"in e&&e.at==="start"&&(n="afterbegin"),s=e.into),s.insertAdjacentElement(n,t),t},T=t=>globalThis.addEventListener("DOMContentLoaded",t),v=({selector:t,all:e,from:r})=>(r!=null||(r=document),e?Array.from(r.querySelectorAll(t)):[r.querySelector(t)]),x=t=>t.remove(),S=t=>{t.innerHTML=""};var a=t=>t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):"",R=t=>{if(!t)return"";let e=/&(?:amp|lt|gt|quot|#(0+)?39);/g,r={"&":"&","<":"<",">":">",""":'"',"'":"'"};return t.replace(e,n=>r[n]||"'")},w=(...t)=>{let e=0,r=t[0],n=1;typeof t[1]!="undefined"&&(e=t[0],r=t[1]),t[2]&&(n=t[2]);let s=[];for(let i=e;i<r;i+=n)s.push(i);return s};var ee=t=>document.createElement(t),te=t=>{var n;let e=t?t.match(/([0-9a-zA-Z\-]*)?(#[0-9a-zA-Z\-]*)?((.[0-9a-zA-Z\-]+)*)/):void 0,r=e?(n=e.slice(1,4))==null?void 0:n.map(s=>s?s.trim():void 0):Array(3).fill(void 0);return r&&r[1]&&(r[1]=r[1].replace(/#*/g,"")),e?{tag:r[0]||void 0,id:r[1]||void 0,classes:r[2]?r[2].split(".").filter(s=>s.trim()):void 0}:{}},E=class{constructor(e,r){this.props={};r&&(this.props=r),this.info=e}done(){let{tag:e,id:r,classes:n=[]}=te(this.info);if(n!=null&&n.some(i=>i.includes("#")))throw new Error("Error: Found # in a class name. Did you mean to do elt#id.classes instead of elt.classes#id?");e||(e="div");let s=ee(e);return r&&(s.id=r),n.forEach(i=>s.classList.add(i)),d(s,this.props)}content(e){return this.props.contents=e,this}attr(e,r){var n;return(n=this.props).attrs||(n.attrs={}),this.props.attrs[e]=r.toString(),this}attrs(e){return this.props.attrs=e,this}raw(e){return this.props.raw=e,this}misc(e,r){var n;return(n=this.props).misc||(n.misc={}),typeof e=="object"?this.props.misc=e:this.props.misc[e]=r,this}style(e,r){var n;return(n=this.props).style||(n.style={}),this.props.style[e]=r,this}styles(e){return this.props.style=e,this}on(e,r){var n;return(n=this.props).on||(n.on={}),this.props.on[e]=r,this}gimme(e){var r;return(r=this.props).gimme||(r.gimme=[]),Array.isArray(e)?this.props.gimme=e:this.props.gimme.push(e),this}};var K=t=>{let e={};for(let r in t)e[r]=t[r].value;return e},re=t=>!(!t||typeof t!="function"),d=(t,e={})=>{let{contents:r,misc:n,style:s,on:i={},attrs:F={},raw:z,gimme:B=[],deps:f={}}=e,u="";re(r)?(Object.entries(f).forEach(([l,$])=>{$.any(V=>{let L=r(K(f),{event:q(g({},V),{triggeredBy:l}),elt:t});L!==void 0&&(t.innerHTML=L)})}),u=r(K(f),{elt:t})||""):typeof r=="string"&&(u=r),u!=null&&u.trim()&&(t.innerHTML=z?u:a(u));let H=Object.values(f).map(p=>p.id);H.length&&t.setAttribute("data-cf-deps",H.join(",")),n&&Object.assign(t,n),s&&Object.assign(t.style,s),Object.entries(i).forEach(([p,l])=>t.addEventListener(p,l)),Object.entries(F).forEach(([p,l])=>t.setAttribute(p,l));let O=[];for(let p of B){let l=t.querySelector(p);O.push(l)}return[t,...O]},_=(t,e)=>new E(t,e);var C=new Set,N=()=>"cf-"+Math.random().toString(36).slice(2,8),ne=()=>{let t=N();for(;C.has(t);)t=N();return C.add(t),t},o=class{constructor(e){this.id=ne();this._subscribers={};this._subscriberCounts={};this._dead=!1;e&&(this.value=e)}on(e,r,n=!1){var s,i;return this._subscriberCounts[e]=this._subscriberCounts[e]||0,(i=(s=this._subscribers)[e])!=null||(s[e]={}),this._subscribers[e][this._subscriberCounts[e]]=r,n&&!["push","remove","mutation","setAt"].includes(e)&&r({type:"change",value:this.value}),this._subscriberCounts[e]++}any(e){this.on("append",e),this.on("change",e),this.on("clear",e),this.on("deletion",e)}unsubscribe(e,r){var n;(n=this._subscribers[e])==null||delete n[r]}update(e){this._dead||(this.value=e,this._sendEvent({type:"change",value:e}))}_sendEvent(e){if(this._dead)return;this._subscribers[e.type]=this._subscribers[e.type]||{};let r=this._subscribers[e.type];if(r)for(let n in Object.keys(r))r[n](e)}dispose(){this._dead=!0,this._subscribers={},this._subscriberCounts={}}};var c=class extends o{constructor(e){super(e)}clear(){this.value=[],this._sendEvent({type:"clear"})}push(e){return this.value.push(e),this._sendEvent({type:"append",value:e,idx:this.value.length-1}),this.value.length}remove(e){if(e<0||e>=this.value.length)throw new RangeError("Invalid index.");this._sendEvent({type:"deletion",idx:e,value:this.value.splice(e,1)[0]})}get(e){if(e<0||e>=this.value.length)throw new RangeError("Invalid index.");return this.value[e]}set(e,r){if(e<0||e>=this.value.length)throw new RangeError("Invalid index.");this.value[e]=r,this._sendEvent({type:"change",value:r,idx:e})}get length(){return this.value.length}};var m=class extends o{constructor(e){super(new Map);for(let[r,n]of Object.entries(e||{}))this.value.set(r,n)}set(e,r){this.value.set(e,r),this._sendEvent({key:e,value:r,type:"change"})}update(){}remove(e){this.value.delete(e),this._sendEvent({key:e,value:this.value,type:"deletion"})}clear(){this.value=new Map,this._sendEvent({type:"clear"})}transform(e,r){let n=this.value.get(e);if(!n)throw new Error(`ERROR: key ${e} does not exist in store!`);let s=r(n);this.set(e,s),this._sendEvent({type:"change",value:s,key:e})}get(e){return this.value.get(e)}has(e){return this.value.has(e)}entries(){return this.value.entries()}};function M(t){if("type"in t){if(t.type==="list")return new c(t.value);if(t.type==="map")return new m(t.value)}return new o(t.value)}var j=(t,e)=>{var r;return{raw:!0,contents:Array.isArray(t)?t.join((r=e==null?void 0:e.joiner)!=null?r:" "):t.toString()}},D=(t,...e)=>{let r=[];for(let n=0;n<t.length;n++){r.push(t[n]||"");let s=e[n];typeof s!="undefined"&&typeof s!="object"?r.push(a((s||"").toString())):r.push((s==null?void 0:s.contents)||"")}return r.join("")};var se=(t,e={})=>{let r=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,s,i){return`${s||""}${e[i]}`}).replace(r,"$1")},y=(t,e={},r=!0)=>{let n=g({},e);return r&&(n=Object.fromEntries(Object.entries(n).map(([s,i])=>[s,a(i)]))),se(t,n)},P=(t,e=!0)=>r=>y(t,r,e);var ie={ListStore:c,MapStore:m,Store:o,store:M,nu:_,mustache:y,template:P,escape:a,unescape:R,extend:d,insert:b,empty:S,rm:x,select:v,onload:T,html:D,r:j,seq:w};