jqlmodule
Version:
A JQuery alike es20xx module
15 lines (14 loc) • 28.7 kB
JavaScript
var Me="url('data:image/svg+xml\\3butf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20id%3D%22Layer_1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20128%20128%22%20style%3D%22enable-background%3Anew%200%200%20128%20128%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20x%3D%22-368%22%20y%3D%226%22%20style%3D%22display%3Anone%3Bfill%3A%23E0E0E0%3B%22%20width%3D%22866%22%20height%3D%221018%22%2F%3E%3Ccircle%20style%3D%22fill%3A%23FFFFFF%3B%22%20cx%3D%2264%22%20cy%3D%2264%22%20r%3D%2248%22%2F%3E%3Ccircle%20style%3D%22fill%3A%238CCFB9%3B%22%20cx%3D%2264%22%20cy%3D%2264%22%20r%3D%2239%22%2F%3E%3Ccircle%20style%3D%22fill%3Anone%3Bstroke%3A%23444B54%3Bstroke-width%3A6%3Bstroke-miterlimit%3A10%3B%22%20cx%3D%2264%22%20cy%3D%2264%22%20r%3D%2248%22%2F%3E%3Cpolyline%20style%3D%22fill%3Anone%3Bstroke%3A%23FFFFFF%3Bstroke-width%3A6%3Bstroke-linecap%3Around%3Bstroke-miterlimit%3A10%3B%22%20points%3D%2242%2C69%2055.55%2C81%20%20%2086%2C46%20%22%2F%3E%3C%2Fsvg%3E')",X=De(),me=Ne(),q=Re(),P=ke();function Re(){return{html:"accept,action,align,alt,autocapitalize,autocomplete,autopictureinpicture,autoplay,background,bgcolor,border,capture,cellpadding,cellspacing,checked,cite,class,clear,contenteditable,color,cols,colspan,controls,controlslist,coords,crossorigin,datetime,decoding,default,dir,disabled,disablepictureinpicture,disableremoteplayback,download,draggable,enctype,enterkeyhint,face,for,headers,height,hidden,high,href,hreflang,id,inputmode,integrity,ismap,kind,label,lang,list,loading,loop,low,max,maxlength,media,method,min,minlength,multiple,muted,name,nonce,noshade,novalidate,nowrap,open,optimum,pattern,placeholder,playsinline,poster,preload,pubdate,radiogroup,readonly,rel,required,rev,reversed,role,rows,rowspan,spellcheck,scope,selected,shape,size,sizes,span,srclang,start,src,srcset,step,style,summary,tabindex,target,title,translate,type,usemap,valign,value,width,xmlns,slot".split(","),svg:"accent-height,accumulate,additive,alignment-baseline,ascent,attributename,attributetype,azimuth,basefrequency,baseline-shift,begin,bias,by,class,clip,clippathunits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,cx,cy,d,dx,dy,diffuseconstant,direction,display,divisor,dur,edgemode,elevation,end,fill,fill-opacity,fill-rule,filter,filterunits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,fx,fy,g1,g2,glyph-name,glyphref,gradientunits,gradienttransform,height,href,id,image-rendering,in,in2,k,k1,k2,k3,k4,kerning,keypoints,keysplines,keytimes,lang,lengthadjust,letter-spacing,kernelmatrix,kernelunitlength,lighting-color,local,marker-end,marker-mid,marker-start,markerheight,markerunits,markerwidth,maskcontentunits,maskunits,max,mask,media,method,mode,min,name,numoctaves,offset,operator,opacity,order,orient,orientation,origin,overflow,paint-order,path,pathlength,patterncontentunits,patterntransform,patternunits,points,preservealpha,preserveaspectratio,primitiveunits,r,rx,ry,radius,refx,refy,repeatcount,repeatdur,restart,result,rotate,scale,seed,shape-rendering,specularconstant,specularexponent,spreadmethod,startoffset,stddeviation,stitchtiles,stop-color,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke,stroke-width,style,surfacescale,systemlanguage,tabindex,targetx,targety,transform,text-anchor,text-decoration,text-rendering,textlength,type,u1,u2,unicode,values,viewbox,visibility,version,vert-adv-y,vert-origin-x,vert-origin-y,width,word-spacing,wrap,writing-mode,xchannelselector,ychannelselector,x,x1,x2,xmlns,y,y1,y2,z,zoomandpan".split(",")}}function ke(){return{a:!0,area:!1,audio:!1,br:!0,base:!1,body:!1,button:!0,canvas:!1,dl:!0,data:!1,datalist:!0,div:!0,embed:!1,fieldset:!0,font:!1,form:!1,hr:!0,head:!1,output:!0,iframe:!1,frameset:!1,img:!0,input:!0,li:!0,label:!0,legend:!0,link:!1,map:!1,media:!1,meta:!1,meter:!0,ol:!0,object:!1,optgroup:!0,option:!0,p:!0,param:!0,picture:!1,pre:!0,progress:!1,quote:!0,script:!1,select:!0,source:!1,span:!0,style:!0,caption:!0,td:!0,col:!0,table:!0,tr:!0,template:!1,textarea:!0,time:!0,title:!0,track:!0,details:!0,ul:!0,video:!1,del:!0,ins:!0,slot:!1,blockquote:!0,svg:!0,dialog:!0,summary:!0,main:!0,address:!0,colgroup:!0,tbody:!0,tfoot:!0,th:!0,dd:!0,dt:!0,figcaption:!0,figure:!0,i:!0,b:!0,code:!0,h1:!0,h2:!0,h3:!0,h4:!0,abbr:!0,bdo:!0,dfn:!0,em:!0,kbd:!0,mark:!0,q:!0,rb:!0,rp:!0,rt:!0,ruby:!0,s:!0,strike:!0,samp:!0,small:!0,strong:!0,sup:!0,sub:!0,u:!0,var:!0,wbr:!0,nobr:!1,tt:!0,noscript:!0,comment:!1}}function De(){return["#logBox{min-width:0px;max-width:0px;min-height:0px;max-height:0px;,width:0;height:0;z-index:-1;border:none;padding:0px;overflow:hidden;transition:all 0.3s ease;position:fixed;}","#logBox.visible{background-color:rgb(255, 255, 224);z-index:1;position:static;border:1px dotted rgb(153, 153, 153);max-width:50vw;min-width:30vw;min-height:10vh;max-height:90vh;overflow:auto;width:50vw;height:20vh;margin:1rem 0px;padding:0px 8px 19px;resize:both;}","#logBox .legend{text-align:center;position:absolute;margin-top:-1em;width:inherit;max-width:inherit;}","#logBox .legend div{text-align:center;display:inline-block;max-width:inherit;height:1.2rem;background-color:rgb(119, 119, 119);padding:2px 10px;color:rgb(255, 255, 255);box-shadow:rgb(119 119 119) 2px 1px 10px;border-radius:4px;}","#logBox .legend div:before{content:'JQL Logging';}","#logBox #jql_logger{marginTop:0.7rem;lineHeight:1.4em;font-family:consolas,monospace;whiteSpace:pre-wrap;maxWidth:inherit;}"]}function Ne(){return[".popupContainer{position:fixed;inset:-5000px;opacity:0;height:0;width:0;background:rgba(0,0,0,0.1);transition:opacity 0.6s ease-in-out 0s;}",".popupContainer.popup-active{opacity:1;inset:0;height:auto;width:auto;}",".popupContainer .content{box-shadow:rgba(0,0,0,0.5) 2px 2px 8px;border-radius:3px;min-width:125px;max-width:40vw;max-height:40vh;padding:8px;overflow:auto;background:#FFF;z-index:inherit;opacity:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}",".popupContainer .content .popup-warn{position:relative;padding:3px 8px 0 8px;color:red;border-top:1px dashed rgb(0,0,0);margin:6px -8px -4px -8px;text-align:center;display:none;}",".popupContainer .content.popup-warn-active .popup-warn{display:block;}",`.closeHandleIcon{z-index:1;position:absolute;opacity:0;cursor:pointer;width:24px;height:24px;background:${Me} no-repeat;}`,".closeHandleIcon.popup-active{opacity:1;}","@media screen and (width < 1200px){.popupContainer .content{max-width:75vw;}}","@media screen and (width < 640px){.popupContainer .content{max-width:90vw;max-height:60vw;}}"]}var Y=!1,Ie={on:()=>Y=!0,off:()=>Y=!1},I={allowUnknownHtmlTags:Ie,isAllowed(e){if(Y)return!0;let t=e?.nodeName.toLowerCase()||"none";return!!P[t]},allowTag:e=>P[e.toLowerCase()]=!0,prohibitTag:e=>P[tag.toLowerCase()]=!1};var je=!1,_={data:/data-[\-\w.\p{L}]/ui,validURL:/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,whiteSpace:/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g,notAllowedValues:/javascript|injected|noreferrer|alert|DataURL/gi},Be=e=>{if(je&&Object.keys(e.removed).length){let t=Object.entries(e.removed).reduce((n,[r,s])=>[...n,`${r} => ${s}`],[]).join("\\000A");console.info("JQL HTML creation errors:"),console.info(t)}},pe=e=>{let t=document.createElement("template"),n={rawHTML:e.outerHTML,removed:{}};t.innerHTML=`<div id="placeholder">${e.outerHTML}</div>`;let r=t.content.querySelector("#placeholder");return r.querySelectorAll("*").forEach(s=>{let i=d(s,SVGElement)?q.svg:q.html;[...s.attributes].forEach(a=>{let u=a.name.trim().toLowerCase(),h=a.value.trim().toLowerCase().replace(_.whiteSpace,""),b=u==="href"?!_.validURL.test(h):_.notAllowedValues.test(h),y=u.startsWith("data")?!_.data.test(u):!!i[u];(b||y)&&(n.removed[`${a.name}`]=`attribute/property (-value) not allowed, remove (value: ${W(a.value||"none",60)})`,s.removeAttribute(a.name))}),I.isAllowed(s)||(n.removed[`<${s.nodeName.toLowerCase()}>`]=`not allowed, not rendered (tag: ${W(s.outerHTML,60)})`,s.remove())}),Be(n),r.children[0]};var L={BeforeBegin:"beforebegin",AfterBegin:"afterbegin",BeforeEnd:"beforeend",AfterEnd:"afterend"},K=document.createElement("div"),Oe=e=>(K.innerHTML=e.trim(),K.childNodes.length?pe(K):void 0),qe=(e,t,n)=>{switch(n){case L.BeforeBegin:t.parentElement?.insertBefore(e,t);break;case L.AfterBegin:t.insertBefore(e,t.firstElementChild);break;case L.AfterEnd:t.parentElement?.insertBefore(e,t.nextElementSibling);break;default:t.appendChild(e);break}},J=(e=[],t=document.body,n=L.BeforeEnd)=>e.reduce((r,s)=>{let i=R(s)&&ee(s,t,n);return i?[...r,i]:r},[]),ee=(e,t=document.body,n=L.BeforeEnd)=>(t=t?.isJQL?t?.[0]:t,d(e,Comment)?qe(e,t,n):t.insertAdjacentElement(n,e)),C=e=>{if(e=e.trim(),e.startsWith("<!--")&&e.endsWith("-->"))return document.createComment(e.replace(/<!--|-->$/g,""));let t=Oe(e);return t.children.length?t.children[0]:C(`<span data-jqlcreationerror="1">${A(e,60)}</span>`)};var re=!1,U=!1,Q=!0,V=!1,Je=!0,k="#jql_logger",Qe=e=>{X?.forEach(t=>e(t))},ge=()=>{X&&Qe(f.createStyle("JQLLogCSS"));let e=Je?"div":"pre",t=`<div id="logBox"><div class="legend"><div></div></div><${e} id="jql_logger"></${e}></div>`;return ee(C(t),void 0,L.AfterBegin),f.node(k)},ze=e=>d(e,String)&&Object.assign(document.createElement("textarea"),{innerHTML:e}).textContent||e,S=(...e)=>{if(!U)return;!Q&&!f.node("#jql_logger")&&ge();let t=n=>`${d(n,Object)?JSON.stringify(n,null,2):n}
`;e.forEach(n=>Q?console.log(ze(n)):f.node("#jql_logger").insertAdjacentHTML(V?"afterbegin":"beforeend",`${G()} ${t(n.replace(/\n/g,"<br>"))}`))},te={on(){U=!0,S("Logging activated")},off(){U=!1,console.log("Logging deactivated")}},ne={on(){re=!0},off(){re=!1}},j=(...e)=>re&&S(...e),E={};E={...E,isOn:()=>U,isVisible:()=>f("#jql_logger").is("visible"),on:()=>(te.on(),ne.on(),Q||(f.node(k)||ge())?.parentNode.classList.add("visible"),S(`Debug logging started. Every call to [jql instance] is logged (${V?"ascending: latest last":"descending: latest first"}).`),E),off:()=>{let e=f(k);return e.isEmpty||(ne.off(),S("Debug logging stopped"),e.parent.removeClass("visible")),te.off(),E},toConsole:{on:()=>(Q=!0,S("Debug logging to console activated"),E),off(){return Q=!1,S("Debug logging to document activated"),E}},remove:()=>(te.off(),ne.off(),f(k)?.remove(),console?.clear(),console.log(`${G()} logging completely disabled and all entries removed`),E),log:(...e)=>(S(...e),E),hide:()=>(f(k)?.parent?.removeClass("visible"),E),show:()=>(f(k)?.parent?.addClass("visible"),E),reversed:{on:()=>(V=!0,S("Reverse logging reset: now logging bottom to top (latest first)"),E),off:()=>(V=!1,S("Reverse logging reset: now logging top to bottom (latest last)"),E)},clear:()=>(f(k)?.text(""),console.clear(),S("Logging cleared"),E)};var Pe=[...Array(26)].map((e,t)=>String.fromCharCode(t+65)).concat([...Array(26)].map((e,t)=>String.fromCharCode(t+97))).concat([...Array(10)].map((e,t)=>`${t}`)),_e="Invalid parameter(s)",Z=(e,t=2)=>`${e}`.padStart(t,"0"),We=(e,...t)=>!!t.find(n=>d(e,n)),Ve=(e,t=0)=>([e,t]=[Math.floor(e),Math.ceil(t)],Math.floor([...crypto.getRandomValues(new Uint32Array(1))].shift()/2**32*(e-t+1)+t)),Ue=e=>{let t=e.length;for(;t--;){let n=Ve(t);[e[t],e[n]]=[e[n],e[t]]}return e};var A=(e,t=120)=>e.trim().slice(0,t).replace(/>\s+</g,"><").replace(/</g,"<").replace(/\s{2,}/g," ").replace(/\n/g,"\\n")+(e.length>t?" …":"").trim(),B=e=>e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`).replace(/^-|-$/,""),Ge=([e,...t])=>`${e.toUpperCase()}${t.join("")}`,fe=e=>d(e,String)?e.toLowerCase().split("-").map((t,n)=>n&&`${Ge(t)}`||t).join(""):e,d=(e,...t)=>{if(t.length>1)return We(e,...t);t=t.shift();let n=e===0?Number:e===""?String:e?Object.getPrototypeOf(e)?.constructor:{name:_e};return t?t===n?.__proto__||t===n:n?.name},z=()=>`_${Ue(Pe).slice(0,8).join("")}`,W=(e,t=120)=>A(e,t).replace(/</g,"<"),G=()=>(e=>`[${Z(e.getHours())}:${Z(e.getMinutes())}:${Z(e.getSeconds())}.${Z(e.getMilliseconds(),3)}]`)(new Date);var he=e=>e.replace(/</g,"<");function ye(){let e=function(i){if(!i)return;let p=i.style,a=getComputedStyle(i),u=[p.visibility,a.visibility].includes("hidden"),h=[p.display,a.display].includes("none"),b=i.offsetTop<0||i.offsetLeft+i.offsetWidth<0||i.offsetLeft>document.body.offsetWidth,y=+a.opacity==0||+(p.opacity||1)==0;return!(b||y||h||u)},t=function(i){return!!f.nodes(":is(:read-write)",i.parentNode).find(p=>p===i)},n=function(i){return!!f.nodes(":is(:modal)",i.parentNode).find(p=>p===i)},r="n/a",s={writable:r,modal:r,empty:!0,open:r,visible:r};return i=>{let p=i[0];return p?{get writable(){return t(p)},get modal(){return n(p)},get open(){return p.open},get visible(){return e(p)},get disabled(){return p.hasAttribute("readonly")||p.hasAttribute("disabled")},get empty(){return!1},get virtual(){return i.isVirtual}}:s}}var x=(e,t)=>{let n=e.collection.filter(r=>!se(r));for(let r=0;r<n.length;r+=1)t(n[r],r);return e},Ze=ye(),xe=e=>e&&(e.textContent=""),Xe=(e,t)=>e.toLowerCase().trim()===t.trim().toLowerCase(),be=(e,t)=>{e&&d(t,Object)&&Object.entries(t).forEach(([n,r])=>e.setAttribute(`data-${B(n)}`,r))},ve=e=>q.html.find(t=>e===t),Ye=(e,t,n)=>{n&&d(t,String)&&(t={[t]:n==="-"?"":n});let r;t.className&&(r=t.className,delete t.className),r=[...e.classList].find(i=>i.startsWith("JQLClass-")||r&&i===r)||r||`JQLClass-${z().slice(1)}`,f.editCssRule(`.${r}`,t),e.classList.add(r)},Ke=(e,t)=>{e&&Object.entries(t).forEach(([n,r])=>{if(n.toLowerCase().startsWith("data"))return be(e,r);if(Xe(n,"class"))return r.split(/,/).forEach(s=>e.classList.add(`${s.trim()}`));if(d(r,String)&&ve(n))return e[n]=r})},oe=(e,t)=>{d(t,Object)&&Object.entries(t).forEach(([n,r])=>{let s;/!important/i.test(r)&&(r=r.slice(0,r.indexOf("!")).trim(),s="important"),e.style.setProperty(B(n),r,s)})},et={get(e,t){return e[fe(t)]||e[t]}},tt={factoryExtensions:{is:e=>Ze(e),length:e=>e.collection.length,dimensions:e=>e.first()?.getBoundingClientRect(),parent:e=>e.collection.length&&f(e.first()?.parentNode)||e,outerHtml:e=>(e.first()||{outerHTML:void 0}).outerHTML,data:e=>({get all(){return new Proxy(e[0]?.dataset??{},et)},get:(t,n)=>e.data.all[t]??n,add:(t={})=>(!e.is.empty&&d(t,Object)&&Object.entries(t).forEach(([n,r])=>e.setData({[n]:r})),e),remove:t=>(e[0]?.removeAttribute(`data-${B(t)}`),e)}),Style:e=>({get computed(){return e.is.empty?{}:getComputedStyle(e[0])},inline:t=>e.style(t),inSheet:t=>e.css(t),valueOf:t=>e.is.empty?void 0:getComputedStyle(e[0])[B(t)],byRule:({classes2Apply:t=[],rules:n=[]}={})=>((n?.length||t?.length)&&(n?.length&&f.editCssRules(...n),t?.forEach(r=>e.addClass(r))),e)}),HTML:e=>({get:(t,n)=>{if(e.is.empty)return"NO ELEMENTS IN COLLECTION";let r=t?e.outerHtml:e.html();return n?he(r):r},replace:t=>(e.is.empty||e.html(t),e),append:t=>(e.is.empty||e.html(t,!0),e),insert:t=>(e.is.empty||e.html(`${t.isJQL?t.HTML.get(!0):t}${e.HTML.get()}`),e)})},instanceExtensions:{isEmpty:e=>e.collection.length<1,replaceClass:(e,t,...n)=>x(e,r=>{r.classList.remove(t),n.forEach(s=>r.classList.add(s))}),removeClass:(e,...t)=>x(e,n=>n&&t.forEach(r=>n.classList.remove(r))),addClass:(e,...t)=>x(e,n=>n&&t.forEach(r=>n.classList.add(r))),setData:(e,t)=>x(e,n=>be(n,t)),show:e=>x(e,t=>oe(t,{display:"revert-layer !important"})),hide:e=>x(e,t=>oe(t,{display:"none !important"})),empty:e=>x(e,xe),clear:e=>x(e,xe),style:(e,t,n)=>x(e,s=>{n&&d(t,String)&&(t={[t]:n||"none"}),oe(s,t)}),toggleClass:(e,t)=>x(e,n=>n.classList.toggle(t)),css:(e,t,n)=>x(e,r=>Ye(r,t,n)),text:(e,t,n=!1)=>e.isEmpty()?e:d(t,String)?x(e,s=>s.textContent=n?s.textContent+t:t):e.first().textContent,removeAttribute:(e,t)=>x(e,n=>n.removeAttribute(t)),each:(e,t)=>x(e,t),remove:(e,t)=>{let n=r=>r.remove();if(t){let r=e.find$(t);!r.isEmpty()&&x(r,n);return}x(e,n)},computedStyle:(e,t)=>e.first()&&getComputedStyle(e.first())[t],getData:(e,t,n)=>e.first()&&e.first().dataset?.[t]||n,hasClass:(e,...t)=>{let n=e.first();return e.isEmpty()||!n.classList.length?!1:t.find(r=>n.classList.contains(r))&&!0||!1},replace:(e,t,n)=>{let r=e.first();return!t||!n?(console.error("JQL replace: nothing to replace"),e):(n.isJQL&&(n=n.first()),d(n,NodeList)&&(n=n[0]),r&&t&&(t=d(t,String)?r.querySelectorAll(t):t.isJQL?t.collection:t,d(t,HTMLElement,NodeList,Array)&&d(n,HTMLElement)&&(d(t,HTMLElement)?[t]:[...t]).forEach(s=>s.replaceWith(n.cloneNode(!0)))),e)},replaceMe:(e,t)=>(t=d(t,HTMLElement)?f(t):t,e.parent.replace(e,t),f(t)),val:(e,t)=>{let n=e[0];return!n||!d(n,HTMLInputElement,HTMLSelectElement,HTMLTextAreaElement)?e:t===void 0?n.value:(n.value=d(t,String)?t:"",e)},attr:(e,t,n)=>!n&&d(t,String)?t==="class"?[...e[0]?.classList].join(" "):e[0]?.getAttribute(t):(d(t,String)&&n&&(t={[t]:n}),d(t,Object)&&!e.is.empty&&Ke(e[0],t),e),append:(e,...t)=>{if(!e.is.empty&&t.length)for(let n of t){if(d(n,String))return x(e,r=>r.append(C(n)));if(R(n))return x(e,r=>r.append(n.cloneNode(!0)));if(n.isJQL&&!n.is.empty){let r=n.collection.slice();n.remove(),delete n.collection,n.collection=[],r.forEach(s=>x(e,i=>i.append(s.cloneNode(1))))}}return e},prepend:(e,...t)=>{if(!e.isEmpty()&&t)for(let n of t){if(d(n,String))return x(e,r=>r.insertBefore(C(n),r.firstChild));if(R(n))return x(e,r=>r.insertBefore(n.cloneNode(!0),r.firstChild));if(n.isJQL&&!n.is.empty){let r=n.collection.slice();n.remove(),delete n.collection,n.collection=[],r.forEach(s=>x(e,i=>i.prepend(s.cloneNode(1))))}}return e},appendTo:(e,t)=>(t.isJQL||(t=f(t)),t.append(e)),prependTo:(e,t)=>(t.isJQL||(t=f.virtual(t)),t.prepend(e),e),single:(e,t)=>e.collection.length>0?d(t,String)?e.find$(t):d(t,Number)?f(e.collection[t]):f(e.collection[0]):e,toNodeList:e=>{let t=document.createElement("div");for(let n of e.collection){let r=document.importNode(n,!0);r.removeAttribute("id"),t.append(r)}return t.childNodes},duplicate:(e,t=!1,n=document.body)=>{let r=f.virtual(...e.toNodeList());return t?r.toDOM(n):r},toDOM:(e,t=document.body,n=L.BeforeEnd)=>(e.collection=J(e.collection,t,n),e.isVirtual&&(e.isVirtual=!1),e),first:(e,t=!1)=>{if(e.collection.length>0)return t?e.single():e.collection[0]},first$:(e,t)=>e.single(t),find:(e,t)=>e.first()?.querySelectorAll(t)||[],find$:(e,t)=>{let n=e.collection.reduce((r,s)=>[...r,[...s.querySelectorAll(t)]],[]).flat().filter(r=>d(r,HTMLElement));return n.length&&f(n)||f()},prop:(e,t,n)=>n&&!ve(t)?e:n?x(e,r=>r[t]=n):e[0]?.[t],on:(e,t,...n)=>(e.collection.length&&n?.forEach(r=>{let s=Le(e);f.delegate(t,s,r)}),e),html:(e,t,n)=>{if(t===void 0)return e[0]?.innerHTML;if(!e.isEmpty()){let r=C(`<div>${t.isJQL?t.HTML.get(!0):t}</div>`);if(!d(r,Comment))return x(e,i=>i.innerHTML=n?i.innerHTML+r.innerHTML:r.innerHTML)}return e},htmlFor:(e,t,n="",r=!1)=>{if(t&&e.collection.length){let s=e.find$(t);if(!s)return e;if("{htmlValue}".trim().length<1)return s.textContent="",e;let i=C(`<div>${n}</div>`);i&&s.html(i.innerHTML,r)}return e},trigger:(e,t,n=Event,r={})=>{if(e.collection.length){let s=new n(t,{...r,bubbles:r.bubbles??!0});for(let i of e.collection)i.dispatchEvent(s)}return e}}},ie=tt;var Ee=nt;function nt(e){let t=e.createStyle("JQLPopupCSS");me.forEach(c=>t(c));let n,r,s,i,p=e.virtual('<div class="popup-warn"></div>'),a=e('<div class="popupContainer">').append(e('<span class="closeHandleIcon">'),e('<div class="content">')),[u,h]=[e(".popupContainer .closeHandleIcon"),e(".popupContainer .content")],b=()=>{if(u.hasClass("popup-active")){let{x:c,y:m,width:o}=h.dimensions;u.style({top:`${m-12}px`,left:`${c+o-12}px`})}},y=(c,m=!1)=>{let o=m?c.min-100:c.max+10;a.style({zIndex:o}),u.style({zIndex:o+1})},w=()=>{s&&e(".popup-warn").clear().append(e(`<div>${s}</div>`)),h.addClass("popup-warn-active")},H=()=>{n=!1,M(u[0])},F=()=>{let c=[0,...e.nodes("*:not(.popupContainer, .closeHandleIcon)",document.body).map(m=>+getComputedStyle(m).zIndex).filter(m=>e.IS(m,Number))];return{max:Math.max(...c)??0,min:Math.min(...c)??0}},T=(c,m)=>i=setTimeout(()=>{M(u[0]),e.IS(m,Function)&&m(),m=!1},+c*1e3);return y(F(),!0),e.delegate("click",".popupContainer, .closeHandleIcon",c=>M(c.target)),e.delegate("click",".popupContainer .content",(c,m)=>n&&m.removeClass("popup-warn-active")),e.delegate("resize",b),{show:$,create:(c,m,o,l)=>{let g=e.IS(m,Boolean)?m:!1;$({content:c,modal:g,callback:g?o:m,warnMessage:l})},createTimed:(c,m,o)=>$({content:c,closeAfter:m,callback:o}),removeModal:H};function $({content:c,modal:m,closeAfter:o,callback:l,warnMessage:g}){if(c){clearTimeout(i),y(F()),n=m??!1,s=e.IS(g,String)&&`${g?.trim()}`.length||g?.isJQL?g:void 0,h.clear().append(c.isJQL?c:e(`<div>${c}</div>`)),n&&h.append(p.duplicate()),a.addClass("popup-active"),r=l,n||(u.addClass("popup-active"),b(),e.IS(+o,Number)&&T(o));return}return console.error("Popup creation needs at least some text to show")}function M(c){return!n&&!c.closest(".content")?(clearTimeout(i),h.clear(),e(".popup-active").removeClass("popup-active"),y(F(),!0),e.IS(r,Function)&&r(),s="",r=!1):n&&w()}}var D={},rt=["load","unload","scroll","focus","blur","DOMNodeRemovedFromDocument","DOMNodeInsertedIntoDocument","loadstart","progress","error","abort","load","loadend","pointerenter","pointerleave","readystatechange"],ot=e=>!!rt.find(t=>t===e),Se=()=>{let e=r=>D[r.type].forEach(s=>s(r)),t=(r,s)=>i=>{let p=i.target?.closest?.(r);return p&&s(i,f(p))},n=(r,s)=>{D[r]||addEventListener(r,e,ot(r))};return(r,s,i,p=!1)=>{n(r,p);let a=s?t(s,i):i;D=D[r]?{...D,[r]:D[r].concat(a)}:{...D,[r]:[a]}}};var ae=it;function it({styleSheet:e,createWithId:t}){let{cssRuleFromText:n,checkAtRules:r,toDashedNotation:s,IS:i,shortenRule:p,consider:a,ruleExists:u,checkParams:h,atMedia2String:b,sheet:y,compareSelectors:w}=st({styleSheet:e,createWithId:t}),H=(c,m)=>{if(c&&m.removeProperties){Object.keys(m.removeProperties).forEach(o=>{c.style.removeProperty(o)});return}Object.entries(m).forEach(([o,l])=>{let g;/!important/.test(l)&&(l=l.slice(0,l.indexOf("!important")).trim(),g="important"),c.style.setProperty(s(o),l,g)})},F=(c,m,o=y)=>{if(!i(c,String)||!c.trim().length||/[;,]$/g.test(c.trim()))return console.error(`StylingFactory instance (setRules): [${c||"[no selector given]"}] is not a valid selector`);let l=u(c,!0),g=l||o.cssRules[o.insertRule(`${c} {}`,o.cssRules.length||0)];if(m.removeRule){if(!l)return console.error(`Remove rule: ${c} does not exist`);let v=[...y.rules].findIndex(N=>w(N.selectorText||"",c));return a(()=>y.deleteRule(v))}return a(()=>H(g,m),c,l)},T=c=>{let m=c.trim().split(/{/,2),o=m.shift().trim();if(!i(o,String)||!o.trim())return console.error(`StylingFactory instance (doParse): no (valid) selector could be extracted from rule ${p(c)}`);let l=n(m.shift());return F(o,l)},$=c=>{let m=r(c);return m.done?m.existing:T(c)},M=(c,m)=>c.trim().startsWith("@media")?$(b(c,m)):F(c,m);return(c,m={})=>h(c,m)&&(Object.keys(m).length?M(c,m):$(c))}function st({styleSheet:e,createWithId:t}){let n="Note: The rule or some of its properties may not be supported by your browser (yet)",r=o=>o.replace(/([*\[\]()-+{}.$?\\])/g,"\\$1");e=t?(o=>document.querySelector(`#${o}`)?.sheet??document.head.insertAdjacentElement("beforeend",Object.assign(document.createElement("style"),{id:o,type:"text/css"})).sheet)(t):e;let i=(o,...l)=>{let g=l.length&&Array.isArray(l.slice(-1))?l.pop().join(""):"";return new RegExp((l.length&&o.raw.reduce((v,N,Te)=>v.concat(l[Te-1]||"").concat(N),"")||o.raw.join("")).split(`
`).map(v=>v.replace(/\s|\/\/.*$/g,"").trim().replace(/(@s!)/g," ")).join(""),g)},p=(o,l)=>[...e.rules].find(g=>l?H(g.selectorText||"",o):i`${r(o)}${[..."gim"]}`.test(g.cssText)),a=o=>/@import|@charset|@font-face/i.test(o)?{existing:$(o,0),done:!0}:b.test(o)?{ok:$(o,e.cssRules.length),done:!0}:{ok:!1,done:!1},u=(o,...l)=>!!l.find(g=>h(o,g)),h=(o,...l)=>{if(l.length>1)return u(o,...l);l=l.shift();let g="Invalid parameter(s)",v=o===0?Number:o===""?String:o?Object.getPrototypeOf(o)?.constructor:{name:g};return l?l===v?.__proto__||l===v:v?.name??g},b=i`@keyframes | @font-feature-values | @font-palette-values
| @layer | @namespace | @page | @counter-style | @container | @media ${["i"]}`,y=o=>(o=/\n/.test(o)?o:o.split(";").join(`;
`),o.trim().replace(/[}{]/,"").split(`
`).map(l=>l.trim()).filter(l=>l).reduce((l,g)=>{let[v,N]=[g.slice(0,g.indexOf(":")).trim(),g.slice(g.indexOf(":")+1).trim().replace(/;$|;.+(?=\/*).+\/$/,"")];return v&&N?{...l,[v]:N}:l},{})),w=o=>o.replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`).replace(/[^--]^-|-$/,""),H=(o,l)=>o?.replace("::",":")===l?.replace("::",":"),F=(o,l)=>o&&h(o,String)&&o.trim().length&&h(l,Object)||(console.error("StylingFactory instance called with invalid parameters"),!1),T=o=>{let l=(o||"NO RULE").trim().slice(0,50).replace(/\n/g,"\\n").replace(/\s{2,}/g," ");return o.length>l.length?`${l.trim()}...truncated`:l},$=o=>{o=o.trim();let l=!!p(o.slice(0,o.indexOf("{")));try{return e.insertRule(`${o}`,e.cssRules.length),l}catch(g){return console.error(`StylingFactory instance (tryParse) ${g.name} Error:
${g.message}
Rule: ${T(o)}
${n}`),l}},M=(o,l,g)=>{try{return o(),g}catch(v){return console.error(`StylingFactory instance (tryAddOrModify) ${v.name} Error:
${v.message}
Rule: ${T(l)}
${n}`),g}},c=o=>Object.entries(o).map(([l,g])=>`${l}: ${g.trim()}`).join(`;
`);return{sheet:e,cssRuleFromText:y,checkAtRules:a,ruleExists:p,atMedia2String:(o,l)=>`${o.trim()} ${Object.entries(l).map(([g,v])=>`${g}: { ${c(v)}`)}`,compareSelectors:H,toDashedNotation:w,checkParams:F,tryParse:$,consider:M,IS:h,shortenRule:T}}var ce=ie.instanceExtensions,we=ie.factoryExtensions,se=e=>d(e,Comment,Text),R=e=>d(e,Text,HTMLElement,Comment),de=e=>d(e,String)&&/^<|>$/.test(`${e}`.trim()),Ce=e=>d(e,Array)&&!e?.find(t=>!de(t)),ue=e=>d(e,Array)&&!e?.find(t=>!R(t)),at=e=>d(e,Comment),$e=e=>e?.filter(t=>t).reduce((t,n)=>t.concat(at(n)?`<!--${n.textContent}-->`:se(n)?n.textContent:n.outerHTML),""),Ae=e=>e?d(e,NodeList)?[...e]:R(e)?[e]:ue(e)?e:e.isJQL?e.collection:void 0:[],He=(e,t,n)=>{let r=t!==document.body&&d(e,String)&&e.toLowerCase()!=="body"?t:document,s;try{n.collection=[...r.querySelectorAll(e)]}catch{s=`Invalid CSS querySelector. [${e}]`}return s??`CSS querySelector "${e}", output ${n.collection.length} element(s)`},Le=e=>{let t=e.first().dataset.hid||`HID${z()}`;return e.setData({hid:t}),`[data-hid="${t}"]`},O=e=>{let t=i=>(...p)=>d(i,Function)&&i(O(e),...p),n=i=>(...p)=>d(i,Function)?{tmpKey:i(O(e),...p)}:{tmpKey:void 0},r=i=>we[i]?n(we[i])().tmpKey:ce[i]&&t(ce[i]),s={get:(i,p)=>r(p)??(/^\d+$/.test(`${p}`)?i.collection?.[p]:i[p])};return new Proxy(e,s)};var le=ae({createWithId:"JQLStylesheet"}),lt=(e,t)=>ce[e]=(n,...r)=>t(n,...r),ct,Fe=e=>{let t=dt(e);return Object.entries(t).forEach(([n,r])=>e[n]=r),ct=t,e};function dt(e){let t=document.createElement("br"),n=(...a)=>a.forEach(u=>le(u)),r=(a,u)=>le(a,u),s=(a,u,h)=>{u=u?.isJQL?u?.[0]:u,h=h&&Object.values(L).find(y=>h===y)?h:void 0;let b=e(a,t);return u&&b.collection.forEach(y=>h?u.insertAdjacentElement(h,y):u.append(y)),b},i=Se();return{debugLog:E,log:S,insertPositions:L,at:L,editCssRules:n,editCssRule:r,setStyle:r,delegate:(a,u,...h)=>(d(u,Function)&&(h.push(u),u=void 0),h.forEach(b=>i(a,u,b))),virtual:s,fn:lt,allowTag:I.allowTag,prohibitTag:I.prohibitTag,lenient:()=>I.allowUnknownHtmlTags,IS:d,popup:()=>Ee(e),createStyle:a=>ae({createWithId:a||`jql${z()}`}),removeCssRule:(...a)=>a.forEach(u=>le(u,{removeRule:1})),text:(a,u=!1)=>u?document.createComment(a):document.createTextNode(a),node:(a,u=document)=>u.querySelector(a,u),nodes:(a,u=document)=>[...u.querySelectorAll(a,u)]}}var f=Fe(ut());function ut(){return function(t,n=document.body,r=L.BeforeEnd){n=n?.isJQL?n?.[0]:n,r=r&&Object.values(L).find(y=>r===y)?r:void 0;let s=de(t),i=Ce(t),p=i||s,a={collection:Ae(t)??[],isVirtual:d(n,HTMLBRElement),isJQL:!0},u=ue(a.collection);location.host.startsWith("dev")&&(a.params={virtual:a.isVirtual,jql:a.isJQL,isRawHtml:s,isRawHtmlArray:i,isRawElemCollection:u});let h=`input => ${i?`"${A(t.join(", "),70)}"`:!p&&u?`element collection [${A(a.collection.map(y=>y.outerHTML||y.textContent).join(", "),70)}]`:`"${A(t,70)}"`}`;if(a.collection.length&&u)return j(h),O(a);if(p){if([t].flat().forEach(y=>a.collection.push(C(y))),a.collection.length>0){let y=a.collection.filter(w=>w.dataset?.jqlcreationerror);a.collection=a.collection.filter(w=>!w.dataset?.jqlcreationerror),j(`${h}`),j(`*Created ${a.isVirtual?"VIRTUAL ":""}[${A($e(a.collection)||"sanitized: no elements remaining",70)}]`),y.length&&console.error(`JQL: illegal html, not rendered: "${y.reduce((w,H)=>w.concat(`${H.textContent}
`),"").trim()}"`),a.isVirtual||J(a.collection,n,r)}return O(a)}let b=He(t,n,a);return j(`input => ${b}`),O(a)}}export{f as default};