jq79 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dom.d.ts +6 -1
- package/dist/jq79.cjs +11 -11
- package/dist/jq79.cjs.map +1 -1
- package/dist/jq79.global.js +11 -11
- package/dist/jq79.global.js.map +1 -1
- package/dist/jq79.js +11 -11
- package/dist/jq79.js.map +1 -1
- package/package.json +1 -1
- package/src/dom.ts +75 -7
- package/src/jq79.ts +90 -4
- package/src/transform.ts +163 -19
package/dist/dom.d.ts
CHANGED
|
@@ -4,4 +4,9 @@ export declare function $$(selector: string): Element[];
|
|
|
4
4
|
export declare function $$(el: Element, selector: string): Element[];
|
|
5
5
|
export declare const $create: (tag: string, attrs?: Record<string, any>) => HTMLElement;
|
|
6
6
|
export declare function isSafeUrl(value: string): boolean;
|
|
7
|
-
export
|
|
7
|
+
export type AllowUrl = (url: URL, tag: string, attr: string) => boolean;
|
|
8
|
+
export type SanitizeOptions = {
|
|
9
|
+
allowUrl?: AllowUrl;
|
|
10
|
+
};
|
|
11
|
+
export declare const allowedHosts: (patterns: string | string[]) => AllowUrl;
|
|
12
|
+
export declare function sanitizeHTML(html: string, options?: SanitizeOptions): string;
|
package/dist/jq79.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var z=Object.defineProperty;var
|
|
2
|
-
`,
|
|
3
|
-
`)return
|
|
4
|
-
`){let o=
|
|
5
|
-
`||i===";"||i==="}"?o=!0:/\s/.test(i)||(o=!1),
|
|
6
|
-
`||r===";"||r==="}"?s=!0:/\s/.test(r)||(s=!1),
|
|
7
|
-
`||
|
|
8
|
-
`)},
|
|
9
|
-
//# sourceURL=${
|
|
10
|
-
${
|
|
11
|
-
;$__exports.done = true })()${
|
|
1
|
+
var z=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var Qt=Object.prototype.hasOwnProperty;var Yt=(t,n,e)=>n in t?z(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var te=(t,n)=>{for(var e in n)z(t,e,{get:n[e],enumerable:!0})},ee=(t,n,e,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Vt(n))!Qt.call(t,r)&&r!==e&&z(t,r,{get:()=>n[r],enumerable:!(s=Jt(n,r))||s.enumerable});return t};var ne=t=>ee(z({},"__esModule",{value:!0}),t);var A=(t,n,e)=>Yt(t,typeof n!="symbol"?n+"":n,e);var Je={};te(Je,{$:()=>U,$$:()=>G,$create:()=>Z,$reactive:()=>B,Component79:()=>F,enableHotReload:()=>Kt,hotUpdate:()=>Zt,parseComponent:()=>Xe,renderComponent:()=>je});module.exports=ne(Je);function U(t,n){return typeof t=="string"?document.querySelector(t):t.querySelector(n)}function G(t,n){return Array.from(typeof t=="string"?document.querySelectorAll(t):t.querySelectorAll(n))}var Z=(t,n={})=>{let e=document.createElement(t);for(let[s,r]of Object.entries(n))if(s==="className")e.className=Array.isArray(r)?r.join(" "):r;else if(s==="textContent")e.textContent=r;else if(s==="children")for(let o of r)e.appendChild(o);else e.setAttribute(s,r);return e},se=new Set(["a","b","i","em","strong","p","br","ul","ol","li","blockquote","code","pre","span","div","h1","h2","h3","h4","h5","h6","img"]),yt={a:new Set(["href","title"]),img:new Set(["src","alt"]),"*":new Set(["class"])},re=new Set(["http:","https:","mailto:"]);function oe(t){try{let n=new URL(t,"https://example.com");return re.has(n.protocol)}catch{return!1}}var ie={"https:":"443","http:":"80"};function le(t){let n=t.trim().toLowerCase().match(/^([a-z\d*][a-z\d.*-]*?)(?::(\d{1,5}|\*))?$/);if(!n)return null;let[,e,s]=n,r=e.split(".");return r.some(i=>i!=="*"&&!/^[a-z\d-]+$/.test(i))?null:{host:new RegExp(`^${r.map(i=>i==="*"?"[^.]+":i).join("\\.")}$`),port:!s||s==="*"?null:s}}var bt=t=>{let n=(Array.isArray(t)?t:t.split(",")).map(le).filter(e=>e!==null);return e=>{let s=e.hostname.toLowerCase(),r=e.port||ie[e.protocol]||"";return n.some(o=>o.host.test(s)&&(o.port===null||o.port===r))}};function ce(t,n,e,s){try{return!!t(new URL(n,document.baseURI),e,s)}catch{return!1}}var Et=512;function wt(t,n,e,s){if(e>Et)throw new RangeError(`jq79: sanitizeHTML input nests deeper than ${Et} elements`);for(let r of Array.from(t.childNodes))if(r.nodeType===Node.ELEMENT_NODE){let o=ae(r,e,s);o&&n.appendChild(o)}else r.nodeType===Node.TEXT_NODE&&n.appendChild(r.cloneNode())}function ae(t,n,e){let s=t.tagName.toLowerCase();if(!se.has(s))return null;let r=document.createElement(s);for(let o of Array.from(t.attributes)){let i=o.name.toLowerCase(),l=yt[s]?.has(i),a=yt["*"]?.has(i);!l&&!a||(i==="href"||i==="src")&&(!oe(o.value)||e&&!ce(e,o.value,s,i))||r.setAttribute(i,o.value)}return s==="a"&&r.setAttribute("rel","noopener noreferrer"),wt(t,r,n+1,e),r}function St(t,n){let e=new DOMParser().parseFromString(t,"text/html"),s=document.createElement("div");return wt(e.body,s,0,n?.allowUrl),s.innerHTML}var fe=(t,n)=>n.split(".").reduce((e,s)=>e?.[s],t),Rt=t=>{if(Array.isArray(t))return!0;let n=Object.getPrototypeOf(t);return n===Object.prototype||n===null},$t=(t,n,e)=>{Object.entries(t).forEach(([s,r])=>{let o=n?`${n}.${s}`:s;r&&typeof r=="object"&&Rt(r)?$t(r,o,e):e(o,r)})},ue=(t,n)=>t===n||t.startsWith(`${n}.`)||n.startsWith(`${t}.`),nt=Symbol("jq79.raw"),K=t=>{let n=t;for(;n!==null&&typeof n=="object"&&n[nt];)n=n[nt];return n},xt=Symbol("jq79.store"),H=t=>t!==null&&typeof t=="object"&&t[xt]===!0,I=[],st=t=>{I.push(new Set);try{return t()}finally{I.pop()}},B=t=>{let n=new Map,e=new Set,s=new Set,r=new WeakMap,o=Object.create(null),i=(c,d,m=!1)=>{n.get(c)?.forEach(S=>S(d,c)),e.forEach(S=>S(c,d)),s.forEach(S=>{(m||Array.from(S.deps).some(C=>ue(C,c)))&&S.run()})},l=c=>c!==null&&typeof c=="object"&&Rt(c),a=new Map,p=(c,d)=>{let m=a.get(d);m?.store!==c&&(m?.unsubscribe(),a.set(d,{store:c,unsubscribe:c.$onAny((S,C)=>i(`${d}.${S}`,C))}))},f=c=>{a.get(c)?.unsubscribe(),a.delete(c)},h=(c,d)=>{let m=r.get(c);if(m)return m;let S=null,C=new Proxy(c,{has(x,y){return Reflect.has(x,y)||typeof y=="string"&&S?.has(y)===!0},get(x,y,b){if(y===nt)return x;if(y===xt)return d==="";if(typeof y!="string")return Reflect.get(x,y,b);if(d===""&&y in o)return o[y];let R=d?`${d}.${y}`:y;I[I.length-1]?.add(R);let _=Reflect.get(x,y,b);if(H(_))return p(_,R),_;let T=K(_);return l(T)?h(T,R):T},set(x,y,b,R){if(R!==C&&!Object.prototype.hasOwnProperty.call(x,y))return Reflect.set(x,y,b,R);let _=d?`${d}.${y}`:y,T=H(b)?b:K(b),P=!Object.prototype.hasOwnProperty.call(x,y);if(!P&&Object.is(x[y],T)&&(T===null||typeof T!="object"))return!0;x[y]=T,S?.delete(y),H(T)?p(T,_):f(_);let L=H(T)||!l(T)?T:h(T,_);return i(_,L,P),!0},deleteProperty(x,y){if(typeof y!="string")return Reflect.deleteProperty(x,y);let b=Object.prototype.hasOwnProperty.call(x,y),R=Reflect.deleteProperty(x,y);if(R&&b){let _=d?`${d}.${y}`:y;(S??(S=new Set)).add(y),f(_),i(_,void 0)}return R}});return r.set(c,C),C},g=h(K(t),"");Object.entries(K(t)).forEach(([c,d])=>{H(d)&&p(d,c)});let E=(c,d,{immediate:m=!1}={})=>(n.has(c)||n.set(c,new Set),n.get(c).add(d),m&&d(fe(g,c),c),()=>n.get(c)?.delete(d)),u=(c,{immediate:d=!1}={})=>(e.add(c),d&&$t(g,"",(m,S)=>c(m,S)),()=>e.delete(c)),w=c=>{let d=!1,m=!1,S={deps:new Set,run:()=>{if(d){m=!0;return}d=!0;try{let C=0;do{m=!1;let x=new Set;I.push(x);try{c()}finally{I.pop(),S.deps=x}}while(m&&++C<100);m&&console.error("jq79: an effect re-woke itself 100 times in a row (it writes what it reads); giving up on it settling")}finally{d=!1}}};return s.add(S),S.run(),()=>{s.delete(S)}},$=()=>{a.forEach(({unsubscribe:c})=>c()),a.clear()};return o.$on=E,o.$onAny=u,o.$effect=w,o.$dispose=$,g},W=t=>{let n=[],e=[];return{effect:s=>{n.push(t.$effect(s)),e.push(s)},onDispose:s=>{n.push(s)},refresh:()=>{e.forEach(s=>s())},dispose:()=>{n.splice(0).forEach(s=>s()),e.length=0}}};var Tt=/(?:let|var|const)(?:\s+(?=[A-Za-z_$])|\s*(?=[{[]))/y,Ct=/\$:\s*/y,J=/import(?=\s*\()/y,At=/\$:\s*([A-Za-z_$][\w$]*)\s*=(?!=)/y,j=(t,n)=>{let e=t[n],s=n+1;for(;s<t.length;){if(t[s]==="\\"){s+=2;continue}if(t[s]===e)return s+1;s++}return t.length},v=(t,n)=>{let e=t.indexOf(`
|
|
2
|
+
`,n);return e===-1?t.length:e},O=(t,n)=>{let e=t.indexOf("*/",n+2);return e===-1?t.length:e+2},X=(t,n)=>{let e=n;for(;e<t.length;){if(/\s/.test(t[e])){e++;continue}if(t[e]==="/"&&t[e+1]==="/"){e=v(t,e);continue}if(t[e]==="/"&&t[e+1]==="*"){e=O(t,e);continue}break}return e},de=new Set(["return","typeof","case","in","instanceof","new","delete","void","do","else","yield","await"]),M=(t,n)=>{let e=n-1;for(;e>=0;){let r=t[e];if(/\s/.test(r)){e--;continue}if(r==="/"&&t[e-1]==="*"){let o=t.lastIndexOf("/*",e-2);if(o===-1)return!0;e=o-1;continue}break}if(e<0)return!0;let s=t[e];if(/[\w$]/.test(s)){let r=e;for(;r>0&&/[\w$]/.test(t[r-1]);)r--;return de.has(t.slice(r,e+1))}return(s==="+"||s==="-")&&t[e-1]===s?!1:!")]}\"'`.".includes(s)},D=(t,n)=>{let e=n+1,s=!1;for(;e<t.length;){let r=t[e];if(r==="\\"){e+=2;continue}if(r===`
|
|
3
|
+
`)return e;if(r==="[")s=!0;else if(r==="]")s=!1;else if(r==="/"&&!s){for(e++;e<t.length&&/[a-z]/i.test(t[e]);)e++;return e}e++}return t.length},pe=/^(\?\.|\?\?|&&|\|\||\*\*|[.,+\-*/%&|^<>=?:([])/,he=(t,n)=>{let e=n-1;for(;e>=0;){let s=t[e];if(/\s/.test(s)){e--;continue}if(s==="/"&&t[e-1]==="*"){let r=t.lastIndexOf("/*",e-2);if(r===-1)return"";e=r-1;continue}return s}return""},Nt=(t,n)=>{let e=0,s=n;for(;s<t.length;){let r=t[s];if(r==="'"||r==='"'||r==="`"){s=j(t,s);continue}if(r==="/"&&t[s+1]==="/"){s=v(t,s);continue}if(r==="/"&&t[s+1]==="*"){s=O(t,s);continue}if(r==="/"&&M(t,s)){s=D(t,s);continue}if("([{".includes(r))e++;else if(")]}".includes(r))e--;else{if(e<=0&&r===";")return s;if(e<=0&&r===`
|
|
4
|
+
`){let o=X(t,s+1);if(!(o<t.length&&(pe.test(t.slice(o,o+2))||[",","="].includes(he(t,s)))))return s;s=o;continue}}s++}return t.length},me=t=>{let n=[],e=0,s=0,r=0,o=l=>{n.push({raw:t.slice(s,l),codeEnd:Math.max(0,r-s)}),s=l+1,r=s},i=0;for(;i<t.length;){let l=t[i];if(l==="'"||l==='"'||l==="`"){i=j(t,i),r=i;continue}if(l==="/"&&t[i+1]==="/"){i=v(t,i);continue}if(l==="/"&&t[i+1]==="*"){i=O(t,i);continue}if(l==="/"&&M(t,i)){i=D(t,i),r=i;continue}if("([{".includes(l))e++;else if(")]}".includes(l))e--;else if(l===","&&e<=0){o(i),i++;continue}/\s/.test(l)||(r=i+1),i++}return o(t.length),n},rt=t=>{let n=t.trim();if(!n.startsWith("{")&&!n.startsWith("["))return ot.test(n)?[n]:[];let e=[];for(let s of lt(n.slice(1,Lt(n)))){s.startsWith("...")&&(s=s.slice(3).trim());let r=ct(s);if(r!==-1&&(s=s.slice(0,r).trim()),n.startsWith("{")){let o=it(s,":");if(o!==-1){e.push(...rt(s.slice(o+1)));continue}}e.push(...rt(s))}return e},ge=t=>{let n=[],e=me(t).map(({raw:o,codeEnd:i})=>{let l=o.match(/^\s*/)[0];if(i<=l.length)return{text:o,empty:!0};let a=o.slice(l.length,i),p=o.slice(i),f=ct(a),h=(f===-1?a:a.slice(0,f)).trim(),g=a[0]==="{"||a[0]==="[";g?n.push(...rt(h)):ot.test(h)&&n.push(h);let E=Q(a).code;return{text:`${l}${g?`(${E})`:E}${p}`,empty:!1}}),s=[];for(;e.length&&e[e.length-1].empty;)s.unshift(e.pop().text);let r=e.map(o=>o.text).join(",")+s.join("");return r.trimStart().startsWith("(")&&(r=`;${r}`),{vars:n,code:r}},Q=t=>{let n=[],e="",s=0,r=0,o=!0;for(;s<t.length;){let i=t[s],l=t[s+1];if(i==="'"||i==='"'||i==="`"){let a=j(t,s);e+=t.slice(s,a),s=a,o=!1;continue}if(i==="/"&&(l==="/"||l==="*")){let a=l==="/"?v(t,s):O(t,s);e+=t.slice(s,a),s=a;continue}if(i==="/"&&M(t,s)){let a=D(t,s);e+=t.slice(s,a),s=a,o=!1;continue}if(i==="i"&&(s===0||!/[\w$.]/.test(t[s-1]))&&(J.lastIndex=s,J.test(t))){e+="$__import",s+=6,o=!1;continue}if(r===0&&o){Tt.lastIndex=s;let a=Tt.exec(t);if(a){let f=s+a[0].length,h=Nt(t,f),{vars:g,code:E}=ge(t.slice(f,h));n.push(...g),e+=E,s=h,o=!1;continue}Ct.lastIndex=s;let p=Ct.exec(t);if(p){At.lastIndex=s;let f=At.exec(t);f&&n.push(f[1]);let h=s+p[0].length,g=Nt(t,h);e+=`$__effect(() => { ${Q(t.slice(h,g)).code} });`,s=g;continue}}"([{".includes(i)?r++:")]}".includes(i)&&(r=Math.max(0,r-1)),i===`
|
|
5
|
+
`||i===";"||i==="}"?o=!0:/\s/.test(i)||(o=!1),e+=i,s++}return{vars:n,code:e}},V=/export\s+default(?![\w$])/y,_t=/import\s*(?:([\w$\s,{}*]+?)\s*from\s*)?(["'])([^"'\n]+)\2/y,ye=t=>{let n=[],e=0,s=0;for(let r=0;r<=t.length;r++){let o=t[r];if(o==="{")e++;else if(o==="}")e--;else if(r===t.length||o===","&&e===0){let i=t.slice(s,r).trim();i&&n.push(i),s=r+1}}return n},Ee=(t,n,e)=>{let s=`await $__import(${JSON.stringify(n)})`;if(t===void 0)return s;let r=ye(t),o=[],i=s;if(r.length>1){let l=`$__mod${e}`;o.push(`${l} = ${s}`),i=l}for(let l of r)l.startsWith("{")?o.push(`${l.replace(/\s+as\s+/g,": ")} = ${i}`):l.startsWith("*")?o.push(`${l.replace(/^\*\s*as\s+/,"")} = ${i}`):o.push(`${l} = $__default(${i})`);return`const ${o.join(", ")}`},ot=/^[A-Za-z_$][\w$]*$/,Lt=t=>{let n=0,e=0;for(;e<t.length;){let s=t[e];if(s==="'"||s==='"'||s==="`"){e=j(t,e);continue}if(s==="/"&&t[e+1]==="/"){e=v(t,e);continue}if(s==="/"&&t[e+1]==="*"){e=O(t,e);continue}if(s==="/"&&M(t,e)){e=D(t,e);continue}if("([{".includes(s))n++;else if(")]}".includes(s)&&--n===0)return e;e++}return t.length},it=(t,n)=>{let e=0,s=0;for(;s<t.length;){let r=t[s];if(r==="'"||r==='"'||r==="`"){s=j(t,s);continue}if(r==="/"&&t[s+1]==="/"){s=v(t,s);continue}if(r==="/"&&t[s+1]==="*"){s=O(t,s);continue}if(r==="/"&&r!==n&&M(t,s)){s=D(t,s);continue}if("([{".includes(r))e++;else if(")]}".includes(r))e--;else if(e===0&&r===n)return s;s++}return-1},lt=t=>{let n=[],e=0,s=0,r=0;for(;r<=t.length;){let o=t[r];if(o==="'"||o==='"'||o==="`"){r=j(t,r);continue}if(o==="/"&&t[r+1]==="/"){r=v(t,r);continue}if(o==="/"&&t[r+1]==="*"){r=O(t,r);continue}if(o==="/"&&M(t,r)){r=D(t,r);continue}if(o!==void 0&&"([{".includes(o))e++;else if(o!==void 0&&")]}".includes(o))e--;else if(r===t.length||o===","&&e===0){let i=t.slice(s,r).trim();i&&n.push(i),s=r+1}r++}return n},ct=t=>{let n=0;for(;n<t.length;){let e=it(t.slice(n),"=");if(e===-1)return-1;let s=n+e;if(t[s+1]!=="="&&t[s+1]!==">"&&t[s-1]!=="="&&t[s-1]!=="!")return s;n=s+1}return-1},at=t=>{let n=(t??"").trim();if(!n.startsWith("{"))return null;let e=Lt(n);if(e>=n.length)return null;let s=[];for(let r of lt(n.slice(1,e))){if(r.startsWith("..."))continue;let o=ct(r),i=o===-1?r:r.slice(0,o),l=o===-1?void 0:r.slice(o+1).trim(),a=it(i,":"),p=(a===-1?i:i.slice(0,a)).trim();ot.test(p)&&s.push(l===void 0?{name:p}:{name:p,default:l})}return s},be=t=>{let n=0,e=0,s=!0;for(;n<t.length;){let r=t[n];if(r==="'"||r==='"'||r==="`"){n=j(t,n),s=!1;continue}if(r==="/"&&t[n+1]==="/"){n=v(t,n);continue}if(r==="/"&&t[n+1]==="*"){n=O(t,n);continue}if(r==="/"&&M(t,n)){n=D(t,n),s=!1;continue}if(r==="e"&&e===0&&s&&(n===0||!/[\w$.]/.test(t[n-1]))){V.lastIndex=n;let o=V.exec(t);if(o)return n+o[0].length}"([{".includes(r)?e++:")]}".includes(r)&&(e=Math.max(0,e-1)),r===`
|
|
6
|
+
`||r===";"||r==="}"?s=!0:/\s/.test(r)||(s=!1),n++}return-1},we=/^async(?![\w$])/,Se=/^function(?![\w$])\s*\*?\s*[A-Za-z_$][\w$]*|^function(?![\w$])\s*\*?/,Re=t=>{let n=be(t);if(n===-1)return null;let e=X(t,n),s=t.slice(e);we.test(s)&&(e=X(t,e+5));let r=Se.exec(t.slice(e));if(r&&(e=X(t,e+r[0].length)),t[e]!=="(")return null;let o=0,i=e;for(;i<t.length;){let l=t[i];if(l==="'"||l==='"'||l==="`"){i=j(t,i);continue}if(l==="/"&&t[i+1]==="/"){i=v(t,i);continue}if(l==="/"&&t[i+1]==="*"){i=O(t,i);continue}if(l==="/"&&M(t,i)){i=D(t,i);continue}if("([{".includes(l))o++;else if(")]}".includes(l)&&--o===0)break;i++}return lt(t.slice(e+1,i))[0]??""},vt=t=>{let n=Re(t);if(n===null)return null;let e=at(n),s=e?.find(r=>r.name.startsWith("$"))?.name;if(s)throw new Error(`jq79: the factory signature is (props, ctx), so \`${s}\` can't be destructured from the first parameter. Write \`export default (props, { ${s} }) => \u2026\`, or \`_\` in place of props if the component takes none.`);return e},Ot=t=>{let n="",e=0,s=0,r=!0,o=!1,i=0;for(;e<t.length;){let l=t[e],a=t[e+1],p=e===0||!/[\w$.]/.test(t[e-1]);if(l==="'"||l==='"'||l==="`"){let f=j(t,e);n+=t.slice(e,f),e=f,r=!1;continue}if(l==="/"&&(a==="/"||a==="*")){let f=a==="/"?v(t,e):O(t,e);n+=t.slice(e,f),e=f;continue}if(l==="/"&&M(t,e)){let f=D(t,e);n+=t.slice(e,f),e=f,r=!1;continue}if(l==="i"&&p){if(J.lastIndex=e,J.test(t)){n+="$__import",e+=6,r=!1;continue}if(s===0&&r){_t.lastIndex=e;let f=_t.exec(t);if(f){n+=Ee(f[1],f[3],i++),e+=f[0].length,r=!1;continue}}}if(l==="e"&&p&&s===0&&r){V.lastIndex=e;let f=V.exec(t);if(f){o=!0,n+="$__exports.default =",e+=f[0].length,r=!1;continue}}"([{".includes(l)?s++:")]}".includes(l)&&(s=Math.max(0,s-1)),l===`
|
|
7
|
+
`||l===";"||l==="}"?r=!0:/\s/.test(l)||(r=!1),n+=l,e++}return o?n:null};var It=t=>Object.fromEntries(Array.from(t.attributes).map(n=>[n.name,n.value])),Wt=t=>({tag:t.tagName.toLowerCase(),attrs:It(t),children:Array.from(t.childNodes).flatMap(n=>{if(n.nodeType===Node.TEXT_NODE){let e=n.textContent??"";return e?[e]:[]}return n.nodeType===Node.ELEMENT_NODE?[Wt(n)]:[]})}),jt=new Map,$e=(t,n)=>{let e=`${n.join(",")}|${t}`,s=jt.get(e);if(s===void 0){try{s=new Function("$scope",...n,`with ($scope) { return (${t}); }`)}catch{s=null}jt.set(e,s)}return s},N=(t,n,e)=>{let s=$e(t,e?Object.keys(e):[]);if(s)try{return s(n,...e?Object.values(e):[])}catch{return}},xe=(t,n)=>t.replace(/{{\s*([\s\S]+?)\s*}}/g,(e,s)=>N(s,n)??""),Ht=new Set([":attrs",":class",":value",":checked",":selected",":if",":elseif",":else",":each",":key",":with",":text",":html",":html.allowed"]),Te=/^\s*\(?\s*(\w+)\s*(?:,\s*(\w+))?\s*\)?\s+in\s+([\s\S]+)$/,Ce=(t,n,e,s)=>{let[r,...o]=n.slice(1).split("."),i=new Set(o);t.addEventListener(r,l=>{if(i.has("self")&&l.target!==t)return;i.has("prevent")&&l.preventDefault(),i.has("stop")&&l.stopPropagation();let a=N(e,s,{$event:l});typeof a=="function"&&a.call(t,l)},{once:i.has("once"),capture:i.has("capture")})},Mt=t=>t.replace(/-(\w)/g,(n,e)=>e.toUpperCase()),ut=t=>t instanceof DocumentFragment?{first:t.firstChild,last:t.lastChild}:{first:t,last:t},Y=({first:t,last:n})=>{for(let e=t;e;){let s=e===n?null:e.nextSibling;e.parentNode?.removeChild(e),e=s}},Ae=({first:t,last:n},e)=>{let s=e.nextSibling;for(let r=t;r;){let o=r===n?null:r.nextSibling;e.parentNode.insertBefore(r,s),r=o}},Dt=(t,n)=>{let e=n.replace(/-/g,"").toLowerCase();for(let s=t;s&&s!==Object.prototype;s=Object.getPrototypeOf(s))for(let r of Object.keys(s))if(/^[A-Z]/.test(r)&&r.replace(/-/g,"").toLowerCase()===e)return r;return null},Pt=(t,n,e,s,r)=>{let o=document.createComment(t),i=document.createComment(`/${t}`),l=document.createDocumentFragment();l.append(o,i);let a={};Object.entries(n.attrs).forEach(([g,E])=>{if(!(g===ht||Ht.has(g)||g.startsWith("@")))if(g.startsWith(":")){let u=Mt(g.slice(1));a[u]=E||u}else a[Mt(g)]=JSON.stringify(E)});let p=null,f=null,h=null;return s.effect(()=>{let g=N(t,e),E=g instanceof F?g:null;if(E===f||(h?.dispose(),h=null,p?.destroy(),p=null,f=E,!E))return;let u=new F({template:E.template,scripts:E.scripts,styles:E.styles,modules:E.modules,filename:E.filename}),w=st(()=>Object.fromEntries(Object.entries(a).map(([d,m])=>[d,N(m,e)]))),$=document.createDocumentFragment();(r?u.renderShadow(w):u.render(w)).mount($),i.parentNode.insertBefore($,i);let c=W(e);Object.entries(a).forEach(([d,m])=>{c.effect(()=>{u.data[d]=N(m,e)})}),h=c,p=u}),s.onDispose(()=>{h?.dispose(),p?.destroy()}),l},Ne=(t,n)=>{let e=()=>{let s=N(t,n);return s!==null&&typeof s=="object"?s:null};return new Proxy(n,{has(s,r){let o=e();return o!==null&&Reflect.has(o,r)||Reflect.has(s,r)},get(s,r){let o=e();return o!==null&&Reflect.has(o,r)?o[r]:Reflect.get(s,r)},set(s,r,o){let i=e();return i!==null&&Reflect.has(i,r)?(i[r]=o,!0):Reflect.set(s,r,o)}})},tt=t=>typeof t=="string"?t.split(/\s+/).filter(Boolean):Array.isArray(t)?t.flatMap(tt):t!==null&&typeof t=="object"?Object.entries(t).flatMap(([n,e])=>e?tt(n):[]):[],_e=t=>typeof t=="function"?(n,e,s)=>{try{return!!t(n,e,s)}catch{return!1}}:typeof t=="string"||Array.isArray(t)?bt(t):()=>!1,dt=(t,n,e,s)=>{let r=t.attrs[":with"],o=r!==void 0?Ne(r,n):n,i=Dt(o,t.tag);if(i)return Pt(i,t,o,e,s);let l=document.createElement(t.tag);if(l instanceof HTMLUnknownElement||t.tag.includes("-")){let u=!1;e.effect(()=>{if(u)return;let w=Dt(o,t.tag);if(!w)return;u=!0;let $=Pt(w,t,o,e,s),c=ut($);e.onDispose(()=>Y(c)),l.replaceWith($)})}Object.entries(t.attrs).forEach(([u,w])=>{u.startsWith("@")?Ce(l,u,w,o):Ht.has(u)||l.setAttribute(u,w)});let a=t.attrs[":attrs"];if(a!==void 0){let u=[];e.effect(()=>{u.forEach($=>l.removeAttribute($));let w=N(a,o);u=w&&typeof w=="object"?Object.keys(w):[],u.forEach($=>{let c=w[$];c!=null&&c!==!1&&l.setAttribute($,String(c))})})}let p=t.attrs[":class"];if(p!==void 0){let u=new Set(tt(t.attrs.class??"")),w=[];e.effect(()=>{let $=tt(N(p,o));w.forEach(c=>{!$.includes(c)&&!u.has(c)&&l.classList.remove(c)}),l.classList.add(...$),w=$})}let f=t.attrs[":text"],h=t.attrs[":html"],g=t.attrs[":html.allowed"];g!==void 0&&h===void 0&&console.warn("jq79: :html.allowed without :html on the same element does nothing"),f!==void 0?e.effect(()=>{l.textContent=String(N(f,o)??"")}):h!==void 0?e.effect(()=>{let u=g!==void 0?{allowUrl:_e(N(g,o))}:void 0;l.innerHTML=St(String(N(h,o)??""),u)}):l.appendChild(pt(t.children,o,e,s));let E=t.attrs[":value"];return E!==void 0&&e.effect(()=>{let u=String(N(E,o)??"");l.value!==u&&(l.value=u)}),[":checked",":selected"].forEach(u=>{let w=t.attrs[u];if(w===void 0)return;let $=u.slice(1);e.effect(()=>{l[$]=!!N(w,o)})}),l},Le=(t,n,e,s)=>{let r=document.createComment("if"),o=document.createDocumentFragment();o.appendChild(r);let i=null,l=null,a=null;return e.effect(()=>{let p=t.find(h=>h.expr===void 0||N(h.expr,n))??null;if(p===l||(a?.dispose(),i&&Y(i),i=null,l=p,!p))return;a=W(n);let f=dt(p.node,n,a,s);i=ut(f),r.parentNode.insertBefore(f,r.nextSibling)}),o},q=(t,n,e)=>{Object.defineProperty(t,n,{value:e,writable:!0,enumerable:!0,configurable:!0})},ve=t=>{if(t===null||typeof t!="object"||Array.isArray(t))return!1;let n=Object.getPrototypeOf(t);return n===Object.prototype||n===null},Oe=(t,n,e,s)=>{let r=t.attrs[":each"].match(Te);if(!r)return document.createComment(`invalid :each expression "${t.attrs[":each"]}"`);let[,o,i,l]=r,a=t.attrs[":key"],{[":each"]:p,[":key"]:f,...h}=t.attrs,g={...t,attrs:h},E=document.createComment("each"),u=document.createDocumentFragment();u.appendChild(E),(":if"in t.attrs||":elseif"in t.attrs||":else"in t.attrs)&&console.warn("jq79: :if/:elseif/:else on a :each element is ignored; filter the list expression instead");let w=[],$=!1;return e.effect(()=>{let c=N(l,n),d=Array.isArray(c)?c.map((b,R)=>[R,b]):ve(c)?Object.entries(c):[],m=new Map;w.forEach(b=>{let R=m.get(b.key);R?R.push(b):m.set(b.key,[b])});let S=new Set,C=[],x=d.map(([b,R],_)=>{let T=Object.create(n);q(T,o,R),i&&q(T,i,b),q(T,"$index",_);let P=a!==void 0?N(a,T):b;S.has(P)&&!$&&($=!0,console.warn(`jq79: duplicate :key in :each "${t.attrs[":each"]}"; duplicates pair up by position`)),S.add(P);let L=m.get(P)?.shift();if(L&&Object.is(L.item,R))return L.scope.$index!==_&&C.push(L),q(L.scope,"$index",_),i&&q(L.scope,i,b),L;L&&(L.fx.dispose(),Y(L.range));let gt=W(n),Xt=ut(dt(g,T,gt,s));return{key:P,item:R,scope:T,fx:gt,range:Xt}});m.forEach(b=>b.forEach(R=>{R.fx.dispose(),Y(R.range)}));let y=E;x.forEach(b=>{y.nextSibling!==b.range.first&&Ae(b.range,y),y=b.range.last}),C.forEach(b=>st(()=>b.fx.refresh())),w=x}),u},pt=(t,n,e,s=!1)=>{let r=document.createDocumentFragment(),o=0;for(;o<t.length;){let i=t[o];if(typeof i=="string"){let l=document.createTextNode(i);i.includes("{{")&&e.effect(()=>{l.textContent=xe(i,n)}),r.appendChild(l),o++;continue}if(":each"in i.attrs){r.appendChild(Oe(i,n,e,s)),o++;continue}if(":if"in i.attrs){let l=[{expr:i.attrs[":if"],node:i}];o++;let a=f=>{let h=o;for(;h<t.length&&typeof t[h]=="string"&&!t[h].trim();)h++;let g=t[h];if(typeof g=="object"&&f in g.attrs)return o=h+1,g};for(let f=a(":elseif");f;f=a(":elseif"))l.push({expr:f.attrs[":elseif"],node:f});let p=a(":else");p&&l.push({node:p}),r.appendChild(Le(l,n,e,s));continue}r.appendChild(dt(i,n,e,s)),o++}return r},je=(t,n,e=!1)=>pt(t.template,n,W(n),e),Me=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),De=/<([A-Za-z][\w-]*)((?:"[^"]*"|'[^']*'|[^>"'])*?)\/>/g,Pe=/(<script[\s\S]*?<\/script\s*>|<style[\s\S]*?<\/style\s*>)/gi,ke=t=>t.split(Pe).map((n,e)=>e%2===1?n:n.replace(De,(s,r,o)=>Me.has(r.toLowerCase())?s:`<${r}${o}></${r}>`)).join(""),ht="data-jq79",Fe=t=>{let n=2166136261;for(let e=0;e<t.length;e++)n=Math.imul(n^t.charCodeAt(e),16777619);return(n>>>0).toString(36)},Bt=(t,n)=>{t.forEach(e=>{typeof e!="string"&&(e.attrs[ht]=n,Bt(e.children,n))})},Ue=(t,n)=>t.split(",").map(e=>{let s=e.trim(),r=s.indexOf("::"),o=r===-1?s:s.slice(0,r),i=r===-1?"":s.slice(r);return`${o}[${ht}="${n}"]${i}`}).join(", "),qt=(t,n)=>{Array.from(t).forEach(e=>{e instanceof CSSStyleRule?e.selectorText=Ue(e.selectorText,n):e instanceof CSSGroupingRule&&qt(e.cssRules,n)})},Ie=(t,n)=>{/:deep\(|::v-deep|>>>/.test(t)&&console.warn("jq79: :deep()/::v-deep/>>> are not supported in <style scoped>; the rule will be dropped by the browser");let e=new CSSStyleSheet;return e.replaceSync(t),qt(e.cssRules,n),Array.from(e.cssRules).map(s=>s.cssText).join(`
|
|
8
|
+
`)},ft=t=>{let e=new DOMParser().parseFromString(`<template>${ke(t)}</template>`,"text/html").querySelector("template"),s=[],r=[],o=[];Array.from(e.content.children).forEach(l=>{let a={attrs:It(l),content:l.textContent??""};l.tagName==="SCRIPT"?s.push(a):l.tagName==="STYLE"?r.push(a):o.push(Wt(l))}),r.forEach(l=>{"lang"in l.attrs&&console.warn(`jq79: <style lang="${l.attrs.lang}"> needs the jq79/vite plugin to compile it. This component didn't go through the bundler, so its styles were left uncompiled and the browser will ignore them.`)});let i=l=>"scoped"in l.attrs&&!("lang"in l.attrs);if(r.some(i)){let l=Fe(t);Bt(o,l),r.forEach(a=>{i(a)&&(a.scoped=Ie(a.content,l))})}return{template:o,scripts:s,styles:r}},mt=t=>/\.html?([?#]|$)/.test(t)?F.fetch(t):import(t),zt=(t,n)=>t?`
|
|
9
|
+
//# sourceURL=${t}?jq79-script=${n}`:"",kt=t=>t.scoped??t.content,et=new Map,We=t=>{let n=et.get(t);if(!n){let e=document.createElement("style");e.textContent=t,document.head.appendChild(e),n={el:e,count:0},et.set(t,n)}n.count++},He=t=>{let n=et.get(t);n&&--n.count<=0&&(n.el.remove(),et.delete(t))},Gt={$:U,$$:G,$create:Z,$reactive:B},Be=(t,n,e,s={},r=mt,o={})=>{let i={...Gt,...s},l=new Proxy(n,{has:(p,f)=>f!=="$__effect"&&f!=="$__import"&&(Reflect.has(p,f)||!(f in globalThis)&&!(f in i))});new Function("$scope","$__effect","$__import",...Object.keys(i),`return (async () => { with ($scope) { ${t} } })()${zt(o.filename,o.index??0)}`)(l,e,r,...Object.values(i)).catch(p=>console.error("jq79: error in :setup script",p))},Ft=(t,n)=>{n?.forEach(({name:e,default:s})=>{t[e]===void 0&&(t[e]=s===void 0?void 0:N(s,t))})},qe=t=>t&&t.default!==void 0?t.default:t,ze=(t,n,e,s={},r=mt,o={})=>{let i={...Gt,...s},l={},a=new Function("$__exports","$__default","$__import",...Object.keys(i),`return (async () => { "use strict";
|
|
10
|
+
${t}
|
|
11
|
+
;$__exports.done = true })()${zt(o.filename,o.index??0)}`)(l,qe,r,...Object.values(i)),p=g=>console.error("jq79: error in factory script",g),f=!1,h=()=>{if(f)return;f=!0;let g=l.default;if(typeof g!="function")return;let E=u=>{u&&typeof u=="object"&&Object.assign(n,u)};try{let u=g(n,{$data:n,$props:n,$effect:e,...s});u instanceof Promise?u.then(E).catch(p):E(u)}catch(u){p(u)}};a.then(h,p),l.done&&h()},Ge="__JQ79_HMR_ENABLED__",Ze="__JQ79_HMR__",k=null,Ke=t=>{if(!k||!t.filename)return;let n=k.get(t.filename);n||k.set(t.filename,n=new Set),n.add(new WeakRef(t))},Ut=t=>{try{return new URL(t,document.baseURI).pathname}catch{return t}},Zt=(t,n)=>{if(!k)return 0;let e=Ut(t),s=ft(n),r=0;for(let[o,i]of k)if(Ut(o)===e){for(let l of i){let a=l.deref();if(!a){i.delete(l);continue}a.hotReplace(s)&&r++}i.size||k.delete(o)}return r},Kt=()=>{k??(k=new Map),globalThis[Ze]={update:Zt}},F=class t{constructor(n,e={}){A(this,"template");A(this,"scripts");A(this,"styles");A(this,"modules");A(this,"filename");A(this,"data",null);A(this,"fx",null);A(this,"content",null);A(this,"startMarker",null);A(this,"endMarker",null);A(this,"styleEls",[]);A(this,"ownsSharedStyles",!1);A(this,"useShadow",!1);A(this,"mountRoot",null);A(this,"resolveMounted",null);A(this,"emitListeners",new Map);let s=typeof n=="string"?ft(n):n;this.template=s.template,this.scripts=s.scripts,this.styles=s.styles,this.modules=e.modules??(typeof n=="string"?void 0:n.modules),this.filename=e.filename??(typeof n=="string"?void 0:n.filename),Ke(this)}hotReplace(n){let e=typeof n=="string"?ft(n):n,s=this.startMarker,r=!!(s&&this.content),o=r&&s.isConnected,i=o?s.parentNode:null,l=o?this.endMarker.nextSibling:null,a={...this.data},p=this.useShadow;return r&&this.destroy(),this.template=e.template,this.scripts=e.scripts,this.styles=e.styles,!r||(this.renderWith(a,p),!i)?!1:(p&&this.styleEls.forEach(f=>i.insertBefore(f,l)),i.insertBefore(this.content,l),this.mountRoot=i,this.resolveMounted?.(),!0)}static async fetch(n){let e=await fetch(n);if(!e.ok)throw new Error(`failed to fetch component from ${n}: ${e.status}`);return new t(await e.text(),{filename:n})}on(n,e){return this.emitListeners.has(n)||this.emitListeners.set(n,new Set),this.emitListeners.get(n).add(e),this}off(n,e){return this.emitListeners.get(n)?.delete(e),this}render(n={}){return this.renderWith(n,!1)}renderShadow(n={}){return this.renderWith(n,!0)}renderWith(n,e){this.destroy();let s=B({...n}),r=W(s);this.data=s,this.fx=r,this.useShadow=e,this.startMarker=document.createComment("jq79"),this.endMarker=document.createComment("/jq79");let o=this.startMarker,i=(c,d)=>{let m=new CustomEvent(c,{detail:d,bubbles:!0,composed:!0}),S=o.dispatchEvent(m);return o===this.startMarker&&this.emitListeners.get(c)?.forEach(C=>C(m,d)),S},l,a=new Promise(c=>{l=c});this.resolveMounted=l;let p=()=>a,f=this.endMarker,h=c=>{let d=[];for(let m=o.nextSibling;m&&m!==f;m=m.nextSibling)m instanceof Element&&(m.matches(c)&&d.push(m),d.push(...Array.from(m.querySelectorAll(c))));return d},g=c=>h(c)[0]??null,E=this.modules,u=c=>E&&c in E?Promise.resolve(E[c]):mt(c),w=c=>`await $mounted();${c}`;this.scripts.forEach((c,d)=>{let m={$emit:i,$mounted:p,$self:g,$$self:h},S={filename:this.filename,index:d},C=Ot(c.content);if(C!==null){Ft(s,vt(c.content));let R=":mounted"in c.attrs?w(C):C;ze(R,s,r.effect,m,u,S);return}let{vars:x,code:y}=Q(c.content);Ft(s,at(c.attrs[":setup"])),x.forEach(R=>{R in s||(s[R]=void 0)});let b=":mounted"in c.attrs?w(y):y;Be(b,s,r.effect,m,u,S)});let $=document.createDocumentFragment();return $.append(this.startMarker,pt(this.template,s,r,e),this.endMarker),this.content=$,e?this.styleEls=this.styles.map(c=>{let d=document.createElement("style");return d.textContent=c.content,d}):(this.styles.forEach(c=>We(kt(c))),this.ownsSharedStyles=!0),this}mount(n,e){let s=typeof n=="string"?U(n):n;if(!s)throw new Error(`mount target not found: ${n}`);return(!this.content||e!==void 0)&&this.renderWith(e??{},this.useShadow),this.attach(s)}mountShadow(n,e){let s=typeof n=="string"?U(n):n;if(!s)throw new Error(`mount target not found: ${n}`);return(!this.content||e!==void 0||!this.useShadow)&&this.renderWith(e??{},!0),this.attach(s)}attach(n){this.mountRoot&&this.detach();let e=this.useShadow&&n instanceof Element?n.shadowRoot??n.attachShadow({mode:"open"}):n;return this.useShadow&&this.styleEls.forEach(s=>e.appendChild(s)),e.appendChild(this.content),this.mountRoot=e,this.resolveMounted?.(),this}detach(){if(!this.mountRoot||!this.content||!this.startMarker||!this.endMarker)return this;let n=this.startMarker;for(;n;){let e=n.nextSibling;if(this.content.appendChild(n),n===this.endMarker)break;n=e}return this.mountRoot=null,this}destroy(){return this.detach(),this.fx?.dispose(),this.fx=null,this.data?.$dispose(),this.styleEls.forEach(n=>n.parentNode?.removeChild(n)),this.styleEls=[],this.ownsSharedStyles&&(this.styles.forEach(n=>He(kt(n))),this.ownsSharedStyles=!1),this.content=null,this.startMarker=null,this.endMarker=null,this.data=null,this.resolveMounted=null,this}},Xe=t=>new F(t);typeof globalThis<"u"&&globalThis[Ge]&&Kt();0&&(module.exports={$,$$,$create,$reactive,Component79,enableHotReload,hotUpdate,parseComponent,renderComponent});
|
|
12
12
|
//# sourceMappingURL=jq79.cjs.map
|