diff --git a/dist/js/gnexus-ui-kit.js b/dist/js/gnexus-ui-kit.js index f9892a6..cf8daa2 100644 --- a/dist/js/gnexus-ui-kit.js +++ b/dist/js/gnexus-ui-kit.js @@ -8,24 +8,24 @@ ${t} - `}function Se(e,t,a,n){let i='',s=0;for(let d in t)i+=`${t[d]}`,s++;i+="";let l="";for(let d of a){l+='';for(let f in t)l+=`${d[f]}`;l+=""}let r="";typeof n!="undefined"&&(r=` + `}function Se(e,t,a,n){let i='',o=0;for(let d in t)i+=`${t[d]}`,o++;i+="";let l="";for(let d of a){l+='';for(let f in t)l+=`${d[f]}`;l+=""}let c="";typeof n!="undefined"&&(c=` - + ${n} - `);let o=e?`${e}`:"",c=a.length?`${i}`:"";return l=a.length?l:'Empty',` + `);let s=e?`${e}`:"",r=a.length?`${i}`:"";return l=a.length?l:'Empty',`
- ${o} - ${c} - ${l} + ${s} ${r} + ${l} + ${c}
- `}function Y(e,t,a){let n=document.createElement(e);for(let[i,s]of Object.entries(t))i==="class"?n.className=s:i==="dataset"?Object.assign(n.dataset,s):n.setAttribute(i,s);return n.innerHTML=typeof a!="undefined"?a:"",n}function Le(e,t){return["primary","success","secondary","info","warning","error","danger"].indexOf(e)<0?console.error("createAlert()","Error of type: "+e):Y("div",{class:`alert alert-${e}`},t)}function we(e,t={}){let a={};for(let n in e){if(typeof t[n]!="undefined"){a[t[n]]=e[n];continue}a[n]=e[n]}return a}function xe(e,t){if((e==null?void 0:e.isLoading)==t)return!1;if(t)e.isLoading=!0,e.originalContent=e.innerHTML,e.classList.contains("with-icon")?e.originalWithIcon=!0:e.classList.add("with-icon"),e.classList.add("loading-state"),e.setAttribute("disabled","disabled"),e.innerHTML=' Loading';else{if(e.isLoading=!1,!e.originalContent)return!1;e.removeAttribute("disabled"),e.classList.remove("loading-state"),e.originalWithIcon||e.classList.remove("with-icon"),e.innerHTML=e.originalContent}return e}function Ae(e,t){if((e==null?void 0:e.isLoading)==t)return!1;let a=e.querySelector(".status-icon");if(t)e.isLoading=!0,e.originalContent=a.innerHTML,e.classList.add("loading-state"),e.setAttribute("disabled","disabled"),a.innerHTML='';else{if(e.isLoading=!1,!e.originalContent)return!1;e.removeAttribute("disabled"),e.classList.remove("loading-state"),a.innerHTML=e.originalContent}return e}function ke(e,t){return t=t!=null?t:"",` + `}function Y(e,t,a){let n=document.createElement(e);for(let[i,o]of Object.entries(t))i==="class"?n.className=o:i==="dataset"?Object.assign(n.dataset,o):n.setAttribute(i,o);return n.innerHTML=typeof a!="undefined"?a:"",n}function Le(e,t){return["primary","success","secondary","info","warning","error","danger"].indexOf(e)<0?console.error("createAlert()","Error of type: "+e):Y("div",{class:`alert alert-${e}`},t)}function we(e,t={}){let a={};for(let n in e){if(typeof t[n]!="undefined"){a[t[n]]=e[n];continue}a[n]=e[n]}return a}function xe(e,t){if((e==null?void 0:e.isLoading)==t)return!1;if(t)e.isLoading=!0,e.originalContent=e.innerHTML,e.classList.contains("with-icon")?e.originalWithIcon=!0:e.classList.add("with-icon"),e.classList.add("loading-state"),e.setAttribute("disabled","disabled"),e.innerHTML=' Loading';else{if(e.isLoading=!1,!e.originalContent)return!1;e.removeAttribute("disabled"),e.classList.remove("loading-state"),e.originalWithIcon||e.classList.remove("with-icon"),e.innerHTML=e.originalContent}return e}function Ae(e,t){if((e==null?void 0:e.isLoading)==t)return!1;let a=e.querySelector(".status-icon");if(t)e.isLoading=!0,e.originalContent=a.innerHTML,e.classList.add("loading-state"),e.setAttribute("disabled","disabled"),a.innerHTML='';else{if(e.isLoading=!1,!e.originalContent)return!1;e.removeAttribute("disabled"),e.classList.remove("loading-state"),a.innerHTML=e.originalContent}return e}function ke(e,t){return t=t!=null?t:"",`
- `}function $e(e){return e=="active"?'Online':'Offline'}function qe(e){return e=="enabled"?'Enabled':'Disabled'}function Te(e){let t=new Date(e.replace(" ","T")),n=Math.floor((new Date-t)/1e3);if(n<60)return"less than a minute ago";let i=Math.floor(n/60),s=Math.floor(i/60),l=Math.floor(s/24);if(i<60)return`${i} minute${i!==1?"s":""} ago`;if(s<24){let r=i%60;return`${s} hour${s!==1?"s":""} ${r} minute${r!==1?"s":""} ago`}return`${l} day${l!==1?"s":""} ago`}function Ne(e){let t=new Date(e.replace(" ","T")),a=new Date,n=new Date(a.getFullYear(),a.getMonth(),a.getDate()),i=new Date(t.getFullYear(),t.getMonth(),t.getDate()),s=Math.floor((n-i)/864e5),l=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");if(s===0)return`Today at ${l}:${r}`;if(s===1)return`Yesterday at ${l}:${r}`;let o=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return`${t.getDate()} ${o[t.getMonth()]} ${t.getFullYear()} at ${l}:${r}`}function He(){return` + `}function $e(e){return e=="active"?'Online':'Offline'}function qe(e){return e=="enabled"?'Enabled':'Disabled'}function Te(e){let t=new Date(e.replace(" ","T")),n=Math.floor((new Date-t)/1e3);if(n<60)return"less than a minute ago";let i=Math.floor(n/60),o=Math.floor(i/60),l=Math.floor(o/24);if(i<60)return`${i} minute${i!==1?"s":""} ago`;if(o<24){let c=i%60;return`${o} hour${o!==1?"s":""} ${c} minute${c!==1?"s":""} ago`}return`${l} day${l!==1?"s":""} ago`}function Ne(e){let t=new Date(e.replace(" ","T")),a=new Date,n=new Date(a.getFullYear(),a.getMonth(),a.getDate()),i=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o=Math.floor((n-i)/864e5),l=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0");if(o===0)return`Today at ${l}:${c}`;if(o===1)return`Yesterday at ${l}:${c}`;let s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return`${t.getDate()} ${s[t.getMonth()]} ${t.getFullYear()} at ${l}:${c}`}function He(){return`
Loading @@ -46,7 +46,7 @@

It's empty here yet

- `}var m={template:{sidebarNav:Ee,table:Se,createElement:Y,createAlert:Le,mainTemplate:ke,connectionStatusBadge:$e,toogleStateBadge:qe,circleLoaderHTML:He,emptyHereHTML:Ce},unification:{fieldsUnification:we,timeAgo:Te,formatDate:Ne},states:{btnLoadingState:xe,cardStatusLoadingState:Ae}};function Me(e,t){if(t instanceof Node){e.append(t);return}let a=document.createElement("span");a.innerHTML=t,e.append(...a.childNodes)}function De(e,t,a,n){let i=document.createElement("div");i.className=`toast toast-${e}`,i.setAttribute("role","alert");let s=document.createElement("div");s.className="toast-content";let l=document.createElement("h4");l.className="toast-title",Me(l,t),l.append(document.createTextNode(` ${a!=null?a:""}`));let r=document.createElement("p");r.className="toast-text",r.textContent=n!=null?n:"";let o=document.createElement("button");return o.className="btn-icon toast-close",o.type="button",o.setAttribute("aria-label","Close"),o.textContent="\u2715",s.append(l,r),i.append(s,o),i}function Oe(e,t){if(t!=null&&t.alone&&document.querySelectorAll(".toast").forEach(a=>{var n;return(n=a.close)==null?void 0:n.call(a)}),e.close=function(){this.classList.add("a-hide"),setTimeout(()=>{this.remove()},300)},e.querySelector(".toast-close").addEventListener("click",a=>{e.close()}),e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.addEventListener("mouseover",a=>e.ishovered=!0),e.addEventListener("mouseout",a=>e.ishovered=!1),t!=null&&t.lifetime){let a=setInterval(()=>{e.ishovered||(e.close(),clearInterval(a))},t==null?void 0:t.lifetime)}return e}function v(e,t,a,n,i){return Oe(De(e,t,a,n),i)}function Fe(e,t,a){return typeof a=="undefined"&&(a={}),typeof a.lifetime=="undefined"&&(a.lifetime=4e3),typeof a.alone=="undefined"&&(a.alone=!0),v("success",'',e,t,a)}function Ie(e,t,a){return v("info",'',e,t,a)}function je(e,t,a){return v("warning",'',e,t,a)}function _(e,t,a){return v("danger",'',e,t,a)}var C={create:v,createInfo:Ie,createSuccess:Fe,createWarning:je,createError:_,createDanger:_};function y(e,t,a="html"){if(t instanceof Node){e.append(t);return}typeof t!="undefined"&&t!==null&&(a==="text"?e.textContent=t:e.innerHTML=t)}function Re(e,t,a,n={}){var V;let i=document.createElement("div");i.className="modal",i.setAttribute("aria-hidden","true"),i.id=e;let s=document.createElement("div");s.className="modal-backdrop";let l=document.createElement("div");l.className="modal-dialog",l.setAttribute("role","dialog"),l.setAttribute("aria-modal","true"),l.setAttribute("aria-labelledby",`${e}-title`);let r=document.createElement("div");r.className="modal-panel";let o=document.createElement("header");o.className="modal-header";let c=document.createElement("h4");c.className="modal-title",c.id=`${e}-title`,c.textContent=t;let u=document.createElement("button");u.className="btn-icon modal-close",u.type="button",u.setAttribute("aria-label","Close"),u.textContent="\u2715";let d=document.createElement("div");d.className="modal-body";let f=document.createElement("footer");return f.className="modal-footer",y(f,a,(V=n.footerMode)!=null?V:"html"),o.append(c,u),r.append(d,f),l.append(o,r),i.append(s,l),i}function Be(e,t){return e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.close=function(){e.classList.add("a-hide"),setTimeout(()=>{e.remove()},300)},e.querySelector(".modal-close").addEventListener("click",a=>{e.close()}),typeof t=="function"&&t(e),e}function Ue(e,t){var r;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=Re(e,a,n,t),s=i.querySelector(".modal-body"),l=i.querySelector(".modal-footer");if(typeof t.actions=="function"){let o=t.actions(i);if(Array.isArray(o)&&o[0]instanceof Node){let c=document.createElement("div");c.classList.add("actions");for(let u of o)c.append(u);l.append(c)}else o instanceof Node&&l.append(o)}if(typeof t.body=="function"){let o=t.body(i);y(s,o,(r=t.bodyMode)!=null?r:"html")}else typeof t.bodyText!="undefined"?y(s,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&y(s,t.bodyHtml,"html");return Be(i,t==null?void 0:t.onready)}var g={create:Ue};function K(e){let t=e.querySelector(".focus");if(!t)return;let a=e.getBoundingClientRect(),n=t.getBoundingClientRect();n.topa.bottom&&(e.scrollTop+=n.bottom-a.bottom)}function M(e){e.advancedSelect.optionsElements.length-e.querySelectorAll(".option.hide").length==0?e.advancedSelect.showState("not-found"):e.advancedSelect.showState("options")}function D(e){return e.querySelector(".option:not(.hide)")}function We(e){return e.querySelector(".option:not(.hide):last-child")}function J(e,t,a){a&&(e.value=a.dataset.displayValue,e.blur(),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new Event("change",{bubbles:!0})),t.advancedSelect.dispatchEvent("selected"),t.advancedSelect.closeList())}function b(e,t,a){let n=document.createElement("div");n.classList.add("advanced-select");let i=document.createElement("div");i.className="popup-options-container";let s=document.createElement("div");s.className="not-found",s.textContent=a!=null?a:"Nothing found";let l=document.createElement("div");l.className="options";for(let o in t){let c=document.createElement("div");c.className="option",c.dataset.value=o,c.dataset.displayValue=t[o],c.textContent=t[o],l.append(c)}i.append(s,l),n.append(i);let r=(o,c)=>{for(let u in c)if(c[u]==o){let d={};return d[u]=c[u],d}return!1};return n.advancedSelect={isOpened:!1,options:t,eventsHandlers:{openList:[],closeList:[],selected:[],changed:[]},openList:()=>{n.advancedSelect.isOpened=!0,n.classList.add("a-show"),M(n),n.advancedSelect.dispatchEvent("openList")},closeList:()=>{n.advancedSelect.isOpened=!1,n.classList.remove("a-show"),M(n),n.advancedSelect.dispatchEvent("closeList")},showState:o=>{o=="options"?(n.querySelector(".options").classList.add("show"),n.querySelector(".not-found").classList.remove("show")):o=="not-found"&&(n.querySelector(".options").classList.remove("show"),n.querySelector(".not-found").classList.add("show"))},optionsElements:n.querySelectorAll(".option"),value:()=>{let o=r(e.value,t);return{inputValue:e.value,isOption:!!o,option:o}},addEventListener:(o,c)=>{if(typeof n.advancedSelect.eventsHandlers[o]!="undefined")return n.advancedSelect.eventsHandlers[o].push(c);console.error("Advanced Select component.","addEventListener()","Invalid event name")},dispatchEvent:o=>{if(typeof n.advancedSelect.eventsHandlers[o]=="undefined")return console.error("Advanced Select component.","dispatchEvent()","Invalid event name");for(let c of n.advancedSelect.eventsHandlers[o])c(n)}},e.setAttribute("autocomplete","nope"),e.advancedSelect={value:()=>n.advancedSelect.value()},e.addEventListener("focus",o=>{n.advancedSelect.openList()}),e.addEventListener("blur",o=>{requestAnimationFrame(()=>{n.matches(":hover")||n.advancedSelect.closeList()})}),e.addEventListener("keydown",o=>{var c,u;if(o.key==="ArrowUp"){o.preventDefault();let d=n.querySelector(".option.focus");if(d){d.classList.remove("focus");let f=d.previousElementSibling;for(;f&&f.classList.contains("hide");)f=f.previousElementSibling;f||(f=D(n)),f==null||f.classList.add("focus")}else(c=We(n))==null||c.classList.add("focus");K(n)}else if(o.key==="ArrowDown"){o.preventDefault();let d=n.querySelector(".option.focus");if(d){d.classList.remove("focus");let f=d.nextElementSibling;for(;f&&f.classList.contains("hide");)f=f.nextElementSibling;f||(f=D(n)),f==null||f.classList.add("focus")}else(u=D(n))==null||u.classList.add("focus");K(n)}else if(o.key==="Enter"){o.preventDefault();let d=n.querySelector(".option.focus");J(e,n,d)}else o.key==="Escape"&&(n.advancedSelect.closeList(),e.blur())}),e.addEventListener("input",o=>{var u;let c=o.currentTarget.value.toLowerCase();c==""?n.advancedSelect.optionsElements.forEach(d=>d.classList.remove("hide")):([...n.advancedSelect.optionsElements].filter(d=>d.dataset.displayValue.toLowerCase().indexOf(c)!=-1).forEach(d=>d.classList.remove("hide")),[...n.advancedSelect.optionsElements].filter(d=>d.dataset.displayValue.toLowerCase().indexOf(c)==-1).forEach(d=>d.classList.add("hide")),M(n),(u=n.querySelector(".option.focus"))==null||u.classList.remove("focus"))}),e.addEventListener("change",o=>{n.advancedSelect.dispatchEvent("changed")}),[...n.advancedSelect.optionsElements].forEach(o=>{o.addEventListener("pointerdown",c=>{c.preventDefault(),J(e,n,c.currentTarget)})}),n}function ze(e,t){let a="Write something",n=t?``:``;return` + `}var m={template:{sidebarNav:Ee,table:Se,createElement:Y,createAlert:Le,mainTemplate:ke,connectionStatusBadge:$e,toogleStateBadge:qe,circleLoaderHTML:He,emptyHereHTML:Ce},unification:{fieldsUnification:we,timeAgo:Te,formatDate:Ne},states:{btnLoadingState:xe,cardStatusLoadingState:Ae}};function Me(e,t){if(t instanceof Node){e.append(t);return}let a=document.createElement("span");a.innerHTML=t,e.append(...a.childNodes)}function De(e,t,a,n){let i=document.createElement("div");i.className=`toast toast-${e}`,i.setAttribute("role","alert");let o=document.createElement("div");o.className="toast-content";let l=document.createElement("h4");l.className="toast-title",Me(l,t),l.append(document.createTextNode(` ${a!=null?a:""}`));let c=document.createElement("p");c.className="toast-text",c.textContent=n!=null?n:"";let s=document.createElement("button");return s.className="btn-icon toast-close",s.type="button",s.setAttribute("aria-label","Close"),s.textContent="\u2715",o.append(l,c),i.append(o,s),i}function Oe(e,t){if(t!=null&&t.alone&&document.querySelectorAll(".toast").forEach(a=>{var n;return(n=a.close)==null?void 0:n.call(a)}),e.close=function(){this.classList.add("a-hide"),setTimeout(()=>{this.remove()},300)},e.querySelector(".toast-close").addEventListener("click",a=>{e.close()}),e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.addEventListener("mouseover",a=>e.ishovered=!0),e.addEventListener("mouseout",a=>e.ishovered=!1),t!=null&&t.lifetime){let a=setInterval(()=>{e.ishovered||(e.close(),clearInterval(a))},t==null?void 0:t.lifetime)}return e}function v(e,t,a,n,i){return Oe(De(e,t,a,n),i)}function Fe(e,t,a){return typeof a=="undefined"&&(a={}),typeof a.lifetime=="undefined"&&(a.lifetime=4e3),typeof a.alone=="undefined"&&(a.alone=!0),v("success",'',e,t,a)}function Ie(e,t,a){return v("info",'',e,t,a)}function je(e,t,a){return v("warning",'',e,t,a)}function _(e,t,a){return v("danger",'',e,t,a)}var C={create:v,createInfo:Ie,createSuccess:Fe,createWarning:je,createError:_,createDanger:_};function y(e,t,a="html"){if(t instanceof Node){e.append(t);return}typeof t!="undefined"&&t!==null&&(a==="text"?e.textContent=t:e.innerHTML=t)}function Re(e,t,a,n={}){var V;let i=document.createElement("div");i.className="modal",i.setAttribute("aria-hidden","true"),i.id=e;let o=document.createElement("div");o.className="modal-backdrop";let l=document.createElement("div");l.className="modal-dialog",l.setAttribute("role","dialog"),l.setAttribute("aria-modal","true"),l.setAttribute("aria-labelledby",`${e}-title`);let c=document.createElement("div");c.className="modal-panel";let s=document.createElement("header");s.className="modal-header";let r=document.createElement("h4");r.className="modal-title",r.id=`${e}-title`,r.textContent=t;let u=document.createElement("button");u.className="btn-icon modal-close",u.type="button",u.setAttribute("aria-label","Close"),u.textContent="\u2715";let d=document.createElement("div");d.className="modal-body";let f=document.createElement("footer");return f.className="modal-footer",y(f,a,(V=n.footerMode)!=null?V:"html"),s.append(r,u),c.append(d,f),l.append(s,c),i.append(o,l),i}function Be(e,t){return e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.close=function(){e.classList.add("a-hide"),setTimeout(()=>{e.remove()},300)},e.querySelector(".modal-close").addEventListener("click",a=>{e.close()}),typeof t=="function"&&t(e),e}function Ue(e,t){var c;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=Re(e,a,n,t),o=i.querySelector(".modal-body"),l=i.querySelector(".modal-footer");if(typeof t.actions=="function"){let s=t.actions(i);if(Array.isArray(s)&&s[0]instanceof Node){let r=document.createElement("div");r.classList.add("actions");for(let u of s)r.append(u);l.append(r)}else s instanceof Node&&l.append(s)}if(typeof t.body=="function"){let s=t.body(i);y(o,s,(c=t.bodyMode)!=null?c:"html")}else typeof t.bodyText!="undefined"?y(o,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&y(o,t.bodyHtml,"html");return Be(i,t==null?void 0:t.onready)}var g={create:Ue};function K(e){let t=e.querySelector(".focus");if(!t)return;let a=e.getBoundingClientRect(),n=t.getBoundingClientRect();n.topa.bottom&&(e.scrollTop+=n.bottom-a.bottom)}function M(e){e.advancedSelect.optionsElements.length-e.querySelectorAll(".option.hide").length==0?e.advancedSelect.showState("not-found"):e.advancedSelect.showState("options")}function D(e){return e.querySelector(".option:not(.hide)")}function We(e){return e.querySelector(".option:not(.hide):last-child")}function J(e,t,a){a&&(e.value=a.dataset.displayValue,e.blur(),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new Event("change",{bubbles:!0})),t.advancedSelect.dispatchEvent("selected"),t.advancedSelect.closeList())}function b(e,t,a){let n=document.createElement("div");n.classList.add("advanced-select");let i=document.createElement("div");i.className="popup-options-container";let o=document.createElement("div");o.className="not-found",o.textContent=a!=null?a:"Nothing found";let l=document.createElement("div");l.className="options";for(let s in t){let r=document.createElement("div");r.className="option",r.dataset.value=s,r.dataset.displayValue=t[s],r.textContent=t[s],l.append(r)}i.append(o,l),n.append(i);let c=(s,r)=>{for(let u in r)if(r[u]==s){let d={};return d[u]=r[u],d}return!1};return n.advancedSelect={isOpened:!1,options:t,eventsHandlers:{openList:[],closeList:[],selected:[],changed:[]},openList:()=>{n.advancedSelect.isOpened=!0,n.classList.add("a-show"),M(n),n.advancedSelect.dispatchEvent("openList")},closeList:()=>{n.advancedSelect.isOpened=!1,n.classList.remove("a-show"),M(n),n.advancedSelect.dispatchEvent("closeList")},showState:s=>{s=="options"?(n.querySelector(".options").classList.add("show"),n.querySelector(".not-found").classList.remove("show")):s=="not-found"&&(n.querySelector(".options").classList.remove("show"),n.querySelector(".not-found").classList.add("show"))},optionsElements:n.querySelectorAll(".option"),value:()=>{let s=c(e.value,t);return{inputValue:e.value,isOption:!!s,option:s}},addEventListener:(s,r)=>{if(typeof n.advancedSelect.eventsHandlers[s]!="undefined")return n.advancedSelect.eventsHandlers[s].push(r);console.error("Advanced Select component.","addEventListener()","Invalid event name")},dispatchEvent:s=>{if(typeof n.advancedSelect.eventsHandlers[s]=="undefined")return console.error("Advanced Select component.","dispatchEvent()","Invalid event name");for(let r of n.advancedSelect.eventsHandlers[s])r(n)}},e.setAttribute("autocomplete","nope"),e.advancedSelect={value:()=>n.advancedSelect.value()},e.addEventListener("focus",s=>{n.advancedSelect.openList()}),e.addEventListener("blur",s=>{requestAnimationFrame(()=>{n.matches(":hover")||n.advancedSelect.closeList()})}),e.addEventListener("keydown",s=>{var r,u;if(s.key==="ArrowUp"){s.preventDefault();let d=n.querySelector(".option.focus");if(d){d.classList.remove("focus");let f=d.previousElementSibling;for(;f&&f.classList.contains("hide");)f=f.previousElementSibling;f||(f=D(n)),f==null||f.classList.add("focus")}else(r=We(n))==null||r.classList.add("focus");K(n)}else if(s.key==="ArrowDown"){s.preventDefault();let d=n.querySelector(".option.focus");if(d){d.classList.remove("focus");let f=d.nextElementSibling;for(;f&&f.classList.contains("hide");)f=f.nextElementSibling;f||(f=D(n)),f==null||f.classList.add("focus")}else(u=D(n))==null||u.classList.add("focus");K(n)}else if(s.key==="Enter"){s.preventDefault();let d=n.querySelector(".option.focus");J(e,n,d)}else s.key==="Escape"&&(n.advancedSelect.closeList(),e.blur())}),e.addEventListener("input",s=>{var u;let r=s.currentTarget.value.toLowerCase();r==""?n.advancedSelect.optionsElements.forEach(d=>d.classList.remove("hide")):([...n.advancedSelect.optionsElements].filter(d=>d.dataset.displayValue.toLowerCase().indexOf(r)!=-1).forEach(d=>d.classList.remove("hide")),[...n.advancedSelect.optionsElements].filter(d=>d.dataset.displayValue.toLowerCase().indexOf(r)==-1).forEach(d=>d.classList.add("hide")),M(n),(u=n.querySelector(".option.focus"))==null||u.classList.remove("focus"))}),e.addEventListener("change",s=>{n.advancedSelect.dispatchEvent("changed")}),[...n.advancedSelect.optionsElements].forEach(s=>{s.addEventListener("pointerdown",r=>{r.preventDefault(),J(e,n,r.currentTarget)})}),n}function Pe(e,t){let a="Write something",n=t?``:``;return`
${e} @@ -60,5 +60,5 @@
- `}function E(e,t){t=t!=null?t:!1;let a=e.innerHTML,n=m.template.createElement("div",{class:"component editable-string-component"},ze(a,t));e.innerHTML="",e.append(n);let i=n.querySelector(".edit-text-btn"),s=n.querySelector(".apply-changes-btn"),l=n.querySelector(".cancel-changes-btn"),r=n.querySelector(".editable-string-content"),o=n.querySelector(".editable-string"),c=n.querySelector(".editable-string-form"),u=n.querySelector(".input");return n.editableString={formIsDisplaying:!1,value:a,input:u,eventsHandlers:{onChange:[],onSwitch:[]},switch:()=>{n.formIsDisplaying?(c.classList.add("d-none"),r.classList.remove("d-none"),o.innerText=n.editableString.value):(c.classList.remove("d-none"),r.classList.add("d-none"),u.value=n.editableString.value),n.formIsDisplaying=!n.formIsDisplaying,n.editableString.runEventHandler("onSwitch")},setValue:d=>{n.editableString.value=d,u.value=d,o.innerText=d},apply:()=>{n.editableString.value=u.value,n.editableString.switch(),u.value!=a&&n.editableString.runEventHandler("onChange")},onChange:d=>{n.editableString.eventsHandlers.onChange.push(d)},onSwitch:d=>{n.editableString.eventsHandlers.onSwitch.push(d)},runEventHandler:d=>{n.editableString.eventsHandlers[d].forEach(f=>f(n.editableString))}},i.addEventListener("click",d=>{n.editableString.switch()}),l.addEventListener("click",d=>{n.editableString.switch()}),s.addEventListener("click",d=>{n.editableString.apply()}),u.addEventListener("keydown",d=>{d.key==="Enter"&&(u.blur(),n.editableString.apply())}),n}function S(e,t,a){g.create("confirm-popup",{title:"Requires confirmation",body:()=>{let n=document.createElement("p");return n.textContent=e!=null?e:"",n},actions:n=>{let i=m.template.createElement("button",{class:"btn btn-primary"},"NO"),s=m.template.createElement("button",{class:"btn btn-warning"},"YES");return i.addEventListener("click",l=>{n.close(),a==null||a()}),s.addEventListener("click",l=>{n.close(),t==null||t()}),[i,s]}}).show()}function L(e,t,a="html"){if(t instanceof Node){e.append(t);return}typeof t!="undefined"&&t!==null&&(a==="text"?e.textContent=t:e.innerHTML=t)}function Pe(e,t,a,n={}){var f;let i=document.createElement("div");i.className="drawer",i.setAttribute("aria-hidden","true"),i.id=e,n.position==="left"&&i.classList.add("drawer-left");let s=document.createElement("div");s.className="drawer-backdrop";let l=document.createElement("aside");l.className="drawer-panel",l.setAttribute("role","dialog"),l.setAttribute("aria-modal","true"),l.setAttribute("aria-labelledby",`${e}-title`);let r=document.createElement("header");r.className="drawer-header";let o=document.createElement("h4");o.className="drawer-title",o.id=`${e}-title`,o.textContent=t;let c=document.createElement("button");c.className="btn-icon drawer-close",c.type="button",c.setAttribute("aria-label","Close"),c.textContent="\u2715";let u=document.createElement("div");u.className="drawer-body";let d=document.createElement("footer");return d.className="drawer-footer",L(d,a,(f=n.footerMode)!=null?f:"html"),r.append(o,c),l.append(r,u,d),i.append(s,l),i}function Ve(e,t){return e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.close=function(){e.classList.add("a-hide"),setTimeout(()=>{e.remove()},300)},e.querySelector(".drawer-close").addEventListener("click",()=>{e.close()}),e.querySelector(".drawer-backdrop").addEventListener("click",()=>{e.close()}),typeof t=="function"&&t(e),e}function Ye(e,t){var r;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=Pe(e,a,n,t),s=i.querySelector(".drawer-body"),l=i.querySelector(".drawer-footer");if(typeof t.actions=="function"){let o=t.actions(i);if(Array.isArray(o)&&o[0]instanceof Node){let c=document.createElement("div");c.classList.add("actions");for(let u of o)c.append(u);l.append(c)}else o instanceof Node&&l.append(o)}if(typeof t.body=="function"){let o=t.body(i);L(s,o,(r=t.bodyMode)!=null?r:"html")}else typeof t.bodyText!="undefined"?L(s,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&L(s,t.bodyHtml,"html");return Ve(i,t==null?void 0:t.onready)}var O={create:Ye};var G=new WeakSet;function _e(e,t){var n,i;let a=e.getAttribute("aria-controls");return a?((n=t.getElementById)==null?void 0:n.call(t,a))||document.getElementById(a):((i=t.querySelector)==null?void 0:i.call(t,"[data-navigation-drawer]"))||document.querySelector("[data-navigation-drawer]")}function Z(e,t){var n;if(!e)return;e.classList.add("is-open"),e.setAttribute("aria-hidden","false"),e.removeAttribute("inert"),t==null||t.setAttribute("aria-expanded","true"),document.body.classList.add("nav-drawer-open");let a=e.querySelector("[data-navigation-close], a, button, input, select, textarea");(n=a==null?void 0:a.focus)==null||n.call(a)}function w(e,t,a=!0){var n;e&&(e.classList.remove("is-open"),e.setAttribute("aria-hidden","true"),e.setAttribute("inert",""),t==null||t.setAttribute("aria-expanded","false"),document.body.classList.remove("nav-drawer-open"),a&&((n=t==null?void 0:t.focus)==null||n.call(t)))}function Ke(e=document){G.has(e)||(e.addEventListener("click",t=>{let a=t.target.closest("[data-navigation-toggle]");if(!a)return;let n=_e(a,e);n!=null&&n.classList.contains("is-open")?w(n,a):Z(n,a)}),e.addEventListener("click",t=>{let a=t.target.closest("[data-navigation-close], [data-navigation-link], .nav-drawer .list-action");if(!a)return;let n=a.closest("[data-navigation-drawer]")||e.querySelector("[data-navigation-drawer]"),i=n!=null&&n.id?e.querySelector(`[data-navigation-toggle][aria-controls="${n.id}"]`):e.querySelector("[data-navigation-toggle]"),s=!a.matches("[data-navigation-link]");w(n,i,s)}),document.addEventListener("keydown",t=>{t.key==="Escape"&&e.querySelectorAll("[data-navigation-drawer].is-open").forEach(a=>{let n=a.id?e.querySelector(`[data-navigation-toggle][aria-controls="${a.id}"]`):e.querySelector("[data-navigation-toggle]");w(a,n)})}),G.add(e))}var x={init:Ke,open:Z,close:w};var Q=new WeakSet,X=!1;function Je(e){e.classList.remove("is-open"),e.querySelectorAll("[aria-expanded='true']").forEach(t=>{t.setAttribute("aria-expanded","false")})}function p(e=null){document.querySelectorAll(".dropdown.is-open, .popover.is-open, .tooltip.is-open").forEach(t=>{t!==e&&Je(t)})}function Ge(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-dropdown-toggle]");if(!a)return;let n=a.closest(".dropdown");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i),a.setAttribute("aria-expanded",String(!i))})}function Ze(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-popover-toggle]");if(!a)return;let n=a.closest(".popover");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i),a.setAttribute("aria-expanded",String(!i))})}function Qe(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-tooltip-toggle]");if(!a)return;let n=a.closest(".tooltip");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i)})}function Xe(e=document){e.addEventListener("click",t=>{t.target.closest(".dropdown, .popover, .tooltip")||p()}),X||(document.addEventListener("keydown",t=>{t.key==="Escape"&&p()}),X=!0)}function et(e=document){Q.has(e)||(Ge(e),Ze(e),Qe(e),Xe(e),Q.add(e))}var A={init:et,closeAll:p};var ee=new WeakSet,ae=new WeakMap;function te(e){return`${e.name}:${e.size}:${e.lastModified}`}function ie(e){e&&(e.querySelectorAll("img[data-object-url]").forEach(t=>{URL.revokeObjectURL(t.dataset.objectUrl)}),e.innerHTML="",e.hidden=!0)}function F(e){return ae.get(e)||[]}function I(e,t){ae.set(e,t);let a=new DataTransfer;t.forEach(n=>a.items.add(n)),e.files=a.files}function tt(e,t){let a=F(e),n=new Set(a.map(te)),i=[...a];return t.forEach(s=>{let l=te(s);n.has(l)||(n.add(l),i.push(s))}),I(e,i),i}function nt(e,t){let a=F(e).filter((n,i)=>i!==t);return I(e,a),a}function ne(e){let t=e.name.split("."),a=t.length>1?t.pop().trim():"";return a?a.slice(0,6).toUpperCase():e.type?e.type.split("/").pop().slice(0,6).toUpperCase():"FILE"}function at(e){if(!Number.isFinite(e))return"";if(e===0)return"0 B";let t=["B","KB","MB","GB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1),n=e/Math.pow(1024,a);return`${n.toFixed(n>=10||a===0?0:1)} ${t[a]}`}function k(e){let t=e.closest(".file-upload-panel, .file-upload"),a=t==null?void 0:t.querySelector("[data-file-upload-preview]");if(!t||!a)return;let n=F(e);if(!n.length){ie(a);return}it(a,n)}function it(e,t){e&&(ie(e),t.forEach((a,n)=>{let i=document.createElement("figure");i.className="file-upload-preview-item",i.dataset.fileUploadIndex=String(n);let s=document.createElement("div");if(s.className="file-upload-preview-visual",a.type.startsWith("image/")){let u=document.createElement("img"),d=URL.createObjectURL(a);u.src=d,u.dataset.objectUrl=d,u.alt="",u.loading="lazy",s.append(u)}else{let u=document.createElement("span");u.className="file-upload-preview-type",u.textContent=ne(a),s.append(u)}let l=document.createElement("figcaption"),r=document.createElement("span");r.className="file-upload-preview-name",r.textContent=a.name;let o=document.createElement("span");o.className="file-upload-preview-meta",o.textContent=`${ne(a)} / ${at(a.size)}`;let c=document.createElement("button");c.className="file-upload-preview-remove",c.type="button",c.dataset.fileUploadRemove=String(n),c.setAttribute("aria-label",`Remove ${a.name}`),c.innerHTML='',l.append(r,o),i.append(c,s,l),e.append(i)}),e.hidden=!1)}function ot(e=document){ee.has(e)||(e.addEventListener("click",t=>{let a=t.target.closest("[data-input-clear]");if(!a)return;let n=a.closest(".input-group"),i=n==null?void 0:n.querySelector("input, textarea");i&&(i.value="",i.dispatchEvent(new Event("input",{bubbles:!0})),i.focus())}),e.addEventListener("click",t=>{let a=t.target.closest("[data-file-upload-remove]");if(!a)return;let n=a.closest(".file-upload-panel, .file-upload"),i=n==null?void 0:n.querySelector("[data-file-upload-input]");i&&(nt(i,Number(a.dataset.fileUploadRemove)),k(i),i.dispatchEvent(new Event("change",{bubbles:!0})))}),e.addEventListener("click",t=>{let a=t.target.closest("[data-date-picker]");if(a&&(a.focus(),typeof a.showPicker=="function"))try{a.showPicker()}catch(n){}}),e.addEventListener("change",t=>{let a=t.target.closest("[data-file-upload-input]");a&&(tt(a,Array.from(a.files||[])),k(a))}),e.addEventListener("reset",t=>{let a=t.target.closest("form");a&&setTimeout(()=>{a.querySelectorAll("[data-file-upload-input]").forEach(n=>{I(n,[]),k(n)})},0)}),ee.add(e))}var $={init:ot,updateFileUpload:k};var oe=new WeakSet;function j(e){return e.querySelector(".accordion-panel")}function st(e){let t=j(e);t&&(t.style.height="auto",t.style.opacity="1",t.style.transform="translateY(0)")}function se(e){let t=j(e);if(!t||e.dataset.animating==="true")return;e.dataset.animating="true",e.open=!0,t.style.height="0px",t.style.opacity="0",t.style.transform="translateY(-8px)",requestAnimationFrame(()=>{t.style.height=`${t.scrollHeight}px`,t.style.opacity="1",t.style.transform="translateY(0)"});let a=n=>{n.propertyName==="height"&&(t.removeEventListener("transitionend",a),t.style.height="auto",delete e.dataset.animating)};t.addEventListener("transitionend",a)}function le(e){let t=j(e);if(!t||e.dataset.animating==="true")return;e.dataset.animating="true",t.style.height=`${t.scrollHeight}px`,t.style.opacity="1",t.style.transform="translateY(0)",requestAnimationFrame(()=>{t.style.height="0px",t.style.opacity="0",t.style.transform="translateY(-8px)"});let a=n=>{n.propertyName==="height"&&(t.removeEventListener("transitionend",a),e.open=!1,t.style.height="",t.style.opacity="",t.style.transform="",delete e.dataset.animating)};t.addEventListener("transitionend",a)}function ce(e){e.open?le(e):se(e)}function lt(e=document){oe.has(e)||(e.querySelectorAll(".accordion-item[open], .disclosure[open]").forEach(st),e.addEventListener("click",t=>{let a=t.target.closest(".accordion-summary");if(!a)return;let n=a.closest(".accordion-item, .disclosure");n&&(t.preventDefault(),ce(n))}),oe.add(e))}var q={init:lt,expand:se,collapse:le,toggle:ce};var re=new WeakSet;function B(e){return[...e.querySelectorAll('[role="tab"], .tab')]}function de(e){return[...e.querySelectorAll('[role="tabpanel"], .tab-panel')]}function ue(e,t){let a=t.getAttribute("aria-controls");return a?e.querySelector(`#${CSS.escape(a)}`):null}function fe(e,t){e.classList.toggle("tab-active",t),e.setAttribute("aria-selected",t?"true":"false"),e.setAttribute("tabindex",t?"0":"-1")}function R(e,t){e.classList.toggle("tab-panel-active",t),e.toggleAttribute("hidden",!t)}function U(e,t={}){var i;if(!e||e.disabled||e.getAttribute("aria-disabled")==="true")return;let a=e.closest(".tabs")||((i=e.closest('[role="tablist"]'))==null?void 0:i.parentElement);if(!a)return;B(a).forEach(s=>fe(s,s===e)),de(a).forEach(s=>R(s,!1));let n=ue(a,e);n&&R(n,!0),t.focus!==!1&&e.focus()}function T(e,t,a){for(let n=1;n<=e.length;n++){let i=(t+n*a+e.length)%e.length,s=e[i];if(!s.disabled&&s.getAttribute("aria-disabled")!=="true")return s}return e[t]}function ct(e){var l;let t=e.target.closest('[role="tab"], .tab');if(!t)return;let a=t.closest(".tabs")||((l=t.closest('[role="tablist"]'))==null?void 0:l.parentElement),n=a?B(a):[],i=n.indexOf(t);if(i<0)return;let s=null;e.key==="ArrowRight"||e.key==="ArrowDown"?s=T(n,i,1):e.key==="ArrowLeft"||e.key==="ArrowUp"?s=T(n,i,-1):e.key==="Home"?s=T(n,-1,1):e.key==="End"&&(s=T(n,0,-1)),s&&(e.preventDefault(),U(s))}function rt(e){let t=B(e),a=t.find(n=>n.classList.contains("tab-active")||n.getAttribute("aria-selected")==="true")||t.find(n=>!n.disabled&&n.getAttribute("aria-disabled")!=="true");t.forEach(n=>{n.setAttribute("role","tab"),fe(n,n===a)}),e.querySelectorAll(".tabs-list").forEach(n=>{n.setAttribute("role","tablist")}),de(e).forEach(n=>{n.setAttribute("role","tabpanel"),R(n,a?n===ue(e,a):n.classList.contains("tab-panel-active"))})}function dt(e=document){re.has(e)||(e.querySelectorAll(".tabs").forEach(rt),e.addEventListener("click",t=>{let a=t.target.closest('[role="tab"], .tab');!a||!e.contains(a)||(t.preventDefault(),U(a,{focus:!1}))}),e.addEventListener("keydown",ct),re.add(e))}var N={init:dt,activate:U};function W(){let e=[...document.querySelectorAll(".nav-drawer .list-item")],t=[...document.querySelectorAll(".docs-content .section[id]")],a=document.querySelector("[data-docs-current-section]");if(!e.length||!t.length)return;let n=o=>{e.forEach(c=>{var f;let u=c.querySelector(".list-action"),d=(u==null?void 0:u.getAttribute("href"))===`#${o}`;c.classList.toggle("list-item-active",d),d&&a&&(a.textContent=((f=u.querySelector(".list-label"))==null?void 0:f.textContent.trim())||o)})},i=()=>{let o=Math.min(window.innerHeight*.35,280),c=t[0];for(let u of t)if(u.getBoundingClientRect().top<=o)c=u;else break;return c},s=!1,l=()=>{s=!1;let o=i();o!=null&&o.id&&n(o.id)},r=()=>{s||(s=!0,window.requestAnimationFrame(l))};window.addEventListener("scroll",r,{passive:!0}),window.addEventListener("resize",r),window.location.hash?n(window.location.hash.slice(1)):l()}function me(e){let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","readonly"),t.style.position="fixed",t.style.opacity="0",document.body.append(t),t.select(),document.execCommand("copy"),t.remove()}function h(e){return e.replace(/&/g,"&").replace(//g,">")}function ut(e){var l;let t=e.textContent,a=/\/\/.*$|\/\*[\s\S]*?\*\/|`(?:\\[\s\S]|[^`\\])*`|'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|\b(?:async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)\b|\b\d+(?:\.\d+)?\b|\b[A-Za-z_$][\w$]*(?=\s*\()/gm,n="",i=0,s;for(;(s=a.exec(t))!==null;){let r=s[0];if(n+=h(t.slice(i,s.index)),r.startsWith("//")||r.startsWith("/*"))n+=`${h(r)}`;else if(r.startsWith('"')||r.startsWith("'")||r.startsWith("`"))n+=`${h(r)}`;else if(/^\d/.test(r))n+=`${h(r)}`;else if(/^[A-Za-z_$][\w$]*$/.test(r)&&((l=t[s.index+r.length])!=null&&l.match(/\s|\(/))){let o=/^(async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)$/.test(r);n+=o?`${r}`:`${r}`}else n+=h(r);i=s.index+r.length}n+=h(t.slice(i)),e.innerHTML=n,e.classList.add("hljs")}function ft(){document.querySelectorAll("code.language-js, code.language-javascript").forEach(ut),window.hljs&&document.querySelectorAll("code:not(.language-js):not(.language-javascript)").forEach(e=>window.hljs.highlightElement(e))}function z(){ft(),document.querySelectorAll(".code-example .btn-icon").forEach(e=>{e.addEventListener("click",async()=>{var s,l;let t=e.closest(".code-example"),a=t==null?void 0:t.querySelector("code"),n=(s=a==null?void 0:a.textContent)!=null?s:"",i=e.innerHTML;if(n){try{(l=navigator.clipboard)!=null&&l.writeText?await navigator.clipboard.writeText(n):me(n)}catch(r){me(n)}e.innerHTML='',setTimeout(()=>{e.innerHTML=i},1200)}})})}var P={Helper:m,Toasts:C,Modals:g,advancedSelect:b,editableString:E,confirmPopup:S,Drawer:O,NavigationShell:x,Overlays:A,InputPatterns:$,Accordion:q,Tabs:N};window.GNexusUIKit=P;Object.assign(window,P);document.addEventListener("DOMContentLoaded",()=>{A.init(),x.init(),$.init(),q.init(),N.init(),W(),z()});var mt=P;return be(pt);})(); + `}function E(e,t){t=t!=null?t:!1;let a=e.innerHTML,n=m.template.createElement("div",{class:"component editable-string-component"},Pe(a,t));e.innerHTML="",e.append(n);let i=n.querySelector(".edit-text-btn"),o=n.querySelector(".apply-changes-btn"),l=n.querySelector(".cancel-changes-btn"),c=n.querySelector(".editable-string-content"),s=n.querySelector(".editable-string"),r=n.querySelector(".editable-string-form"),u=n.querySelector(".input");return n.editableString={formIsDisplaying:!1,value:a,input:u,eventsHandlers:{onChange:[],onSwitch:[]},switch:()=>{n.formIsDisplaying?(r.classList.add("d-none"),c.classList.remove("d-none"),s.innerText=n.editableString.value):(r.classList.remove("d-none"),c.classList.add("d-none"),u.value=n.editableString.value),n.formIsDisplaying=!n.formIsDisplaying,n.editableString.runEventHandler("onSwitch")},setValue:d=>{n.editableString.value=d,u.value=d,s.innerText=d},apply:()=>{n.editableString.value=u.value,n.editableString.switch(),u.value!=a&&n.editableString.runEventHandler("onChange")},onChange:d=>{n.editableString.eventsHandlers.onChange.push(d)},onSwitch:d=>{n.editableString.eventsHandlers.onSwitch.push(d)},runEventHandler:d=>{n.editableString.eventsHandlers[d].forEach(f=>f(n.editableString))}},i.addEventListener("click",d=>{n.editableString.switch()}),l.addEventListener("click",d=>{n.editableString.switch()}),o.addEventListener("click",d=>{n.editableString.apply()}),u.addEventListener("keydown",d=>{d.key==="Enter"&&(u.blur(),n.editableString.apply())}),n}function S(e,t,a){g.create("confirm-popup",{title:"Requires confirmation",body:()=>{let n=document.createElement("p");return n.textContent=e!=null?e:"",n},actions:n=>{let i=m.template.createElement("button",{class:"btn btn-primary"},"NO"),o=m.template.createElement("button",{class:"btn btn-warning"},"YES");return i.addEventListener("click",l=>{n.close(),a==null||a()}),o.addEventListener("click",l=>{n.close(),t==null||t()}),[i,o]}}).show()}function L(e,t,a="html"){if(t instanceof Node){e.append(t);return}typeof t!="undefined"&&t!==null&&(a==="text"?e.textContent=t:e.innerHTML=t)}function ze(e,t,a,n={}){var f;let i=document.createElement("div");i.className="drawer",i.setAttribute("aria-hidden","true"),i.id=e,n.position==="left"&&i.classList.add("drawer-left");let o=document.createElement("div");o.className="drawer-backdrop";let l=document.createElement("aside");l.className="drawer-panel",l.setAttribute("role","dialog"),l.setAttribute("aria-modal","true"),l.setAttribute("aria-labelledby",`${e}-title`);let c=document.createElement("header");c.className="drawer-header";let s=document.createElement("h4");s.className="drawer-title",s.id=`${e}-title`,s.textContent=t;let r=document.createElement("button");r.className="btn-icon drawer-close",r.type="button",r.setAttribute("aria-label","Close"),r.textContent="\u2715";let u=document.createElement("div");u.className="drawer-body";let d=document.createElement("footer");return d.className="drawer-footer",L(d,a,(f=n.footerMode)!=null?f:"html"),c.append(s,r),l.append(c,u,d),i.append(o,l),i}function Ve(e,t){return e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.close=function(){e.classList.add("a-hide"),setTimeout(()=>{e.remove()},300)},e.querySelector(".drawer-close").addEventListener("click",()=>{e.close()}),e.querySelector(".drawer-backdrop").addEventListener("click",()=>{e.close()}),typeof t=="function"&&t(e),e}function Ye(e,t){var c;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=ze(e,a,n,t),o=i.querySelector(".drawer-body"),l=i.querySelector(".drawer-footer");if(typeof t.actions=="function"){let s=t.actions(i);if(Array.isArray(s)&&s[0]instanceof Node){let r=document.createElement("div");r.classList.add("actions");for(let u of s)r.append(u);l.append(r)}else s instanceof Node&&l.append(s)}if(typeof t.body=="function"){let s=t.body(i);L(o,s,(c=t.bodyMode)!=null?c:"html")}else typeof t.bodyText!="undefined"?L(o,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&L(o,t.bodyHtml,"html");return Ve(i,t==null?void 0:t.onready)}var O={create:Ye};var G=new WeakSet;function _e(e,t){var n,i;let a=e.getAttribute("aria-controls");return a?((n=t.getElementById)==null?void 0:n.call(t,a))||document.getElementById(a):((i=t.querySelector)==null?void 0:i.call(t,"[data-navigation-drawer]"))||document.querySelector("[data-navigation-drawer]")}function Z(e,t){var n;if(!e)return;e.classList.add("is-open"),e.setAttribute("aria-hidden","false"),e.removeAttribute("inert"),t==null||t.setAttribute("aria-expanded","true"),document.body.classList.add("nav-drawer-open");let a=e.querySelector("[data-navigation-close], a, button, input, select, textarea");(n=a==null?void 0:a.focus)==null||n.call(a)}function w(e,t,a=!0){var n;e&&(e.classList.remove("is-open"),e.setAttribute("aria-hidden","true"),e.setAttribute("inert",""),t==null||t.setAttribute("aria-expanded","false"),document.body.classList.remove("nav-drawer-open"),a&&((n=t==null?void 0:t.focus)==null||n.call(t)))}function Ke(e=document){G.has(e)||(e.addEventListener("click",t=>{let a=t.target.closest("[data-navigation-toggle]");if(!a)return;let n=_e(a,e);n!=null&&n.classList.contains("is-open")?w(n,a):Z(n,a)}),e.addEventListener("click",t=>{let a=t.target.closest("[data-navigation-close], [data-navigation-link], .nav-drawer .list-action");if(!a)return;let n=a.closest("[data-navigation-drawer]")||e.querySelector("[data-navigation-drawer]"),i=n!=null&&n.id?e.querySelector(`[data-navigation-toggle][aria-controls="${n.id}"]`):e.querySelector("[data-navigation-toggle]"),o=!a.matches("[data-navigation-link]");w(n,i,o)}),document.addEventListener("keydown",t=>{t.key==="Escape"&&e.querySelectorAll("[data-navigation-drawer].is-open").forEach(a=>{let n=a.id?e.querySelector(`[data-navigation-toggle][aria-controls="${a.id}"]`):e.querySelector("[data-navigation-toggle]");w(a,n)})}),G.add(e))}var x={init:Ke,open:Z,close:w};var Q=new WeakSet,X=!1;function Je(e){e.classList.remove("is-open"),e.querySelectorAll("[aria-expanded='true']").forEach(t=>{t.setAttribute("aria-expanded","false")})}function p(e=null){document.querySelectorAll(".dropdown.is-open, .popover.is-open, .tooltip.is-open").forEach(t=>{t!==e&&Je(t)})}function Ge(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-dropdown-toggle]");if(!a)return;let n=a.closest(".dropdown");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i),a.setAttribute("aria-expanded",String(!i))})}function Ze(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-popover-toggle]");if(!a)return;let n=a.closest(".popover");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i),a.setAttribute("aria-expanded",String(!i))})}function Qe(e=document){e.addEventListener("click",t=>{let a=t.target.closest("[data-tooltip-toggle]");if(!a)return;let n=a.closest(".tooltip");if(!n)return;t.preventDefault();let i=n.classList.contains("is-open");p(n),n.classList.toggle("is-open",!i)})}function Xe(e=document){e.addEventListener("click",t=>{t.target.closest(".dropdown, .popover, .tooltip")||p()}),X||(document.addEventListener("keydown",t=>{t.key==="Escape"&&p()}),X=!0)}function et(e=document){Q.has(e)||(Ge(e),Ze(e),Qe(e),Xe(e),Q.add(e))}var A={init:et,closeAll:p};var ee=new WeakSet,ae=new WeakMap;function te(e){return`${e.name}:${e.size}:${e.lastModified}`}function ie(e){e&&(e.querySelectorAll("img[data-object-url]").forEach(t=>{URL.revokeObjectURL(t.dataset.objectUrl)}),e.innerHTML="",e.hidden=!0)}function F(e){return ae.get(e)||[]}function I(e,t){ae.set(e,t);let a=new DataTransfer;t.forEach(n=>a.items.add(n)),e.files=a.files}function tt(e,t){let a=F(e),n=new Set(a.map(te)),i=[...a];return t.forEach(o=>{let l=te(o);n.has(l)||(n.add(l),i.push(o))}),I(e,i),i}function nt(e,t){let a=F(e).filter((n,i)=>i!==t);return I(e,a),a}function ne(e){let t=e.name.split("."),a=t.length>1?t.pop().trim():"";return a?a.slice(0,6).toUpperCase():e.type?e.type.split("/").pop().slice(0,6).toUpperCase():"FILE"}function at(e){if(!Number.isFinite(e))return"";if(e===0)return"0 B";let t=["B","KB","MB","GB"],a=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1),n=e/Math.pow(1024,a);return`${n.toFixed(n>=10||a===0?0:1)} ${t[a]}`}function k(e){let t=e.closest(".file-upload-panel, .file-upload"),a=t==null?void 0:t.querySelector("[data-file-upload-preview]");if(!t||!a)return;let n=F(e);if(!n.length){ie(a);return}it(a,n)}function it(e,t){e&&(ie(e),t.forEach((a,n)=>{let i=document.createElement("figure");i.className="file-upload-preview-item",i.dataset.fileUploadIndex=String(n);let o=document.createElement("div");if(o.className="file-upload-preview-visual",a.type.startsWith("image/")){let u=document.createElement("img"),d=URL.createObjectURL(a);u.src=d,u.dataset.objectUrl=d,u.alt="",u.loading="lazy",o.append(u)}else{let u=document.createElement("span");u.className="file-upload-preview-type",u.textContent=ne(a),o.append(u)}let l=document.createElement("figcaption"),c=document.createElement("span");c.className="file-upload-preview-name",c.textContent=a.name;let s=document.createElement("span");s.className="file-upload-preview-meta",s.textContent=`${ne(a)} / ${at(a.size)}`;let r=document.createElement("button");r.className="file-upload-preview-remove",r.type="button",r.dataset.fileUploadRemove=String(n),r.setAttribute("aria-label",`Remove ${a.name}`),r.innerHTML='',l.append(c,s),i.append(r,o,l),e.append(i)}),e.hidden=!1)}function ot(e=document){ee.has(e)||(e.addEventListener("click",t=>{let a=t.target.closest("[data-input-clear]");if(!a)return;let n=a.closest(".input-group"),i=n==null?void 0:n.querySelector("input, textarea");i&&(i.value="",i.dispatchEvent(new Event("input",{bubbles:!0})),i.focus())}),e.addEventListener("click",t=>{let a=t.target.closest("[data-file-upload-remove]");if(!a)return;let n=a.closest(".file-upload-panel, .file-upload"),i=n==null?void 0:n.querySelector("[data-file-upload-input]");i&&(nt(i,Number(a.dataset.fileUploadRemove)),k(i),i.dispatchEvent(new Event("change",{bubbles:!0})))}),e.addEventListener("click",t=>{let a=t.target.closest("[data-date-picker]");if(a&&(a.focus(),typeof a.showPicker=="function"))try{a.showPicker()}catch(n){}}),e.addEventListener("change",t=>{let a=t.target.closest("[data-file-upload-input]");a&&(tt(a,Array.from(a.files||[])),k(a))}),e.addEventListener("reset",t=>{let a=t.target.closest("form");a&&setTimeout(()=>{a.querySelectorAll("[data-file-upload-input]").forEach(n=>{I(n,[]),k(n)})},0)}),ee.add(e))}var $={init:ot,updateFileUpload:k};var oe=new WeakSet;function j(e){return e.querySelector(".accordion-panel")}function st(e){let t=j(e);t&&(t.style.height="auto",t.style.opacity="1",t.style.transform="translateY(0)")}function se(e){let t=j(e);if(!t||e.dataset.animating==="true")return;e.dataset.animating="true",e.open=!0,t.style.height="0px",t.style.opacity="0",t.style.transform="translateY(-8px)",requestAnimationFrame(()=>{t.style.height=`${t.scrollHeight}px`,t.style.opacity="1",t.style.transform="translateY(0)"});let a=n=>{n.propertyName==="height"&&(t.removeEventListener("transitionend",a),t.style.height="auto",delete e.dataset.animating)};t.addEventListener("transitionend",a)}function le(e){let t=j(e);if(!t||e.dataset.animating==="true")return;e.dataset.animating="true",t.style.height=`${t.scrollHeight}px`,t.style.opacity="1",t.style.transform="translateY(0)",requestAnimationFrame(()=>{t.style.height="0px",t.style.opacity="0",t.style.transform="translateY(-8px)"});let a=n=>{n.propertyName==="height"&&(t.removeEventListener("transitionend",a),e.open=!1,t.style.height="",t.style.opacity="",t.style.transform="",delete e.dataset.animating)};t.addEventListener("transitionend",a)}function ce(e){e.open?le(e):se(e)}function lt(e=document){oe.has(e)||(e.querySelectorAll(".accordion-item[open], .disclosure[open]").forEach(st),e.addEventListener("click",t=>{let a=t.target.closest(".accordion-summary");if(!a)return;let n=a.closest(".accordion-item, .disclosure");n&&(t.preventDefault(),ce(n))}),oe.add(e))}var q={init:lt,expand:se,collapse:le,toggle:ce};var re=new WeakSet;function B(e){return[...e.querySelectorAll('[role="tab"], .tab')]}function de(e){return[...e.querySelectorAll('[role="tabpanel"], .tab-panel')]}function ue(e,t){let a=t.getAttribute("aria-controls");return a?e.querySelector(`#${CSS.escape(a)}`):null}function fe(e,t){e.classList.toggle("tab-active",t),e.setAttribute("aria-selected",t?"true":"false"),e.setAttribute("tabindex",t?"0":"-1")}function R(e,t){e.classList.toggle("tab-panel-active",t),e.toggleAttribute("hidden",!t)}function U(e,t={}){var i;if(!e||e.disabled||e.getAttribute("aria-disabled")==="true")return;let a=e.closest(".tabs")||((i=e.closest('[role="tablist"]'))==null?void 0:i.parentElement);if(!a)return;B(a).forEach(o=>fe(o,o===e)),de(a).forEach(o=>R(o,!1));let n=ue(a,e);n&&R(n,!0),t.focus!==!1&&e.focus()}function T(e,t,a){for(let n=1;n<=e.length;n++){let i=(t+n*a+e.length)%e.length,o=e[i];if(!o.disabled&&o.getAttribute("aria-disabled")!=="true")return o}return e[t]}function ct(e){var l;let t=e.target.closest('[role="tab"], .tab');if(!t)return;let a=t.closest(".tabs")||((l=t.closest('[role="tablist"]'))==null?void 0:l.parentElement),n=a?B(a):[],i=n.indexOf(t);if(i<0)return;let o=null;e.key==="ArrowRight"||e.key==="ArrowDown"?o=T(n,i,1):e.key==="ArrowLeft"||e.key==="ArrowUp"?o=T(n,i,-1):e.key==="Home"?o=T(n,-1,1):e.key==="End"&&(o=T(n,0,-1)),o&&(e.preventDefault(),U(o))}function rt(e){let t=B(e),a=t.find(n=>n.classList.contains("tab-active")||n.getAttribute("aria-selected")==="true")||t.find(n=>!n.disabled&&n.getAttribute("aria-disabled")!=="true");t.forEach(n=>{n.setAttribute("role","tab"),fe(n,n===a)}),e.querySelectorAll(".tabs-list").forEach(n=>{n.setAttribute("role","tablist")}),de(e).forEach(n=>{n.setAttribute("role","tabpanel"),R(n,a?n===ue(e,a):n.classList.contains("tab-panel-active"))})}function dt(e=document){re.has(e)||(e.querySelectorAll(".tabs").forEach(rt),e.addEventListener("click",t=>{let a=t.target.closest('[role="tab"], .tab');!a||!e.contains(a)||(t.preventDefault(),U(a,{focus:!1}))}),e.addEventListener("keydown",ct),re.add(e))}var N={init:dt,activate:U};function W(){let e=[...document.querySelectorAll(".nav-drawer .list-item")],t=document.querySelector("[data-docs-current-section]");if(!e.length)return;let a=i=>{e.forEach(o=>{var s;let l=o.querySelector(".list-action"),c=(l==null?void 0:l.getAttribute("href"))===`#${i}`;o.classList.toggle("list-item-active",c),c&&t&&(t.textContent=((s=l.querySelector(".list-label"))==null?void 0:s.textContent.trim())||i)})},n=()=>{var o;let i=(o=window.location.hash)==null?void 0:o.slice(1);i&&a(i)};window.addEventListener("hashchange",n),n()}function me(e){let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","readonly"),t.style.position="fixed",t.style.opacity="0",document.body.append(t),t.select(),document.execCommand("copy"),t.remove()}function h(e){return e.replace(/&/g,"&").replace(//g,">")}function ut(e){var l;let t=e.textContent,a=/\/\/.*$|\/\*[\s\S]*?\*\/|`(?:\\[\s\S]|[^`\\])*`|'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|\b(?:async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)\b|\b\d+(?:\.\d+)?\b|\b[A-Za-z_$][\w$]*(?=\s*\()/gm,n="",i=0,o;for(;(o=a.exec(t))!==null;){let c=o[0];if(n+=h(t.slice(i,o.index)),c.startsWith("//")||c.startsWith("/*"))n+=`${h(c)}`;else if(c.startsWith('"')||c.startsWith("'")||c.startsWith("`"))n+=`${h(c)}`;else if(/^\d/.test(c))n+=`${h(c)}`;else if(/^[A-Za-z_$][\w$]*$/.test(c)&&((l=t[o.index+c.length])!=null&&l.match(/\s|\(/))){let s=/^(async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)$/.test(c);n+=s?`${c}`:`${c}`}else n+=h(c);i=o.index+c.length}n+=h(t.slice(i)),e.innerHTML=n,e.classList.add("hljs")}function ft(){document.querySelectorAll("code.language-js, code.language-javascript").forEach(ut),window.hljs&&document.querySelectorAll("code:not(.language-js):not(.language-javascript)").forEach(e=>window.hljs.highlightElement(e))}function P(){ft(),document.querySelectorAll(".code-example .btn-icon").forEach(e=>{e.addEventListener("click",async()=>{var o,l;let t=e.closest(".code-example"),a=t==null?void 0:t.querySelector("code"),n=(o=a==null?void 0:a.textContent)!=null?o:"",i=e.innerHTML;if(n){try{(l=navigator.clipboard)!=null&&l.writeText?await navigator.clipboard.writeText(n):me(n)}catch(c){me(n)}e.innerHTML='',setTimeout(()=>{e.innerHTML=i},1200)}})})}var z={Helper:m,Toasts:C,Modals:g,advancedSelect:b,editableString:E,confirmPopup:S,Drawer:O,NavigationShell:x,Overlays:A,InputPatterns:$,Accordion:q,Tabs:N};window.GNexusUIKit=z;Object.assign(window,z);document.addEventListener("DOMContentLoaded",()=>{A.init(),x.init(),$.init(),q.init(),N.init(),W(),P()});var mt=z;return be(pt);})(); //# sourceMappingURL=gnexus-ui-kit.js.map diff --git a/dist/js/gnexus-ui-kit.js.map b/dist/js/gnexus-ui-kit.js.map index bcefeec..51d77d8 100644 --- a/dist/js/gnexus-ui-kit.js.map +++ b/dist/js/gnexus-ui-kit.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../src/js/index.js", "../../src/js/components/helper.js", "../../src/js/components/toasts.js", "../../src/js/components/modals.js", "../../src/js/components/advanced-select.js", "../../src/js/components/editable-string.js", "../../src/js/components/confirm-popup.js", "../../src/js/components/drawer.js", "../../src/js/components/navigation-shell.js", "../../src/js/components/overlays.js", "../../src/js/components/input-patterns.js", "../../src/js/components/accordion.js", "../../src/js/components/tabs.js", "../../src/js/demo-navigation.js", "../../src/js/code-examples.js"], - "sourcesContent": ["import Helper from \"./components/helper.js\";\nimport Toasts from \"./components/toasts.js\";\nimport Modals from \"./components/modals.js\";\nimport advancedSelect from \"./components/advanced-select.js\";\nimport editableString from \"./components/editable-string.js\";\nimport confirmPopup from \"./components/confirm-popup.js\";\nimport Drawer from \"./components/drawer.js\";\nimport NavigationShell from \"./components/navigation-shell.js\";\nimport Overlays from \"./components/overlays.js\";\nimport InputPatterns from \"./components/input-patterns.js\";\nimport Accordion from \"./components/accordion.js\";\nimport Tabs from \"./components/tabs.js\";\nimport demoNavigation from \"./demo-navigation.js\";\nimport codeExamples from \"./code-examples.js\";\n\nconst api = {\n Helper,\n Toasts,\n Modals,\n advancedSelect,\n editableString,\n confirmPopup,\n Drawer,\n NavigationShell,\n Overlays,\n InputPatterns,\n Accordion,\n Tabs\n};\n\nwindow.GNexusUIKit = api;\nObject.assign(window, api);\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n Overlays.init();\n NavigationShell.init();\n InputPatterns.init();\n Accordion.init();\n Tabs.init();\n demoNavigation();\n codeExamples();\n});\n\nexport {\n Helper,\n Toasts,\n Modals,\n advancedSelect,\n editableString,\n confirmPopup,\n Drawer,\n NavigationShell,\n Overlays,\n InputPatterns,\n Accordion,\n Tabs\n};\n\nexport default api;\n", "function sidebarNav(items) {\n\tlet listItems = \"\";\n\n\tfor(let item of items) {\n\t\tlet aOpen = \"\";\n\t\tlet aClose = \"\";\n\t\tif(item.route) {\n\t\t\taOpen = ``;\n\t\t\taClose = ``;\n\t\t}\n\n\t\tlistItems += `\n\t\t\t
  • \n\t\t\t\t${aOpen}${item.content}${aClose}\n\t\t\t
  • \n\t\t`;\n\t}\n\n\treturn `\n\t\t
    \n\t\t\t
      \n\t\t\t\t${listItems} \n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction table(caption, columns, data, tfoot) {\n\tlet head = ``;\n\tlet totalColumns = 0;\n\tfor(let key in columns) {\n\t\thead += `${columns[key]}`;\n\t\ttotalColumns++;\n\t}\n\thead += \"\";\n\n\tlet body = ``;\n\tfor(let item of data) {\n\t\tbody += ``;\n\t\tfor(let column in columns) {\n\t\t\tbody += `${item[column]}`;\n\t\t}\n\t\tbody += ``;\n\t}\n\n\tlet foot = \"\";\n\tif(typeof tfoot != \"undefined\") {\n\t\tfoot = `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${tfoot}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`\n\t}\n\n\tconst tableCaption = caption \n\t\t? `${caption}`\n\t\t: '';\n\n\tconst tableHead = data.length \n\t\t? `${head}`\n\t\t: '';\n\n\tbody = data.length\n\t\t? body\n\t\t: `Empty`;\n\n\tconst tableEmptyClass = !data.length \n\t\t? \"table-empty\"\n\t\t: \"\";\n\n\treturn `\n\t\t
    \n\t\t\t\n\t\t\t\t${tableCaption}\n\t\t\t\t${tableHead}\n\t\t\t\t${body}\n\t\t\t\t${foot}\n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction createElement(type, props, content) {\n\tconst node = document.createElement(type);\n\n\tfor (const [key, value] of Object.entries(props)) {\n\t\tif (key === \"class\") {\n\t\t\tnode.className = value;\n\t\t} else if (key === \"dataset\") {\n\t\t\tObject.assign(node.dataset, value);\n\t\t} else {\n\t\t\tnode.setAttribute(key, value);\n\t\t}\n\t}\n\n\tnode.innerHTML = (typeof content != \"undefined\") ? content : \"\";\n\treturn node; \n}\n\nfunction createAlert(type, content) {\n\tif([\"primary\", \"success\", \"secondary\", \"info\", \"warning\", \"error\", \"danger\"].indexOf(type) < 0) {\n\t\treturn console.error(\"createAlert()\", \"Error of type: \" + type);\n\t}\n\n\treturn createElement(\"div\", {\n\t\tclass: `alert alert-${type}`,\n\t}, content);\n}\n\nfunction fieldsUnification(data, map = {}) {\n\tconst dataObj = {};\n\n\tfor(let field in data) {\n\t\tif(typeof map[field] != \"undefined\") {\n\t\t\tdataObj[ map[field] ] = data[field];\n\t\t\tcontinue;\n\t\t}\n\n\t\tdataObj[field] = data[field];\n\t}\n\n\treturn dataObj;\n}\n\nfunction btnLoadingState(btn, isLoading) {\n\tif(btn?.isLoading == isLoading) {\n\t\treturn false;\n\t}\n\n\tif(isLoading) {\n\t\tbtn.isLoading = true;\n\t\tbtn.originalContent = btn.innerHTML;\n\t\tif(btn.classList.contains(\"with-icon\")) {\n\t\t\tbtn.originalWithIcon = true;\n\t\t} else {\n\t\t\tbtn.classList.add(\"with-icon\");\n\t\t}\n\n\t\tbtn.classList.add(\"loading-state\");\n\t\tbtn.setAttribute(\"disabled\", \"disabled\");\n\t\tbtn.innerHTML = ` Loading`;\n\t} else {\n\t\tbtn.isLoading = false;\n\t\tif(!btn.originalContent) {\n\t\t\treturn false;\n\t\t}\n\t\tbtn.removeAttribute(\"disabled\");\n\t\tbtn.classList.remove(\"loading-state\");\n\t\tif(!btn.originalWithIcon) {\n\t\t\tbtn.classList.remove(\"with-icon\");\n\t\t}\n\t\tbtn.innerHTML = btn.originalContent;\n\t}\n\n\treturn btn;\n}\n\nfunction cardStatusLoadingState(card, isLoading) {\n\tif(card?.isLoading == isLoading) {\n\t\treturn false;\n\t}\n\n\tconst iconContainer = card.querySelector(\".status-icon\");\n\n\tif(isLoading) {\n\t\tcard.isLoading = true;\n\t\tcard.originalContent = iconContainer.innerHTML;\n\t\tcard.classList.add(\"loading-state\");\n\t\tcard.setAttribute(\"disabled\", \"disabled\");\n\t\ticonContainer.innerHTML = ``;\n\t} else {\n\t\tcard.isLoading = false;\n\t\tif(!card.originalContent) {\n\t\t\treturn false;\n\t\t}\n\t\tcard.removeAttribute(\"disabled\");\n\t\tcard.classList.remove(\"loading-state\");\n\t\ticonContainer.innerHTML = card.originalContent;\n\t}\n\n\treturn card;\n}\n\nfunction mainTemplate(sidebar, content) {\n\tcontent = content ?? \"\";\n\treturn `\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t${sidebar}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t${content}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction connectionStatusBadge(status) {\n\treturn status == \"active\"\n\t\t? `Online`\n\t\t: `Offline`;\n}\n\nfunction toogleStateBadge(state) {\n\treturn state == \"enabled\"\n\t\t? `Enabled`\n\t\t: `Disabled`;\n}\n\nfunction timeAgo(dateString) {\n\tconst date = new Date(dateString.replace(\" \", \"T\"));\n\tconst now = new Date();\n\n\tconst diff_seconds = Math.floor((now - date) / 1000);\n\n\tif (diff_seconds < 60) {\n\t\treturn \"less than a minute ago\";\n\t}\n\n\tconst minutes = Math.floor(diff_seconds / 60);\n\tconst hours = Math.floor(minutes / 60);\n\tconst days = Math.floor(hours / 24);\n\n\tif (minutes < 60) {\n\t\treturn `${minutes} minute${minutes !== 1 ? \"s\" : \"\"} ago`;\n\t}\n\n\tif (hours < 24) {\n\t\tconst remain_minutes = minutes % 60;\n\t\treturn `${hours} hour${hours !== 1 ? \"s\" : \"\"} ${remain_minutes} minute${remain_minutes !== 1 ? \"s\" : \"\"} ago`;\n\t}\n\n\treturn `${days} day${days !== 1 ? \"s\" : \"\"} ago`;\n}\n\nfunction formatDate(dateString) {\n\tconst date = new Date(dateString.replace(\" \", \"T\"));\n\tconst now = new Date();\n\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\tconst target_day = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\n\tconst diff_days = Math.floor((today - target_day) / 86400000);\n\n\tconst hours = String(date.getHours()).padStart(2, \"0\");\n\tconst minutes = String(date.getMinutes()).padStart(2, \"0\");\n\n\tif (diff_days === 0) {\n\t\treturn `Today at ${hours}:${minutes}`;\n\t}\n\n\tif (diff_days === 1) {\n\t\treturn `Yesterday at ${hours}:${minutes}`;\n\t}\n\n\tconst months = [\n\t\t\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n\t\t\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n\t];\n\n\treturn `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()} at ${hours}:${minutes}`;\n}\n\nfunction circleLoaderHTML() {\n\treturn `\n\t\t
    \n\t\t\t\n\t\t\tLoading\n\t\t
    \n\t`;\n}\n\nfunction emptyHereHTML() {\n\treturn `\n\t\t
    \n\t\t\t
    \n\t\t\t

    It's empty here yet

    \n\t\t
    \n\t`;\n}\n\nexport default {\n\ttemplate: {\n\t\tsidebarNav,\n\t\ttable,\n\t\tcreateElement,\n\t\tcreateAlert,\n\t\tmainTemplate,\n\t\tconnectionStatusBadge,\n\t\ttoogleStateBadge,\n\t\tcircleLoaderHTML,\n\t\temptyHereHTML,\n\t},\n\tunification: {\n\t\tfieldsUnification,\n\t\ttimeAgo,\n\t\tformatDate\n\t},\n\tstates: {\n\t\tbtnLoadingState,\n\t\tcardStatusLoadingState\n\t}\n}\n", "function appendIcon(container, icon) {\n\tif(icon instanceof Node) {\n\t\tcontainer.append(icon);\n\t\treturn;\n\t}\n\n\tconst iconWrap = document.createElement(\"span\");\n\ticonWrap.innerHTML = icon;\n\tcontainer.append(...iconWrap.childNodes);\n}\n\nfunction template(type, icon, title, text) {\n\tconst toast = document.createElement(\"div\");\n\ttoast.className = `toast toast-${type}`;\n\ttoast.setAttribute(\"role\", \"alert\");\n\n\tconst content = document.createElement(\"div\");\n\tcontent.className = \"toast-content\";\n\n\tconst toastTitle = document.createElement(\"h4\");\n\ttoastTitle.className = \"toast-title\";\n\tappendIcon(toastTitle, icon);\n\ttoastTitle.append(document.createTextNode(` ${title ?? \"\"}`));\n\n\tconst toastText = document.createElement(\"p\");\n\ttoastText.className = \"toast-text\";\n\ttoastText.textContent = text ?? \"\";\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon toast-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tcontent.append(toastTitle, toastText);\n\ttoast.append(content, close);\n\n\treturn toast;\n}\n\nfunction init(toast, props) {\n\tif(props?.alone) {\n\t\tdocument.querySelectorAll(\".toast\").forEach(i => i.close?.());\n\t}\n\n\ttoast.close = function() {\n\t\tthis.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tthis.remove();\n\t\t}, 300);\n\t}\n\n\ttoast.querySelector(\".toast-close\").addEventListener(\"click\", e => {\n\t\ttoast.close();\n\t});\n\n\ttoast.show = function() {\n\t\tdocument.querySelector(\"body\").append(toast);\n\n\t\tsetTimeout(() => {\n\t\t\ttoast.classList.add(\"a-show\");\n\t\t}, 10);\n\t}\n\n\ttoast.addEventListener(\"mouseover\", e => toast.ishovered = true);\n\ttoast.addEventListener(\"mouseout\", e => toast.ishovered = false);\n\n\tif(props?.lifetime) {\n\t\tconst lifetimeInterval = setInterval(() => {\n\t\t\tif(!toast.ishovered) {\n\t\t\t\ttoast.close();\n\t\t\t\tclearInterval(lifetimeInterval);\n\t\t\t}\n\t\t}, props?.lifetime);\n\t}\n\n\treturn toast;\n}\n\nfunction create(type, icon, title, text, props) {\n\treturn init(template(type, icon, title, text), props);\n}\n\nfunction createSuccess(title, text, props) {\n\tif(typeof props == \"undefined\") {\n\t\tprops = {};\n\t}\n\n\tif(typeof props.lifetime == \"undefined\") {\n\t\tprops.lifetime = 4000;\n\t}\n\n\tif(typeof props.alone == \"undefined\") {\n\t\tprops.alone = true;\n\t}\n\n\treturn create(\n\t\t\"success\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createInfo(title, text, props) {\n\treturn create(\n\t\t\"info\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createWarning(title, text, props) {\n\treturn create(\n\t\t\"warning\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createError(title, text, props) {\n\treturn create(\n\t\t\"danger\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nexport default {\n create,\n createInfo,\n createSuccess,\n createWarning,\n createError,\n \"createDanger\": createError\n};\n", "function appendContent(container, content, mode = \"html\") {\n\tif(content instanceof Node) {\n\t\tcontainer.append(content);\n\t\treturn;\n\t}\n\n\tif(typeof content != \"undefined\" && content !== null) {\n\t\tif(mode === \"text\") {\n\t\t\tcontainer.textContent = content;\n\t\t} else {\n\t\t\tcontainer.innerHTML = content;\n\t\t}\n\t}\n}\n\nfunction template(id, title, footer, props = {}) {\n\tconst modal = document.createElement(\"div\");\n\tmodal.className = \"modal\";\n\tmodal.setAttribute(\"aria-hidden\", \"true\");\n\tmodal.id = id;\n\n\tconst backdrop = document.createElement(\"div\");\n\tbackdrop.className = \"modal-backdrop\";\n\n\tconst dialog = document.createElement(\"div\");\n\tdialog.className = \"modal-dialog\";\n\tdialog.setAttribute(\"role\", \"dialog\");\n\tdialog.setAttribute(\"aria-modal\", \"true\");\n\tdialog.setAttribute(\"aria-labelledby\", `${id}-title`);\n\n\tconst panel = document.createElement(\"div\");\n\tpanel.className = \"modal-panel\";\n\n\tconst header = document.createElement(\"header\");\n\theader.className = \"modal-header\";\n\n\tconst modalTitle = document.createElement(\"h4\");\n\tmodalTitle.className = \"modal-title\";\n\tmodalTitle.id = `${id}-title`;\n\tmodalTitle.textContent = title;\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon modal-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tconst body = document.createElement(\"div\");\n\tbody.className = \"modal-body\";\n\n\tconst modalFooter = document.createElement(\"footer\");\n\tmodalFooter.className = \"modal-footer\";\n\tappendContent(modalFooter, footer, props.footerMode ?? \"html\");\n\n\theader.append(modalTitle, close);\n\tpanel.append(body, modalFooter);\n\tdialog.append(header, panel);\n\tmodal.append(backdrop, dialog);\n\n\treturn modal;\n}\n\nfunction init(modal, onready) {\n\tmodal.show = function() {\n\t\tdocument.querySelector(\"body\").append(modal);\n\n\t\tsetTimeout(() => {\n\t\t\tmodal.classList.add(\"a-show\");\n\t\t}, 10);\n\t}\n\n\tmodal.close = function() {\n\t\tmodal.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tmodal.remove();\n\t\t}, 300);\n\t}\n\n\tmodal.querySelector(\".modal-close\").addEventListener(\"click\", e => {\n\t\tmodal.close();\n\t});\n\n\tif(typeof onready == \"function\") {\n\t\tonready(modal);\n\t}\n\n\treturn modal;\n}\n\n\t/**\n\t * Create new modal window;\n\t * @param {string} id Uniq id (selector)\n\t * @param {string} title Display title\n\t * @param {object} props { body: modal => {}, actions => modal => {} }\n\t * @return {object} DOM object\n\t */\nfunction create(id, props) {\n\tprops = props ?? {};\n\tconst title = props.title || \"\";\n\tconst footer = props.footer || \"\";\n\n\tconst modal = template(id, title, footer, props);\n\n\tconst modalBody = modal.querySelector(\".modal-body\");\n\tconst modalFooter = modal.querySelector(\".modal-footer\");\n\n\tif(typeof props.actions == \"function\") {\n\t\tconst actionsResult = props.actions(modal);\n\n\t\tif(Array.isArray(actionsResult) && actionsResult[0] instanceof Node) {\n\t\t\tconst actions = document.createElement(\"div\");\n\t\t\tactions.classList.add(\"actions\");\n\t\t\tfor(let actionElement of actionsResult) {\n\t\t\t\tactions.append(actionElement);\n\t\t\t}\n\n\t\t\tmodalFooter.append(actions);\n\t\t} else if(actionsResult instanceof Node) {\n\t\t\tmodalFooter.append(actionsResult);\n\t\t}\n\t}\n\n\tif(typeof props.body == \"function\") {\n\t\tconst bodyResult = props.body(modal);\n\n\t\tappendContent(modalBody, bodyResult, props.bodyMode ?? \"html\");\n\t} else if(typeof props.bodyText != \"undefined\") {\n\t\tappendContent(modalBody, props.bodyText, \"text\");\n\t} else if(typeof props.bodyHtml != \"undefined\") {\n\t\tappendContent(modalBody, props.bodyHtml, \"html\");\n\t}\n\n\treturn init(modal, props?.onready);\n}\n\nexport default {\n\tcreate\n}\n", "function scrollToElementInFocus(container) {\n\tconst focus = container.querySelector(\".focus\");\n\tif (!focus) return;\n\n\tconst container_rect = container.getBoundingClientRect();\n\tconst focus_rect = focus.getBoundingClientRect();\n\n\tif (focus_rect.top < container_rect.top) {\n\t\tcontainer.scrollTop -= (container_rect.top - focus_rect.top);\n\t} else if (focus_rect.bottom > container_rect.bottom) {\n\t\tcontainer.scrollTop += (focus_rect.bottom - container_rect.bottom);\n\t}\n}\n\nfunction autoSetState(container) {\n\tconst totalViewed = container.advancedSelect.optionsElements.length - container.querySelectorAll(\".option.hide\").length;\n\tif(totalViewed == 0) {\n\t\tcontainer.advancedSelect.showState(\"not-found\");\n\t} else {\n\t\tcontainer.advancedSelect.showState(\"options\");\n\t}\n}\n\nfunction firstVisibleOption(container) {\n\treturn container.querySelector(\".option:not(.hide)\");\n}\n\nfunction lastVisibleOption(container) {\n\treturn container.querySelector(\".option:not(.hide):last-child\");\n}\n\nfunction selectOption(input, container, option) {\n\tif(!option) {\n\t\treturn;\n\t}\n\n\tinput.value = option.dataset.displayValue;\n\tinput.blur();\n\tinput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\tinput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n\tcontainer.advancedSelect.dispatchEvent(\"selected\");\n\tcontainer.advancedSelect.closeList();\n}\n\nexport default function advancedSelect(input, options, notFoundText) {\n\tconst container = document.createElement(\"div\");\n\tcontainer.classList.add(\"advanced-select\");\n\n\tconst popup = document.createElement(\"div\");\n\tpopup.className = \"popup-options-container\";\n\n\tconst notFound = document.createElement(\"div\");\n\tnotFound.className = \"not-found\";\n\tnotFound.textContent = notFoundText ?? \"Nothing found\";\n\n\tconst optionsContainer = document.createElement(\"div\");\n\toptionsContainer.className = \"options\";\n\n\tfor(let optionValue in options) {\n\t\tconst option = document.createElement(\"div\");\n\t\toption.className = \"option\";\n\t\toption.dataset.value = optionValue;\n\t\toption.dataset.displayValue = options[optionValue];\n\t\toption.textContent = options[optionValue];\n\t\toptionsContainer.append(option);\n\t}\n\n\tpopup.append(notFound, optionsContainer);\n\tcontainer.append(popup);\n\n\tconst existsOption = (value, options) => {\n\t\tfor(let optionValue in options) {\n\t\t\tif(options[optionValue] == value) {\n\t\t\t\tconst ret = {};\n\t\t\t\tret[optionValue] = options[optionValue];\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tcontainer.advancedSelect = {\n\t\tisOpened: false,\n\t\toptions: options,\n\t\teventsHandlers: {\n\t\t\topenList: [],\n\t\t\tcloseList: [],\n\t\t\tselected: [],\n\t\t\tchanged: [],\n\t\t},\n\t\topenList: () => {\n\t\t\tcontainer.advancedSelect.isOpened = true;\n\t\t\tcontainer.classList.add(\"a-show\");\n\t\t\tautoSetState(container);\n\t\t\tcontainer.advancedSelect.dispatchEvent(\"openList\");\n\t\t},\n\t\tcloseList: () => {\n\t\t\tcontainer.advancedSelect.isOpened = false;\n\t\t\tcontainer.classList.remove(\"a-show\");\n\t\t\tautoSetState(container);\n\t\t\tcontainer.advancedSelect.dispatchEvent(\"closeList\");\n\t\t},\n\t\tshowState: stateName => {\n\t\t\tif(stateName == \"options\") {\n\t\t\t\tcontainer.querySelector(\".options\").classList.add(\"show\");\n\t\t\t\tcontainer.querySelector(\".not-found\").classList.remove(\"show\");\n\t\t\t} else if(stateName == \"not-found\") {\n\t\t\t\tcontainer.querySelector(\".options\").classList.remove(\"show\");\n\t\t\t\tcontainer.querySelector(\".not-found\").classList.add(\"show\");\n\t\t\t}\n\t\t},\n\t\toptionsElements: container.querySelectorAll(\".option\"),\n\t\tvalue: () => {\n\t\t\tconst option = existsOption(input.value, options);\n\n\t\t\treturn { \n\t\t\t\tinputValue: input.value,\n\t\t\t\tisOption: option ? true : false,\n\t\t\t\toption \n\t\t\t};\n\t\t},\n\t\taddEventListener: (name, handler) => {\n\t\t\tif(typeof container.advancedSelect.eventsHandlers[name] != \"undefined\") {\n\t\t\t\treturn container.advancedSelect.eventsHandlers[name].push(handler);\n\t\t\t}\n\n\t\t\tconsole.error(\"Advanced Select component.\", \"addEventListener()\", \"Invalid event name\");\n\t\t},\n\t\tdispatchEvent: name => {\n\t\t\tif(typeof container.advancedSelect.eventsHandlers[name] == \"undefined\") {\n\t\t\t\treturn console.error(\"Advanced Select component.\", \"dispatchEvent()\", \"Invalid event name\");\n\t\t\t}\n\t\t\t\n\t\t\tfor(let eventHandler of container.advancedSelect.eventsHandlers[name]) {\n\t\t\t\teventHandler(container);\n\t\t\t}\n\t\t}\n\t};\n\n\tinput.setAttribute(\"autocomplete\", \"nope\");\n\n\tinput.advancedSelect = {\n\t\tvalue: () => container.advancedSelect.value()\n\t}\n\n\tinput.addEventListener(\"focus\", e => {\n\t\tcontainer.advancedSelect.openList();\n\t});\n\n\tinput.addEventListener(\"blur\", e => {\n\t\trequestAnimationFrame(() => {\n\t\t\tif(!container.matches(\":hover\")) {\n\t\t\t\tcontainer.advancedSelect.closeList();\n\t\t\t}\n\t\t});\n\t});\n\n\tinput.addEventListener(\"keydown\", e => {\n\t\tif(e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\t// up\n\t\t\tconst current = container.querySelector(\".option.focus\");\n\t\t\tif(current) {\n\t\t\t\tcurrent.classList.remove(\"focus\");\n\t\t\t\tlet prev = current.previousElementSibling;\n\n\t\t\t\twhile (prev) {\n\t\t\t\t\tif (!prev.classList.contains(\"hide\")) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tprev = prev.previousElementSibling;\n\t\t\t\t}\n\n\t\t\t\tif(!prev) {\n\t\t\t\t\tprev = firstVisibleOption(container);\n\t\t\t\t}\n\n\t\t\t\tprev?.classList.add(\"focus\");\n\t\t\t} else {\n\t\t\t\tlastVisibleOption(container)?.classList.add(\"focus\");\n\t\t\t}\n\n\t\t\tscrollToElementInFocus(container);\n\t\t} else if(e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\t// down\n\t\t\tconst current = container.querySelector(\".option.focus\");\n\t\t\tif(current) {\n\t\t\t\tcurrent.classList.remove(\"focus\");\n\t\t\t\tlet next = current.nextElementSibling;\n\n\t\t\t\twhile (next) {\n\t\t\t\t\tif (!next.classList.contains(\"hide\")) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tnext = next.nextElementSibling;\n\t\t\t\t}\n\n\t\t\t\tif(!next) {\n\t\t\t\t\tnext = firstVisibleOption(container);\n\t\t\t\t}\n\n\t\t\t\tnext?.classList.add(\"focus\");\n\t\t\t} else {\n\t\t\t\tfirstVisibleOption(container)?.classList.add(\"focus\");\n\t\t\t}\n\n\t\t\tscrollToElementInFocus(container);\n\t\t} else if(e.key === \"Enter\") {\n\t\t\te.preventDefault();\n\t\t\tlet selected = container.querySelector(\".option.focus\");\n\t\t\tselectOption(input, container, selected);\n\t\t} else if(e.key === \"Escape\") {\n\t\t\tcontainer.advancedSelect.closeList();\n\t\t\tinput.blur();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"input\", e => {\n\t\tconst val = e.currentTarget.value.toLowerCase();\n\t\tif(val == \"\") {\n\t\t\tcontainer.advancedSelect.optionsElements.forEach(i => i.classList.remove(\"hide\"));\n\t\t} else {\n\t\t\t[ ...container.advancedSelect.optionsElements ]\n\t\t\t\t.filter(i => i.dataset.displayValue.toLowerCase().indexOf(val) != -1)\n\t\t\t\t.forEach(i => i.classList.remove(\"hide\"));\n\n\t\t\t[ ...container.advancedSelect.optionsElements ]\n\t\t\t\t.filter(i => i.dataset.displayValue.toLowerCase().indexOf(val) == -1)\n\t\t\t\t.forEach(i => i.classList.add(\"hide\"));\n\n\t\t\tautoSetState(container);\n\n\t\t\tcontainer.querySelector(\".option.focus\")?.classList.remove(\"focus\");\n\t\t}\n\t});\n\n\tinput.addEventListener(\"change\", e => {\n\t\tcontainer.advancedSelect.dispatchEvent(\"changed\");\n\t});\n\n\t[ ...container.advancedSelect.optionsElements ].forEach(option => {\n\t\toption.addEventListener(\"pointerdown\", e => {\n\t\t\te.preventDefault();\n\t\t\tselectOption(input, container, e.currentTarget);\n\t\t});\n\t});\n\n\treturn container;\n}\n", "import Helper from \"./helper.js\";\n\nfunction template(originalText, isMultiString) {\n\tconst placeholder = \"Write something\";\n\tconst input = !isMultiString \n\t\t? ``\n\t\t: ``;\n\n\treturn `\n\t\t
    \n\t\t\t${originalText}\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t`;\n}\n\nexport default function editableString(stringContainer, isMultiString) {\n\tisMultiString = isMultiString ?? false;\n\n\tconst originalText = stringContainer.innerHTML;\n\n\tconst component = Helper.template.createElement(\"div\", {\n\t\t\"class\": \"component editable-string-component\"\n\t}, template(originalText, isMultiString));\n\n\tstringContainer.innerHTML = \"\";\n\tstringContainer.append(component);\n\n\tconst editBtn = component.querySelector(\".edit-text-btn\");\n\tconst applyBtn = component.querySelector(\".apply-changes-btn\");\n\tconst cancelBtn = component.querySelector(\".cancel-changes-btn\");\n\tconst content = component.querySelector(\".editable-string-content\");\n\tconst editableString = component.querySelector(\".editable-string\");\n\tconst form = component.querySelector(\".editable-string-form\");\n\tconst input = component.querySelector(\".input\");\n\n\tcomponent.editableString = {\n\t\tformIsDisplaying: false,\n\t\tvalue: originalText,\n\t\tinput: input,\n\t\teventsHandlers: {\n\t\t\tonChange: [],\n\t\t\tonSwitch: [],\n\t\t},\n\t\tswitch: () => {\n\t\t\tif(component.formIsDisplaying) {\n\t\t\t\tform.classList.add(\"d-none\");\n\t\t\t\tcontent.classList.remove(\"d-none\");\n\t\t\t\teditableString.innerText = component.editableString.value;\n\t\t\t} else {\n\t\t\t\tform.classList.remove(\"d-none\");\n\t\t\t\tcontent.classList.add(\"d-none\");\n\t\t\t\tinput.value = component.editableString.value;\n\t\t\t}\n\n\t\t\tcomponent.formIsDisplaying = !component.formIsDisplaying;\n\t\t\tcomponent.editableString.runEventHandler(\"onSwitch\");\n\t\t},\n\t\tsetValue: val => {\n\t\t\tcomponent.editableString.value = val;\n\t\t\tinput.value = val;\n\t\t\teditableString.innerText = val;\n\t\t},\n\t\tapply: () => {\n\t\t\tcomponent.editableString.value = input.value;\n\t\t\tcomponent.editableString.switch();\n\t\t\tif(input.value != originalText) {\n\t\t\t\tcomponent.editableString.runEventHandler(\"onChange\");\n\t\t\t}\n\t\t},\n\t\tonChange: cb => {\n\t\t\tcomponent.editableString.eventsHandlers.onChange.push(cb);\n\t\t},\n\t\tonSwitch: cb => {\n\t\t\tcomponent.editableString.eventsHandlers.onSwitch.push(cb);\n\t\t},\n\t\trunEventHandler: evName => {\n\t\t\tcomponent.editableString.eventsHandlers[evName].forEach(handler => handler(component.editableString));\n\t\t} \n\t}\n\n\teditBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.switch();\n\t});\n\n\tcancelBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.switch();\n\t});\n\n\tapplyBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.apply();\n\t});\n\n\tinput.addEventListener(\"keydown\", e => {\n\t\tif(e.key === \"Enter\") {\n\t\t\tinput.blur();\n\t\t\tcomponent.editableString.apply();\n\t\t}\n\t});\n\n\treturn component;\n}\n", "import Helper from \"./helper.js\";\nimport Modals from \"./modals.js\";\n\nexport default function confirmPopup(text, confirmedCb, canceledCb) {\n\tModals.create(\"confirm-popup\", {\n\t\ttitle: `Requires confirmation`,\n\t\tbody: () => {\n\t\t\tconst paragraph = document.createElement(\"p\");\n\t\t\tparagraph.textContent = text ?? \"\";\n\t\t\treturn paragraph;\n\t\t},\n\t\tactions: modal => {\n\t\t\tconst buttonNO = Helper.template.createElement(\"button\", { class: \"btn btn-primary\" }, \"NO\");\n\t\t\tconst buttonYES = Helper.template.createElement(\"button\", { class: \"btn btn-warning\" }, \"YES\");\n\n\t\t\tbuttonNO.addEventListener(\"click\", e => {\n\t\t\t\tmodal.close();\n\t\t\t\tcanceledCb?.();\n\t\t\t});\n\n\t\t\tbuttonYES.addEventListener(\"click\", e => {\n\t\t\t\tmodal.close();\n\t\t\t\tconfirmedCb?.();\n\t\t\t});\n\n\t\t\treturn [ buttonNO, buttonYES ];\n\t\t}\n\t}).show();\n}\n", "function appendContent(container, content, mode = \"html\") {\n\tif(content instanceof Node) {\n\t\tcontainer.append(content);\n\t\treturn;\n\t}\n\n\tif(typeof content != \"undefined\" && content !== null) {\n\t\tif(mode === \"text\") {\n\t\t\tcontainer.textContent = content;\n\t\t} else {\n\t\t\tcontainer.innerHTML = content;\n\t\t}\n\t}\n}\n\nfunction template(id, title, footer, props = {}) {\n\tconst drawer = document.createElement(\"div\");\n\tdrawer.className = \"drawer\";\n\tdrawer.setAttribute(\"aria-hidden\", \"true\");\n\tdrawer.id = id;\n\n\tif(props.position === \"left\") {\n\t\tdrawer.classList.add(\"drawer-left\");\n\t}\n\n\tconst backdrop = document.createElement(\"div\");\n\tbackdrop.className = \"drawer-backdrop\";\n\n\tconst panel = document.createElement(\"aside\");\n\tpanel.className = \"drawer-panel\";\n\tpanel.setAttribute(\"role\", \"dialog\");\n\tpanel.setAttribute(\"aria-modal\", \"true\");\n\tpanel.setAttribute(\"aria-labelledby\", `${id}-title`);\n\n\tconst header = document.createElement(\"header\");\n\theader.className = \"drawer-header\";\n\n\tconst drawerTitle = document.createElement(\"h4\");\n\tdrawerTitle.className = \"drawer-title\";\n\tdrawerTitle.id = `${id}-title`;\n\tdrawerTitle.textContent = title;\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon drawer-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tconst body = document.createElement(\"div\");\n\tbody.className = \"drawer-body\";\n\n\tconst drawerFooter = document.createElement(\"footer\");\n\tdrawerFooter.className = \"drawer-footer\";\n\tappendContent(drawerFooter, footer, props.footerMode ?? \"html\");\n\n\theader.append(drawerTitle, close);\n\tpanel.append(header, body, drawerFooter);\n\tdrawer.append(backdrop, panel);\n\n\treturn drawer;\n}\n\nfunction init(drawer, onready) {\n\tdrawer.show = function() {\n\t\tdocument.querySelector(\"body\").append(drawer);\n\n\t\tsetTimeout(() => {\n\t\t\tdrawer.classList.add(\"a-show\");\n\t\t}, 10);\n\t};\n\n\tdrawer.close = function() {\n\t\tdrawer.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tdrawer.remove();\n\t\t}, 300);\n\t};\n\n\tdrawer.querySelector(\".drawer-close\").addEventListener(\"click\", () => {\n\t\tdrawer.close();\n\t});\n\n\tdrawer.querySelector(\".drawer-backdrop\").addEventListener(\"click\", () => {\n\t\tdrawer.close();\n\t});\n\n\tif(typeof onready == \"function\") {\n\t\tonready(drawer);\n\t}\n\n\treturn drawer;\n}\n\nfunction create(id, props) {\n\tprops = props ?? {};\n\tconst title = props.title || \"\";\n\tconst footer = props.footer || \"\";\n\n\tconst drawer = template(id, title, footer, props);\n\n\tconst drawerBody = drawer.querySelector(\".drawer-body\");\n\tconst drawerFooter = drawer.querySelector(\".drawer-footer\");\n\n\tif(typeof props.actions == \"function\") {\n\t\tconst actionsResult = props.actions(drawer);\n\n\t\tif(Array.isArray(actionsResult) && actionsResult[0] instanceof Node) {\n\t\t\tconst actions = document.createElement(\"div\");\n\t\t\tactions.classList.add(\"actions\");\n\t\t\tfor(let actionElement of actionsResult) {\n\t\t\t\tactions.append(actionElement);\n\t\t\t}\n\n\t\t\tdrawerFooter.append(actions);\n\t\t} else if(actionsResult instanceof Node) {\n\t\t\tdrawerFooter.append(actionsResult);\n\t\t}\n\t}\n\n\tif(typeof props.body == \"function\") {\n\t\tconst bodyResult = props.body(drawer);\n\n\t\tappendContent(drawerBody, bodyResult, props.bodyMode ?? \"html\");\n\t} else if(typeof props.bodyText != \"undefined\") {\n\t\tappendContent(drawerBody, props.bodyText, \"text\");\n\t} else if(typeof props.bodyHtml != \"undefined\") {\n\t\tappendContent(drawerBody, props.bodyHtml, \"html\");\n\t}\n\n\treturn init(drawer, props?.onready);\n}\n\nexport default {\n\tcreate\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getDrawerForToggle(toggle, root) {\n\tconst id = toggle.getAttribute(\"aria-controls\");\n\n\tif(id) {\n\t\treturn root.getElementById?.(id) || document.getElementById(id);\n\t}\n\n\treturn root.querySelector?.(\"[data-navigation-drawer]\") || document.querySelector(\"[data-navigation-drawer]\");\n}\n\nfunction open(drawer, toggle) {\n\tif(!drawer) {\n\t\treturn;\n\t}\n\n\tdrawer.classList.add(\"is-open\");\n\tdrawer.setAttribute(\"aria-hidden\", \"false\");\n\tdrawer.removeAttribute(\"inert\");\n\ttoggle?.setAttribute(\"aria-expanded\", \"true\");\n\tdocument.body.classList.add(\"nav-drawer-open\");\n\n\tconst firstControl = drawer.querySelector(\"[data-navigation-close], a, button, input, select, textarea\");\n\tfirstControl?.focus?.();\n}\n\nfunction close(drawer, toggle, shouldRestoreFocus = true) {\n\tif(!drawer) {\n\t\treturn;\n\t}\n\n\tdrawer.classList.remove(\"is-open\");\n\tdrawer.setAttribute(\"aria-hidden\", \"true\");\n\tdrawer.setAttribute(\"inert\", \"\");\n\ttoggle?.setAttribute(\"aria-expanded\", \"false\");\n\tdocument.body.classList.remove(\"nav-drawer-open\");\n\n\tif(shouldRestoreFocus) {\n\t\ttoggle?.focus?.();\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst toggle = event.target.closest(\"[data-navigation-toggle]\");\n\n\t\tif(!toggle) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst drawer = getDrawerForToggle(toggle, root);\n\n\t\tif(drawer?.classList.contains(\"is-open\")) {\n\t\t\tclose(drawer, toggle);\n\t\t} else {\n\t\t\topen(drawer, toggle);\n\t\t}\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst closeControl = event.target.closest(\"[data-navigation-close], [data-navigation-link], .nav-drawer .list-action\");\n\n\t\tif(!closeControl) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst drawer = closeControl.closest(\"[data-navigation-drawer]\") || root.querySelector(\"[data-navigation-drawer]\");\n\t\tconst toggle = drawer?.id ? root.querySelector(`[data-navigation-toggle][aria-controls=\"${drawer.id}\"]`) : root.querySelector(\"[data-navigation-toggle]\");\n\t\tconst shouldRestoreFocus = !closeControl.matches(\"[data-navigation-link]\");\n\t\tclose(drawer, toggle, shouldRestoreFocus);\n\t});\n\n\tdocument.addEventListener(\"keydown\", event => {\n\t\tif(event.key !== \"Escape\") {\n\t\t\treturn;\n\t\t}\n\n\t\troot.querySelectorAll(\"[data-navigation-drawer].is-open\").forEach(drawer => {\n\t\t\tconst toggle = drawer.id ? root.querySelector(`[data-navigation-toggle][aria-controls=\"${drawer.id}\"]`) : root.querySelector(\"[data-navigation-toggle]\");\n\t\t\tclose(drawer, toggle);\n\t\t});\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\topen,\n\tclose\n};\n", "const initializedRoots = new WeakSet();\nlet keyboardDismissInitialized = false;\n\nfunction closeNode(node) {\n\tnode.classList.remove(\"is-open\");\n\tnode.querySelectorAll(\"[aria-expanded='true']\").forEach(trigger => {\n\t\ttrigger.setAttribute(\"aria-expanded\", \"false\");\n\t});\n}\n\nfunction closeAll(except = null) {\n\tdocument.querySelectorAll(\".dropdown.is-open, .popover.is-open, .tooltip.is-open\").forEach(node => {\n\t\tif(node !== except) {\n\t\t\tcloseNode(node);\n\t\t}\n\t});\n}\n\nfunction initDropdowns(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-dropdown-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dropdown = trigger.closest(\".dropdown\");\n\n\t\tif(!dropdown) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = dropdown.classList.contains(\"is-open\");\n\t\tcloseAll(dropdown);\n\t\tdropdown.classList.toggle(\"is-open\", !isOpen);\n\t\ttrigger.setAttribute(\"aria-expanded\", String(!isOpen));\n\t});\n}\n\nfunction initPopovers(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-popover-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst popover = trigger.closest(\".popover\");\n\n\t\tif(!popover) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = popover.classList.contains(\"is-open\");\n\t\tcloseAll(popover);\n\t\tpopover.classList.toggle(\"is-open\", !isOpen);\n\t\ttrigger.setAttribute(\"aria-expanded\", String(!isOpen));\n\t});\n}\n\nfunction initTooltips(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-tooltip-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltip = trigger.closest(\".tooltip\");\n\n\t\tif(!tooltip) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = tooltip.classList.contains(\"is-open\");\n\t\tcloseAll(tooltip);\n\t\ttooltip.classList.toggle(\"is-open\", !isOpen);\n\t});\n}\n\nfunction initDismiss(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tif(event.target.closest(\".dropdown, .popover, .tooltip\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseAll();\n\t});\n\n\tif(!keyboardDismissInitialized) {\n\t\tdocument.addEventListener(\"keydown\", event => {\n\t\t\tif(event.key === \"Escape\") {\n\t\t\t\tcloseAll();\n\t\t\t}\n\t\t});\n\n\t\tkeyboardDismissInitialized = true;\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\tinitDropdowns(root);\n\tinitPopovers(root);\n\tinitTooltips(root);\n\tinitDismiss(root);\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tcloseAll\n};\n", "const initializedRoots = new WeakSet();\nconst fileUploadState = new WeakMap();\n\nfunction getFileKey(file) {\n\treturn `${file.name}:${file.size}:${file.lastModified}`;\n}\n\nfunction clearFilePreviews(previewNode) {\n\tif(!previewNode) {\n\t\treturn;\n\t}\n\n\tpreviewNode.querySelectorAll(\"img[data-object-url]\").forEach(image => {\n\t\tURL.revokeObjectURL(image.dataset.objectUrl);\n\t});\n\tpreviewNode.innerHTML = \"\";\n\tpreviewNode.hidden = true;\n}\n\nfunction getStoredFiles(input) {\n\treturn fileUploadState.get(input) || [];\n}\n\nfunction setStoredFiles(input, files) {\n\tfileUploadState.set(input, files);\n\n\tconst transfer = new DataTransfer();\n\tfiles.forEach(file => transfer.items.add(file));\n\tinput.files = transfer.files;\n}\n\nfunction addStoredFiles(input, files) {\n\tconst storedFiles = getStoredFiles(input);\n\tconst knownKeys = new Set(storedFiles.map(getFileKey));\n\tconst nextFiles = [...storedFiles];\n\n\tfiles.forEach(file => {\n\t\tconst key = getFileKey(file);\n\n\t\tif(!knownKeys.has(key)) {\n\t\t\tknownKeys.add(key);\n\t\t\tnextFiles.push(file);\n\t\t}\n\t});\n\n\tsetStoredFiles(input, nextFiles);\n\treturn nextFiles;\n}\n\nfunction removeStoredFile(input, index) {\n\tconst nextFiles = getStoredFiles(input).filter((file, fileIndex) => fileIndex !== index);\n\tsetStoredFiles(input, nextFiles);\n\treturn nextFiles;\n}\n\nfunction getFileType(file) {\n\tconst nameParts = file.name.split(\".\");\n\tconst extension = nameParts.length > 1 ? nameParts.pop().trim() : \"\";\n\n\tif(extension) {\n\t\treturn extension.slice(0, 6).toUpperCase();\n\t}\n\n\tif(file.type) {\n\t\treturn file.type.split(\"/\").pop().slice(0, 6).toUpperCase();\n\t}\n\n\treturn \"FILE\";\n}\n\nfunction formatBytes(bytes) {\n\tif(!Number.isFinite(bytes)) {\n\t\treturn \"\";\n\t}\n\n\tif(bytes === 0) {\n\t\treturn \"0 B\";\n\t}\n\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\"];\n\tconst index = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n\tconst value = bytes / Math.pow(1024, index);\n\n\treturn `${value.toFixed(value >= 10 || index === 0 ? 0 : 1)} ${units[index]}`;\n}\n\nfunction updateFileUpload(input) {\n\tconst container = input.closest(\".file-upload-panel, .file-upload\");\n\tconst previewNode = container?.querySelector(\"[data-file-upload-preview]\");\n\n\tif(!container || !previewNode) {\n\t\treturn;\n\t}\n\n\tconst files = getStoredFiles(input);\n\n\tif(!files.length) {\n\t\tclearFilePreviews(previewNode);\n\t\treturn;\n\t}\n\n\tupdateFilePreviews(previewNode, files);\n}\n\nfunction updateFilePreviews(previewNode, files) {\n\tif(!previewNode) {\n\t\treturn;\n\t}\n\n\tclearFilePreviews(previewNode);\n\n\tfiles.forEach((file, index) => {\n\t\tconst figure = document.createElement(\"figure\");\n\t\tfigure.className = \"file-upload-preview-item\";\n\t\tfigure.dataset.fileUploadIndex = String(index);\n\n\t\tconst preview = document.createElement(\"div\");\n\t\tpreview.className = \"file-upload-preview-visual\";\n\n\t\tif(file.type.startsWith(\"image/\")) {\n\t\t\tconst image = document.createElement(\"img\");\n\t\t\tconst objectUrl = URL.createObjectURL(file);\n\t\t\timage.src = objectUrl;\n\t\t\timage.dataset.objectUrl = objectUrl;\n\t\t\timage.alt = \"\";\n\t\t\timage.loading = \"lazy\";\n\t\t\tpreview.append(image);\n\t\t} else {\n\t\t\tconst type = document.createElement(\"span\");\n\t\t\ttype.className = \"file-upload-preview-type\";\n\t\t\ttype.textContent = getFileType(file);\n\t\t\tpreview.append(type);\n\t\t}\n\n\t\tconst caption = document.createElement(\"figcaption\");\n\n\t\tconst name = document.createElement(\"span\");\n\t\tname.className = \"file-upload-preview-name\";\n\t\tname.textContent = file.name;\n\n\t\tconst meta = document.createElement(\"span\");\n\t\tmeta.className = \"file-upload-preview-meta\";\n\t\tmeta.textContent = `${getFileType(file)} / ${formatBytes(file.size)}`;\n\n\t\tconst remove = document.createElement(\"button\");\n\t\tremove.className = \"file-upload-preview-remove\";\n\t\tremove.type = \"button\";\n\t\tremove.dataset.fileUploadRemove = String(index);\n\t\tremove.setAttribute(\"aria-label\", `Remove ${file.name}`);\n\t\tremove.innerHTML = ``;\n\n\t\tcaption.append(name, meta);\n\t\tfigure.append(remove, preview, caption);\n\t\tpreviewNode.append(figure);\n\t});\n\n\tpreviewNode.hidden = false;\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst clearButton = event.target.closest(\"[data-input-clear]\");\n\n\t\tif(!clearButton) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst group = clearButton.closest(\".input-group\");\n\t\tconst input = group?.querySelector(\"input, textarea\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tinput.value = \"\";\n\t\tinput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\t\tinput.focus();\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst removeButton = event.target.closest(\"[data-file-upload-remove]\");\n\n\t\tif(!removeButton) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = removeButton.closest(\".file-upload-panel, .file-upload\");\n\t\tconst input = container?.querySelector(\"[data-file-upload-input]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveStoredFile(input, Number(removeButton.dataset.fileUploadRemove));\n\t\tupdateFileUpload(input);\n\t\tinput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst input = event.target.closest(\"[data-date-picker]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tinput.focus();\n\n\t\tif(typeof input.showPicker === \"function\") {\n\t\t\ttry {\n\t\t\t\tinput.showPicker();\n\t\t\t} catch(error) {\n\t\t\t\t// Some browsers restrict showPicker() to direct user gestures or supported input types.\n\t\t\t}\n\t\t}\n\t});\n\n\troot.addEventListener(\"change\", event => {\n\t\tconst input = event.target.closest(\"[data-file-upload-input]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\taddStoredFiles(input, Array.from(input.files || []));\n\t\tupdateFileUpload(input);\n\t});\n\n\troot.addEventListener(\"reset\", event => {\n\t\tconst form = event.target.closest(\"form\");\n\n\t\tif(!form) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tform.querySelectorAll(\"[data-file-upload-input]\").forEach(input => {\n\t\t\t\tsetStoredFiles(input, []);\n\t\t\t\tupdateFileUpload(input);\n\t\t\t});\n\t\t}, 0);\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tupdateFileUpload\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getPanel(details) {\n\treturn details.querySelector(\".accordion-panel\");\n}\n\nfunction prepareOpenPanel(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel) {\n\t\treturn;\n\t}\n\n\tpanel.style.height = \"auto\";\n\tpanel.style.opacity = \"1\";\n\tpanel.style.transform = \"translateY(0)\";\n}\n\nfunction expand(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel || details.dataset.animating === \"true\") {\n\t\treturn;\n\t}\n\n\tdetails.dataset.animating = \"true\";\n\tdetails.open = true;\n\tpanel.style.height = \"0px\";\n\tpanel.style.opacity = \"0\";\n\tpanel.style.transform = \"translateY(-8px)\";\n\n\trequestAnimationFrame(() => {\n\t\tpanel.style.height = `${panel.scrollHeight}px`;\n\t\tpanel.style.opacity = \"1\";\n\t\tpanel.style.transform = \"translateY(0)\";\n\t});\n\n\tconst handleTransitionEnd = event => {\n\t\tif(event.propertyName !== \"height\") {\n\t\t\treturn;\n\t\t}\n\n\t\tpanel.removeEventListener(\"transitionend\", handleTransitionEnd);\n\t\tpanel.style.height = \"auto\";\n\t\tdelete details.dataset.animating;\n\t};\n\n\tpanel.addEventListener(\"transitionend\", handleTransitionEnd);\n}\n\nfunction collapse(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel || details.dataset.animating === \"true\") {\n\t\treturn;\n\t}\n\n\tdetails.dataset.animating = \"true\";\n\tpanel.style.height = `${panel.scrollHeight}px`;\n\tpanel.style.opacity = \"1\";\n\tpanel.style.transform = \"translateY(0)\";\n\n\trequestAnimationFrame(() => {\n\t\tpanel.style.height = \"0px\";\n\t\tpanel.style.opacity = \"0\";\n\t\tpanel.style.transform = \"translateY(-8px)\";\n\t});\n\n\tconst handleTransitionEnd = event => {\n\t\tif(event.propertyName !== \"height\") {\n\t\t\treturn;\n\t\t}\n\n\t\tpanel.removeEventListener(\"transitionend\", handleTransitionEnd);\n\t\tdetails.open = false;\n\t\tpanel.style.height = \"\";\n\t\tpanel.style.opacity = \"\";\n\t\tpanel.style.transform = \"\";\n\t\tdelete details.dataset.animating;\n\t};\n\n\tpanel.addEventListener(\"transitionend\", handleTransitionEnd);\n}\n\nfunction toggle(details) {\n\tif(details.open) {\n\t\tcollapse(details);\n\t} else {\n\t\texpand(details);\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.querySelectorAll(\".accordion-item[open], .disclosure[open]\").forEach(prepareOpenPanel);\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst summary = event.target.closest(\".accordion-summary\");\n\n\t\tif(!summary) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst details = summary.closest(\".accordion-item, .disclosure\");\n\n\t\tif(!details) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\ttoggle(details);\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\texpand,\n\tcollapse,\n\ttoggle\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getTabs(root) {\n\treturn [...root.querySelectorAll('[role=\"tab\"], .tab')];\n}\n\nfunction getPanels(root) {\n\treturn [...root.querySelectorAll('[role=\"tabpanel\"], .tab-panel')];\n}\n\nfunction getPanel(root, tab) {\n\tconst panelId = tab.getAttribute(\"aria-controls\");\n\n\tif(!panelId) {\n\t\treturn null;\n\t}\n\n\treturn root.querySelector(`#${CSS.escape(panelId)}`);\n}\n\nfunction setTabState(tab, isActive) {\n\ttab.classList.toggle(\"tab-active\", isActive);\n\ttab.setAttribute(\"aria-selected\", isActive ? \"true\" : \"false\");\n\ttab.setAttribute(\"tabindex\", isActive ? \"0\" : \"-1\");\n}\n\nfunction setPanelState(panel, isActive) {\n\tpanel.classList.toggle(\"tab-panel-active\", isActive);\n\tpanel.toggleAttribute(\"hidden\", !isActive);\n}\n\nfunction activate(tab, options = {}) {\n\tif(!tab || tab.disabled || tab.getAttribute(\"aria-disabled\") === \"true\") {\n\t\treturn;\n\t}\n\n\tconst root = tab.closest(\".tabs\") || tab.closest('[role=\"tablist\"]')?.parentElement;\n\n\tif(!root) {\n\t\treturn;\n\t}\n\n\tgetTabs(root).forEach(item => setTabState(item, item === tab));\n\tgetPanels(root).forEach(panel => setPanelState(panel, false));\n\n\tconst panel = getPanel(root, tab);\n\n\tif(panel) {\n\t\tsetPanelState(panel, true);\n\t}\n\n\tif(options.focus !== false) {\n\t\ttab.focus();\n\t}\n}\n\nfunction getNextEnabledTab(tabs, activeIndex, direction) {\n\tfor(let offset = 1; offset <= tabs.length; offset++) {\n\t\tconst index = (activeIndex + (offset * direction) + tabs.length) % tabs.length;\n\t\tconst tab = tabs[index];\n\n\t\tif(!tab.disabled && tab.getAttribute(\"aria-disabled\") !== \"true\") {\n\t\t\treturn tab;\n\t\t}\n\t}\n\n\treturn tabs[activeIndex];\n}\n\nfunction handleKeydown(event) {\n\tconst tab = event.target.closest('[role=\"tab\"], .tab');\n\n\tif(!tab) {\n\t\treturn;\n\t}\n\n\tconst root = tab.closest(\".tabs\") || tab.closest('[role=\"tablist\"]')?.parentElement;\n\tconst tabs = root ? getTabs(root) : [];\n\tconst activeIndex = tabs.indexOf(tab);\n\n\tif(activeIndex < 0) {\n\t\treturn;\n\t}\n\n\tlet nextTab = null;\n\n\tif(event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\tnextTab = getNextEnabledTab(tabs, activeIndex, 1);\n\t} else if(event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\tnextTab = getNextEnabledTab(tabs, activeIndex, -1);\n\t} else if(event.key === \"Home\") {\n\t\tnextTab = getNextEnabledTab(tabs, -1, 1);\n\t} else if(event.key === \"End\") {\n\t\tnextTab = getNextEnabledTab(tabs, 0, -1);\n\t}\n\n\tif(!nextTab) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\tactivate(nextTab);\n}\n\nfunction prepare(root) {\n\tconst tabs = getTabs(root);\n\tconst activeTab = tabs.find(tab => tab.classList.contains(\"tab-active\") || tab.getAttribute(\"aria-selected\") === \"true\")\n\t\t|| tabs.find(tab => !tab.disabled && tab.getAttribute(\"aria-disabled\") !== \"true\");\n\n\ttabs.forEach(tab => {\n\t\ttab.setAttribute(\"role\", \"tab\");\n\t\tsetTabState(tab, tab === activeTab);\n\t});\n\n\troot.querySelectorAll(\".tabs-list\").forEach(list => {\n\t\tlist.setAttribute(\"role\", \"tablist\");\n\t});\n\n\tgetPanels(root).forEach(panel => {\n\t\tpanel.setAttribute(\"role\", \"tabpanel\");\n\t\tsetPanelState(panel, activeTab ? panel === getPanel(root, activeTab) : panel.classList.contains(\"tab-panel-active\"));\n\t});\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.querySelectorAll(\".tabs\").forEach(prepare);\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst tab = event.target.closest('[role=\"tab\"], .tab');\n\n\t\tif(!tab || !root.contains(tab)) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tactivate(tab, { focus: false });\n\t});\n\n\troot.addEventListener(\"keydown\", handleKeydown);\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tactivate\n};\n", "export default function demoNavigation() {\n const navItems = [...document.querySelectorAll(\".nav-drawer .list-item\")];\n const sections = [...document.querySelectorAll(\".docs-content .section[id]\")];\n const currentSection = document.querySelector(\"[data-docs-current-section]\");\n\n if (!navItems.length || !sections.length) {\n return;\n }\n\n const setActive = id => {\n navItems.forEach(item => {\n const link = item.querySelector(\".list-action\");\n const isActive = link?.getAttribute(\"href\") === `#${id}`;\n item.classList.toggle(\"list-item-active\", isActive);\n\n if (isActive && currentSection) {\n currentSection.textContent = link.querySelector(\".list-label\")?.textContent.trim() || id;\n }\n });\n };\n\n const getActiveSection = () => {\n const anchor = Math.min(window.innerHeight * 0.35, 280);\n let active = sections[0];\n\n for (const section of sections) {\n const rect = section.getBoundingClientRect();\n\n if (rect.top <= anchor) {\n active = section;\n } else {\n break;\n }\n }\n\n return active;\n };\n\n let ticking = false;\n\n const updateActive = () => {\n ticking = false;\n const active = getActiveSection();\n\n if (active?.id) {\n setActive(active.id);\n }\n };\n\n const requestUpdate = () => {\n if (ticking) {\n return;\n }\n\n ticking = true;\n window.requestAnimationFrame(updateActive);\n };\n\n window.addEventListener(\"scroll\", requestUpdate, { passive: true });\n window.addEventListener(\"resize\", requestUpdate);\n\n if (window.location.hash) {\n setActive(window.location.hash.slice(1));\n } else {\n updateActive();\n }\n}\n", "function fallbackCopy(text) {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"readonly\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.append(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n textarea.remove();\n}\n\nfunction escapeHtml(text) {\n return text\n .replace(/&/g, \"&\")\n .replace(//g, \">\");\n}\n\nfunction highlightJavascript(code) {\n const source = code.textContent;\n const tokens = /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|`(?:\\\\[\\s\\S]|[^`\\\\])*`|'(?:\\\\.|[^'\\\\])*'|\"(?:\\\\.|[^\"\\\\])*\"|\\b(?:async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)\\b|\\b\\d+(?:\\.\\d+)?\\b|\\b[A-Za-z_$][\\w$]*(?=\\s*\\()/gm;\n let html = \"\";\n let cursor = 0;\n let match;\n\n while ((match = tokens.exec(source)) !== null) {\n const token = match[0];\n html += escapeHtml(source.slice(cursor, match.index));\n\n if (token.startsWith(\"//\") || token.startsWith(\"/*\")) {\n html += `${escapeHtml(token)}`;\n } else if (token.startsWith(\"\\\"\") || token.startsWith(\"'\") || token.startsWith(\"`\")) {\n html += `${escapeHtml(token)}`;\n } else if (/^\\d/.test(token)) {\n html += `${escapeHtml(token)}`;\n } else if (/^[A-Za-z_$][\\w$]*$/.test(token) && source[match.index + token.length]?.match(/\\s|\\(/)) {\n const keyword = /^(async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)$/.test(token);\n html += keyword\n ? `${token}`\n : `${token}`;\n } else {\n html += escapeHtml(token);\n }\n\n cursor = match.index + token.length;\n }\n\n html += escapeHtml(source.slice(cursor));\n code.innerHTML = html;\n code.classList.add(\"hljs\");\n}\n\nfunction highlightCode() {\n document.querySelectorAll(\"code.language-js, code.language-javascript\").forEach(highlightJavascript);\n\n if (window.hljs) {\n document\n .querySelectorAll(\"code:not(.language-js):not(.language-javascript)\")\n .forEach(code => window.hljs.highlightElement(code));\n }\n}\n\nexport default function codeExamples() {\n highlightCode();\n\n document.querySelectorAll(\".code-example .btn-icon\").forEach(button => {\n button.addEventListener(\"click\", async () => {\n const example = button.closest(\".code-example\");\n const code = example?.querySelector(\"code\");\n const text = code?.textContent ?? \"\";\n const originalIcon = button.innerHTML;\n\n if (!text) {\n return;\n }\n\n try {\n if (navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else {\n fallbackCopy(text);\n }\n } catch {\n fallbackCopy(text);\n }\n\n button.innerHTML = ``;\n\n setTimeout(() => {\n button.innerHTML = originalIcon;\n }, 1200);\n });\n });\n}\n"], - "mappings": "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", - "names": ["index_exports", "__export", "accordion_default", "drawer_default", "helper_default", "input_patterns_default", "modals_default", "navigation_shell_default", "overlays_default", "tabs_default", "toasts_default", "advancedSelect", "confirmPopup", "index_default", "editableString", "sidebarNav", "items", "listItems", "item", "aOpen", "aClose", "table", "caption", "columns", "data", "tfoot", "head", "totalColumns", "key", "body", "column", "foot", "tableCaption", "tableHead", "createElement", "type", "props", "content", "node", "value", "createAlert", "fieldsUnification", "map", "dataObj", "field", "btnLoadingState", "btn", "isLoading", "cardStatusLoadingState", "card", "iconContainer", "mainTemplate", "sidebar", "connectionStatusBadge", "status", "toogleStateBadge", "state", "timeAgo", "dateString", "date", "diff_seconds", "minutes", "hours", "days", "remain_minutes", "formatDate", "now", "today", "target_day", "diff_days", "months", "circleLoaderHTML", "emptyHereHTML", "helper_default", "appendIcon", "container", "icon", "iconWrap", "template", "type", "title", "text", "toast", "content", "toastTitle", "toastText", "close", "init", "props", "i", "_a", "e", "lifetimeInterval", "create", "createSuccess", "createInfo", "createWarning", "createError", "toasts_default", "appendContent", "container", "content", "mode", "template", "id", "title", "footer", "props", "_a", "modal", "backdrop", "dialog", "panel", "header", "modalTitle", "close", "body", "modalFooter", "init", "onready", "e", "create", "modalBody", "actionsResult", "actions", "actionElement", "bodyResult", "modals_default", "scrollToElementInFocus", "container", "focus", "container_rect", "focus_rect", "autoSetState", "firstVisibleOption", "lastVisibleOption", "selectOption", "input", "option", "advancedSelect", "options", "notFoundText", "popup", "notFound", "optionsContainer", "optionValue", "existsOption", "value", "ret", "stateName", "name", "handler", "eventHandler", "e", "_a", "_b", "current", "prev", "next", "selected", "val", "i", "template", "originalText", "isMultiString", "placeholder", "input", "editableString", "stringContainer", "component", "helper_default", "editBtn", "applyBtn", "cancelBtn", "content", "form", "val", "cb", "evName", "handler", "e", "confirmPopup", "text", "confirmedCb", "canceledCb", "modals_default", "paragraph", "modal", "buttonNO", "helper_default", "buttonYES", "e", "appendContent", "container", "content", "mode", "template", "id", "title", "footer", "props", "_a", "drawer", "backdrop", "panel", "header", "drawerTitle", "close", "body", "drawerFooter", "init", "onready", "create", "drawerBody", "actionsResult", "actions", "actionElement", "bodyResult", "drawer_default", "initializedRoots", "getDrawerForToggle", "toggle", "root", "_a", "_b", "id", "open", "drawer", "firstControl", "close", "shouldRestoreFocus", "init", "event", "closeControl", "navigation_shell_default", "initializedRoots", "keyboardDismissInitialized", "closeNode", "node", "trigger", "closeAll", "except", "initDropdowns", "root", "event", "dropdown", "isOpen", "initPopovers", "popover", "initTooltips", "tooltip", "initDismiss", "init", "overlays_default", "initializedRoots", "fileUploadState", "getFileKey", "file", "clearFilePreviews", "previewNode", "image", "getStoredFiles", "input", "setStoredFiles", "files", "transfer", "addStoredFiles", "storedFiles", "knownKeys", "nextFiles", "key", "removeStoredFile", "index", "fileIndex", "getFileType", "nameParts", "extension", "formatBytes", "bytes", "units", "value", "updateFileUpload", "container", "updateFilePreviews", "figure", "preview", "objectUrl", "type", "caption", "name", "meta", "remove", "init", "root", "event", "clearButton", "group", "removeButton", "error", "form", "input_patterns_default", "initializedRoots", "getPanel", "details", "prepareOpenPanel", "panel", "expand", "handleTransitionEnd", "event", "collapse", "toggle", "init", "root", "summary", "accordion_default", "initializedRoots", "getTabs", "root", "getPanels", "getPanel", "tab", "panelId", "setTabState", "isActive", "setPanelState", "panel", "activate", "options", "_a", "item", "getNextEnabledTab", "tabs", "activeIndex", "direction", "offset", "index", "handleKeydown", "event", "nextTab", "prepare", "activeTab", "list", "init", "tabs_default", "demoNavigation", "navItems", "sections", "currentSection", "setActive", "id", "item", "_a", "link", "isActive", "getActiveSection", "anchor", "active", "section", "ticking", "updateActive", "requestUpdate", "fallbackCopy", "text", "textarea", "escapeHtml", "highlightJavascript", "code", "_a", "source", "tokens", "html", "cursor", "match", "token", "keyword", "highlightCode", "codeExamples", "button", "_b", "example", "originalIcon", "e", "api", "helper_default", "toasts_default", "modals_default", "advancedSelect", "editableString", "confirmPopup", "drawer_default", "navigation_shell_default", "overlays_default", "input_patterns_default", "accordion_default", "tabs_default", "demoNavigation", "codeExamples", "index_default", "api"] + "sourcesContent": ["import Helper from \"./components/helper.js\";\nimport Toasts from \"./components/toasts.js\";\nimport Modals from \"./components/modals.js\";\nimport advancedSelect from \"./components/advanced-select.js\";\nimport editableString from \"./components/editable-string.js\";\nimport confirmPopup from \"./components/confirm-popup.js\";\nimport Drawer from \"./components/drawer.js\";\nimport NavigationShell from \"./components/navigation-shell.js\";\nimport Overlays from \"./components/overlays.js\";\nimport InputPatterns from \"./components/input-patterns.js\";\nimport Accordion from \"./components/accordion.js\";\nimport Tabs from \"./components/tabs.js\";\nimport demoNavigation from \"./demo-navigation.js\";\nimport codeExamples from \"./code-examples.js\";\n\nconst api = {\n Helper,\n Toasts,\n Modals,\n advancedSelect,\n editableString,\n confirmPopup,\n Drawer,\n NavigationShell,\n Overlays,\n InputPatterns,\n Accordion,\n Tabs\n};\n\nwindow.GNexusUIKit = api;\nObject.assign(window, api);\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n Overlays.init();\n NavigationShell.init();\n InputPatterns.init();\n Accordion.init();\n Tabs.init();\n demoNavigation();\n codeExamples();\n});\n\nexport {\n Helper,\n Toasts,\n Modals,\n advancedSelect,\n editableString,\n confirmPopup,\n Drawer,\n NavigationShell,\n Overlays,\n InputPatterns,\n Accordion,\n Tabs\n};\n\nexport default api;\n", "function sidebarNav(items) {\n\tlet listItems = \"\";\n\n\tfor(let item of items) {\n\t\tlet aOpen = \"\";\n\t\tlet aClose = \"\";\n\t\tif(item.route) {\n\t\t\taOpen = ``;\n\t\t\taClose = ``;\n\t\t}\n\n\t\tlistItems += `\n\t\t\t
  • \n\t\t\t\t${aOpen}${item.content}${aClose}\n\t\t\t
  • \n\t\t`;\n\t}\n\n\treturn `\n\t\t
    \n\t\t\t
      \n\t\t\t\t${listItems} \n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction table(caption, columns, data, tfoot) {\n\tlet head = ``;\n\tlet totalColumns = 0;\n\tfor(let key in columns) {\n\t\thead += `${columns[key]}`;\n\t\ttotalColumns++;\n\t}\n\thead += \"\";\n\n\tlet body = ``;\n\tfor(let item of data) {\n\t\tbody += ``;\n\t\tfor(let column in columns) {\n\t\t\tbody += `${item[column]}`;\n\t\t}\n\t\tbody += ``;\n\t}\n\n\tlet foot = \"\";\n\tif(typeof tfoot != \"undefined\") {\n\t\tfoot = `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${tfoot}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`\n\t}\n\n\tconst tableCaption = caption \n\t\t? `${caption}`\n\t\t: '';\n\n\tconst tableHead = data.length \n\t\t? `${head}`\n\t\t: '';\n\n\tbody = data.length\n\t\t? body\n\t\t: `Empty`;\n\n\tconst tableEmptyClass = !data.length \n\t\t? \"table-empty\"\n\t\t: \"\";\n\n\treturn `\n\t\t
    \n\t\t\t\n\t\t\t\t${tableCaption}\n\t\t\t\t${tableHead}\n\t\t\t\t${body}\n\t\t\t\t${foot}\n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction createElement(type, props, content) {\n\tconst node = document.createElement(type);\n\n\tfor (const [key, value] of Object.entries(props)) {\n\t\tif (key === \"class\") {\n\t\t\tnode.className = value;\n\t\t} else if (key === \"dataset\") {\n\t\t\tObject.assign(node.dataset, value);\n\t\t} else {\n\t\t\tnode.setAttribute(key, value);\n\t\t}\n\t}\n\n\tnode.innerHTML = (typeof content != \"undefined\") ? content : \"\";\n\treturn node; \n}\n\nfunction createAlert(type, content) {\n\tif([\"primary\", \"success\", \"secondary\", \"info\", \"warning\", \"error\", \"danger\"].indexOf(type) < 0) {\n\t\treturn console.error(\"createAlert()\", \"Error of type: \" + type);\n\t}\n\n\treturn createElement(\"div\", {\n\t\tclass: `alert alert-${type}`,\n\t}, content);\n}\n\nfunction fieldsUnification(data, map = {}) {\n\tconst dataObj = {};\n\n\tfor(let field in data) {\n\t\tif(typeof map[field] != \"undefined\") {\n\t\t\tdataObj[ map[field] ] = data[field];\n\t\t\tcontinue;\n\t\t}\n\n\t\tdataObj[field] = data[field];\n\t}\n\n\treturn dataObj;\n}\n\nfunction btnLoadingState(btn, isLoading) {\n\tif(btn?.isLoading == isLoading) {\n\t\treturn false;\n\t}\n\n\tif(isLoading) {\n\t\tbtn.isLoading = true;\n\t\tbtn.originalContent = btn.innerHTML;\n\t\tif(btn.classList.contains(\"with-icon\")) {\n\t\t\tbtn.originalWithIcon = true;\n\t\t} else {\n\t\t\tbtn.classList.add(\"with-icon\");\n\t\t}\n\n\t\tbtn.classList.add(\"loading-state\");\n\t\tbtn.setAttribute(\"disabled\", \"disabled\");\n\t\tbtn.innerHTML = ` Loading`;\n\t} else {\n\t\tbtn.isLoading = false;\n\t\tif(!btn.originalContent) {\n\t\t\treturn false;\n\t\t}\n\t\tbtn.removeAttribute(\"disabled\");\n\t\tbtn.classList.remove(\"loading-state\");\n\t\tif(!btn.originalWithIcon) {\n\t\t\tbtn.classList.remove(\"with-icon\");\n\t\t}\n\t\tbtn.innerHTML = btn.originalContent;\n\t}\n\n\treturn btn;\n}\n\nfunction cardStatusLoadingState(card, isLoading) {\n\tif(card?.isLoading == isLoading) {\n\t\treturn false;\n\t}\n\n\tconst iconContainer = card.querySelector(\".status-icon\");\n\n\tif(isLoading) {\n\t\tcard.isLoading = true;\n\t\tcard.originalContent = iconContainer.innerHTML;\n\t\tcard.classList.add(\"loading-state\");\n\t\tcard.setAttribute(\"disabled\", \"disabled\");\n\t\ticonContainer.innerHTML = ``;\n\t} else {\n\t\tcard.isLoading = false;\n\t\tif(!card.originalContent) {\n\t\t\treturn false;\n\t\t}\n\t\tcard.removeAttribute(\"disabled\");\n\t\tcard.classList.remove(\"loading-state\");\n\t\ticonContainer.innerHTML = card.originalContent;\n\t}\n\n\treturn card;\n}\n\nfunction mainTemplate(sidebar, content) {\n\tcontent = content ?? \"\";\n\treturn `\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t${sidebar}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t${content}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`;\n}\n\nfunction connectionStatusBadge(status) {\n\treturn status == \"active\"\n\t\t? `Online`\n\t\t: `Offline`;\n}\n\nfunction toogleStateBadge(state) {\n\treturn state == \"enabled\"\n\t\t? `Enabled`\n\t\t: `Disabled`;\n}\n\nfunction timeAgo(dateString) {\n\tconst date = new Date(dateString.replace(\" \", \"T\"));\n\tconst now = new Date();\n\n\tconst diff_seconds = Math.floor((now - date) / 1000);\n\n\tif (diff_seconds < 60) {\n\t\treturn \"less than a minute ago\";\n\t}\n\n\tconst minutes = Math.floor(diff_seconds / 60);\n\tconst hours = Math.floor(minutes / 60);\n\tconst days = Math.floor(hours / 24);\n\n\tif (minutes < 60) {\n\t\treturn `${minutes} minute${minutes !== 1 ? \"s\" : \"\"} ago`;\n\t}\n\n\tif (hours < 24) {\n\t\tconst remain_minutes = minutes % 60;\n\t\treturn `${hours} hour${hours !== 1 ? \"s\" : \"\"} ${remain_minutes} minute${remain_minutes !== 1 ? \"s\" : \"\"} ago`;\n\t}\n\n\treturn `${days} day${days !== 1 ? \"s\" : \"\"} ago`;\n}\n\nfunction formatDate(dateString) {\n\tconst date = new Date(dateString.replace(\" \", \"T\"));\n\tconst now = new Date();\n\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\tconst target_day = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\n\tconst diff_days = Math.floor((today - target_day) / 86400000);\n\n\tconst hours = String(date.getHours()).padStart(2, \"0\");\n\tconst minutes = String(date.getMinutes()).padStart(2, \"0\");\n\n\tif (diff_days === 0) {\n\t\treturn `Today at ${hours}:${minutes}`;\n\t}\n\n\tif (diff_days === 1) {\n\t\treturn `Yesterday at ${hours}:${minutes}`;\n\t}\n\n\tconst months = [\n\t\t\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n\t\t\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n\t];\n\n\treturn `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()} at ${hours}:${minutes}`;\n}\n\nfunction circleLoaderHTML() {\n\treturn `\n\t\t
    \n\t\t\t\n\t\t\tLoading\n\t\t
    \n\t`;\n}\n\nfunction emptyHereHTML() {\n\treturn `\n\t\t
    \n\t\t\t
    \n\t\t\t

    It's empty here yet

    \n\t\t
    \n\t`;\n}\n\nexport default {\n\ttemplate: {\n\t\tsidebarNav,\n\t\ttable,\n\t\tcreateElement,\n\t\tcreateAlert,\n\t\tmainTemplate,\n\t\tconnectionStatusBadge,\n\t\ttoogleStateBadge,\n\t\tcircleLoaderHTML,\n\t\temptyHereHTML,\n\t},\n\tunification: {\n\t\tfieldsUnification,\n\t\ttimeAgo,\n\t\tformatDate\n\t},\n\tstates: {\n\t\tbtnLoadingState,\n\t\tcardStatusLoadingState\n\t}\n}\n", "function appendIcon(container, icon) {\n\tif(icon instanceof Node) {\n\t\tcontainer.append(icon);\n\t\treturn;\n\t}\n\n\tconst iconWrap = document.createElement(\"span\");\n\ticonWrap.innerHTML = icon;\n\tcontainer.append(...iconWrap.childNodes);\n}\n\nfunction template(type, icon, title, text) {\n\tconst toast = document.createElement(\"div\");\n\ttoast.className = `toast toast-${type}`;\n\ttoast.setAttribute(\"role\", \"alert\");\n\n\tconst content = document.createElement(\"div\");\n\tcontent.className = \"toast-content\";\n\n\tconst toastTitle = document.createElement(\"h4\");\n\ttoastTitle.className = \"toast-title\";\n\tappendIcon(toastTitle, icon);\n\ttoastTitle.append(document.createTextNode(` ${title ?? \"\"}`));\n\n\tconst toastText = document.createElement(\"p\");\n\ttoastText.className = \"toast-text\";\n\ttoastText.textContent = text ?? \"\";\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon toast-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tcontent.append(toastTitle, toastText);\n\ttoast.append(content, close);\n\n\treturn toast;\n}\n\nfunction init(toast, props) {\n\tif(props?.alone) {\n\t\tdocument.querySelectorAll(\".toast\").forEach(i => i.close?.());\n\t}\n\n\ttoast.close = function() {\n\t\tthis.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tthis.remove();\n\t\t}, 300);\n\t}\n\n\ttoast.querySelector(\".toast-close\").addEventListener(\"click\", e => {\n\t\ttoast.close();\n\t});\n\n\ttoast.show = function() {\n\t\tdocument.querySelector(\"body\").append(toast);\n\n\t\tsetTimeout(() => {\n\t\t\ttoast.classList.add(\"a-show\");\n\t\t}, 10);\n\t}\n\n\ttoast.addEventListener(\"mouseover\", e => toast.ishovered = true);\n\ttoast.addEventListener(\"mouseout\", e => toast.ishovered = false);\n\n\tif(props?.lifetime) {\n\t\tconst lifetimeInterval = setInterval(() => {\n\t\t\tif(!toast.ishovered) {\n\t\t\t\ttoast.close();\n\t\t\t\tclearInterval(lifetimeInterval);\n\t\t\t}\n\t\t}, props?.lifetime);\n\t}\n\n\treturn toast;\n}\n\nfunction create(type, icon, title, text, props) {\n\treturn init(template(type, icon, title, text), props);\n}\n\nfunction createSuccess(title, text, props) {\n\tif(typeof props == \"undefined\") {\n\t\tprops = {};\n\t}\n\n\tif(typeof props.lifetime == \"undefined\") {\n\t\tprops.lifetime = 4000;\n\t}\n\n\tif(typeof props.alone == \"undefined\") {\n\t\tprops.alone = true;\n\t}\n\n\treturn create(\n\t\t\"success\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createInfo(title, text, props) {\n\treturn create(\n\t\t\"info\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createWarning(title, text, props) {\n\treturn create(\n\t\t\"warning\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nfunction createError(title, text, props) {\n\treturn create(\n\t\t\"danger\", \n\t\t``, \n\t\ttitle, \n\t\ttext,\n\t\tprops\n\t);\n}\n\nexport default {\n create,\n createInfo,\n createSuccess,\n createWarning,\n createError,\n \"createDanger\": createError\n};\n", "function appendContent(container, content, mode = \"html\") {\n\tif(content instanceof Node) {\n\t\tcontainer.append(content);\n\t\treturn;\n\t}\n\n\tif(typeof content != \"undefined\" && content !== null) {\n\t\tif(mode === \"text\") {\n\t\t\tcontainer.textContent = content;\n\t\t} else {\n\t\t\tcontainer.innerHTML = content;\n\t\t}\n\t}\n}\n\nfunction template(id, title, footer, props = {}) {\n\tconst modal = document.createElement(\"div\");\n\tmodal.className = \"modal\";\n\tmodal.setAttribute(\"aria-hidden\", \"true\");\n\tmodal.id = id;\n\n\tconst backdrop = document.createElement(\"div\");\n\tbackdrop.className = \"modal-backdrop\";\n\n\tconst dialog = document.createElement(\"div\");\n\tdialog.className = \"modal-dialog\";\n\tdialog.setAttribute(\"role\", \"dialog\");\n\tdialog.setAttribute(\"aria-modal\", \"true\");\n\tdialog.setAttribute(\"aria-labelledby\", `${id}-title`);\n\n\tconst panel = document.createElement(\"div\");\n\tpanel.className = \"modal-panel\";\n\n\tconst header = document.createElement(\"header\");\n\theader.className = \"modal-header\";\n\n\tconst modalTitle = document.createElement(\"h4\");\n\tmodalTitle.className = \"modal-title\";\n\tmodalTitle.id = `${id}-title`;\n\tmodalTitle.textContent = title;\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon modal-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tconst body = document.createElement(\"div\");\n\tbody.className = \"modal-body\";\n\n\tconst modalFooter = document.createElement(\"footer\");\n\tmodalFooter.className = \"modal-footer\";\n\tappendContent(modalFooter, footer, props.footerMode ?? \"html\");\n\n\theader.append(modalTitle, close);\n\tpanel.append(body, modalFooter);\n\tdialog.append(header, panel);\n\tmodal.append(backdrop, dialog);\n\n\treturn modal;\n}\n\nfunction init(modal, onready) {\n\tmodal.show = function() {\n\t\tdocument.querySelector(\"body\").append(modal);\n\n\t\tsetTimeout(() => {\n\t\t\tmodal.classList.add(\"a-show\");\n\t\t}, 10);\n\t}\n\n\tmodal.close = function() {\n\t\tmodal.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tmodal.remove();\n\t\t}, 300);\n\t}\n\n\tmodal.querySelector(\".modal-close\").addEventListener(\"click\", e => {\n\t\tmodal.close();\n\t});\n\n\tif(typeof onready == \"function\") {\n\t\tonready(modal);\n\t}\n\n\treturn modal;\n}\n\n\t/**\n\t * Create new modal window;\n\t * @param {string} id Uniq id (selector)\n\t * @param {string} title Display title\n\t * @param {object} props { body: modal => {}, actions => modal => {} }\n\t * @return {object} DOM object\n\t */\nfunction create(id, props) {\n\tprops = props ?? {};\n\tconst title = props.title || \"\";\n\tconst footer = props.footer || \"\";\n\n\tconst modal = template(id, title, footer, props);\n\n\tconst modalBody = modal.querySelector(\".modal-body\");\n\tconst modalFooter = modal.querySelector(\".modal-footer\");\n\n\tif(typeof props.actions == \"function\") {\n\t\tconst actionsResult = props.actions(modal);\n\n\t\tif(Array.isArray(actionsResult) && actionsResult[0] instanceof Node) {\n\t\t\tconst actions = document.createElement(\"div\");\n\t\t\tactions.classList.add(\"actions\");\n\t\t\tfor(let actionElement of actionsResult) {\n\t\t\t\tactions.append(actionElement);\n\t\t\t}\n\n\t\t\tmodalFooter.append(actions);\n\t\t} else if(actionsResult instanceof Node) {\n\t\t\tmodalFooter.append(actionsResult);\n\t\t}\n\t}\n\n\tif(typeof props.body == \"function\") {\n\t\tconst bodyResult = props.body(modal);\n\n\t\tappendContent(modalBody, bodyResult, props.bodyMode ?? \"html\");\n\t} else if(typeof props.bodyText != \"undefined\") {\n\t\tappendContent(modalBody, props.bodyText, \"text\");\n\t} else if(typeof props.bodyHtml != \"undefined\") {\n\t\tappendContent(modalBody, props.bodyHtml, \"html\");\n\t}\n\n\treturn init(modal, props?.onready);\n}\n\nexport default {\n\tcreate\n}\n", "function scrollToElementInFocus(container) {\n\tconst focus = container.querySelector(\".focus\");\n\tif (!focus) return;\n\n\tconst container_rect = container.getBoundingClientRect();\n\tconst focus_rect = focus.getBoundingClientRect();\n\n\tif (focus_rect.top < container_rect.top) {\n\t\tcontainer.scrollTop -= (container_rect.top - focus_rect.top);\n\t} else if (focus_rect.bottom > container_rect.bottom) {\n\t\tcontainer.scrollTop += (focus_rect.bottom - container_rect.bottom);\n\t}\n}\n\nfunction autoSetState(container) {\n\tconst totalViewed = container.advancedSelect.optionsElements.length - container.querySelectorAll(\".option.hide\").length;\n\tif(totalViewed == 0) {\n\t\tcontainer.advancedSelect.showState(\"not-found\");\n\t} else {\n\t\tcontainer.advancedSelect.showState(\"options\");\n\t}\n}\n\nfunction firstVisibleOption(container) {\n\treturn container.querySelector(\".option:not(.hide)\");\n}\n\nfunction lastVisibleOption(container) {\n\treturn container.querySelector(\".option:not(.hide):last-child\");\n}\n\nfunction selectOption(input, container, option) {\n\tif(!option) {\n\t\treturn;\n\t}\n\n\tinput.value = option.dataset.displayValue;\n\tinput.blur();\n\tinput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\tinput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n\tcontainer.advancedSelect.dispatchEvent(\"selected\");\n\tcontainer.advancedSelect.closeList();\n}\n\nexport default function advancedSelect(input, options, notFoundText) {\n\tconst container = document.createElement(\"div\");\n\tcontainer.classList.add(\"advanced-select\");\n\n\tconst popup = document.createElement(\"div\");\n\tpopup.className = \"popup-options-container\";\n\n\tconst notFound = document.createElement(\"div\");\n\tnotFound.className = \"not-found\";\n\tnotFound.textContent = notFoundText ?? \"Nothing found\";\n\n\tconst optionsContainer = document.createElement(\"div\");\n\toptionsContainer.className = \"options\";\n\n\tfor(let optionValue in options) {\n\t\tconst option = document.createElement(\"div\");\n\t\toption.className = \"option\";\n\t\toption.dataset.value = optionValue;\n\t\toption.dataset.displayValue = options[optionValue];\n\t\toption.textContent = options[optionValue];\n\t\toptionsContainer.append(option);\n\t}\n\n\tpopup.append(notFound, optionsContainer);\n\tcontainer.append(popup);\n\n\tconst existsOption = (value, options) => {\n\t\tfor(let optionValue in options) {\n\t\t\tif(options[optionValue] == value) {\n\t\t\t\tconst ret = {};\n\t\t\t\tret[optionValue] = options[optionValue];\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tcontainer.advancedSelect = {\n\t\tisOpened: false,\n\t\toptions: options,\n\t\teventsHandlers: {\n\t\t\topenList: [],\n\t\t\tcloseList: [],\n\t\t\tselected: [],\n\t\t\tchanged: [],\n\t\t},\n\t\topenList: () => {\n\t\t\tcontainer.advancedSelect.isOpened = true;\n\t\t\tcontainer.classList.add(\"a-show\");\n\t\t\tautoSetState(container);\n\t\t\tcontainer.advancedSelect.dispatchEvent(\"openList\");\n\t\t},\n\t\tcloseList: () => {\n\t\t\tcontainer.advancedSelect.isOpened = false;\n\t\t\tcontainer.classList.remove(\"a-show\");\n\t\t\tautoSetState(container);\n\t\t\tcontainer.advancedSelect.dispatchEvent(\"closeList\");\n\t\t},\n\t\tshowState: stateName => {\n\t\t\tif(stateName == \"options\") {\n\t\t\t\tcontainer.querySelector(\".options\").classList.add(\"show\");\n\t\t\t\tcontainer.querySelector(\".not-found\").classList.remove(\"show\");\n\t\t\t} else if(stateName == \"not-found\") {\n\t\t\t\tcontainer.querySelector(\".options\").classList.remove(\"show\");\n\t\t\t\tcontainer.querySelector(\".not-found\").classList.add(\"show\");\n\t\t\t}\n\t\t},\n\t\toptionsElements: container.querySelectorAll(\".option\"),\n\t\tvalue: () => {\n\t\t\tconst option = existsOption(input.value, options);\n\n\t\t\treturn { \n\t\t\t\tinputValue: input.value,\n\t\t\t\tisOption: option ? true : false,\n\t\t\t\toption \n\t\t\t};\n\t\t},\n\t\taddEventListener: (name, handler) => {\n\t\t\tif(typeof container.advancedSelect.eventsHandlers[name] != \"undefined\") {\n\t\t\t\treturn container.advancedSelect.eventsHandlers[name].push(handler);\n\t\t\t}\n\n\t\t\tconsole.error(\"Advanced Select component.\", \"addEventListener()\", \"Invalid event name\");\n\t\t},\n\t\tdispatchEvent: name => {\n\t\t\tif(typeof container.advancedSelect.eventsHandlers[name] == \"undefined\") {\n\t\t\t\treturn console.error(\"Advanced Select component.\", \"dispatchEvent()\", \"Invalid event name\");\n\t\t\t}\n\t\t\t\n\t\t\tfor(let eventHandler of container.advancedSelect.eventsHandlers[name]) {\n\t\t\t\teventHandler(container);\n\t\t\t}\n\t\t}\n\t};\n\n\tinput.setAttribute(\"autocomplete\", \"nope\");\n\n\tinput.advancedSelect = {\n\t\tvalue: () => container.advancedSelect.value()\n\t}\n\n\tinput.addEventListener(\"focus\", e => {\n\t\tcontainer.advancedSelect.openList();\n\t});\n\n\tinput.addEventListener(\"blur\", e => {\n\t\trequestAnimationFrame(() => {\n\t\t\tif(!container.matches(\":hover\")) {\n\t\t\t\tcontainer.advancedSelect.closeList();\n\t\t\t}\n\t\t});\n\t});\n\n\tinput.addEventListener(\"keydown\", e => {\n\t\tif(e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\t// up\n\t\t\tconst current = container.querySelector(\".option.focus\");\n\t\t\tif(current) {\n\t\t\t\tcurrent.classList.remove(\"focus\");\n\t\t\t\tlet prev = current.previousElementSibling;\n\n\t\t\t\twhile (prev) {\n\t\t\t\t\tif (!prev.classList.contains(\"hide\")) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tprev = prev.previousElementSibling;\n\t\t\t\t}\n\n\t\t\t\tif(!prev) {\n\t\t\t\t\tprev = firstVisibleOption(container);\n\t\t\t\t}\n\n\t\t\t\tprev?.classList.add(\"focus\");\n\t\t\t} else {\n\t\t\t\tlastVisibleOption(container)?.classList.add(\"focus\");\n\t\t\t}\n\n\t\t\tscrollToElementInFocus(container);\n\t\t} else if(e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\t// down\n\t\t\tconst current = container.querySelector(\".option.focus\");\n\t\t\tif(current) {\n\t\t\t\tcurrent.classList.remove(\"focus\");\n\t\t\t\tlet next = current.nextElementSibling;\n\n\t\t\t\twhile (next) {\n\t\t\t\t\tif (!next.classList.contains(\"hide\")) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tnext = next.nextElementSibling;\n\t\t\t\t}\n\n\t\t\t\tif(!next) {\n\t\t\t\t\tnext = firstVisibleOption(container);\n\t\t\t\t}\n\n\t\t\t\tnext?.classList.add(\"focus\");\n\t\t\t} else {\n\t\t\t\tfirstVisibleOption(container)?.classList.add(\"focus\");\n\t\t\t}\n\n\t\t\tscrollToElementInFocus(container);\n\t\t} else if(e.key === \"Enter\") {\n\t\t\te.preventDefault();\n\t\t\tlet selected = container.querySelector(\".option.focus\");\n\t\t\tselectOption(input, container, selected);\n\t\t} else if(e.key === \"Escape\") {\n\t\t\tcontainer.advancedSelect.closeList();\n\t\t\tinput.blur();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"input\", e => {\n\t\tconst val = e.currentTarget.value.toLowerCase();\n\t\tif(val == \"\") {\n\t\t\tcontainer.advancedSelect.optionsElements.forEach(i => i.classList.remove(\"hide\"));\n\t\t} else {\n\t\t\t[ ...container.advancedSelect.optionsElements ]\n\t\t\t\t.filter(i => i.dataset.displayValue.toLowerCase().indexOf(val) != -1)\n\t\t\t\t.forEach(i => i.classList.remove(\"hide\"));\n\n\t\t\t[ ...container.advancedSelect.optionsElements ]\n\t\t\t\t.filter(i => i.dataset.displayValue.toLowerCase().indexOf(val) == -1)\n\t\t\t\t.forEach(i => i.classList.add(\"hide\"));\n\n\t\t\tautoSetState(container);\n\n\t\t\tcontainer.querySelector(\".option.focus\")?.classList.remove(\"focus\");\n\t\t}\n\t});\n\n\tinput.addEventListener(\"change\", e => {\n\t\tcontainer.advancedSelect.dispatchEvent(\"changed\");\n\t});\n\n\t[ ...container.advancedSelect.optionsElements ].forEach(option => {\n\t\toption.addEventListener(\"pointerdown\", e => {\n\t\t\te.preventDefault();\n\t\t\tselectOption(input, container, e.currentTarget);\n\t\t});\n\t});\n\n\treturn container;\n}\n", "import Helper from \"./helper.js\";\n\nfunction template(originalText, isMultiString) {\n\tconst placeholder = \"Write something\";\n\tconst input = !isMultiString \n\t\t? ``\n\t\t: ``;\n\n\treturn `\n\t\t
    \n\t\t\t${originalText}\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t`;\n}\n\nexport default function editableString(stringContainer, isMultiString) {\n\tisMultiString = isMultiString ?? false;\n\n\tconst originalText = stringContainer.innerHTML;\n\n\tconst component = Helper.template.createElement(\"div\", {\n\t\t\"class\": \"component editable-string-component\"\n\t}, template(originalText, isMultiString));\n\n\tstringContainer.innerHTML = \"\";\n\tstringContainer.append(component);\n\n\tconst editBtn = component.querySelector(\".edit-text-btn\");\n\tconst applyBtn = component.querySelector(\".apply-changes-btn\");\n\tconst cancelBtn = component.querySelector(\".cancel-changes-btn\");\n\tconst content = component.querySelector(\".editable-string-content\");\n\tconst editableString = component.querySelector(\".editable-string\");\n\tconst form = component.querySelector(\".editable-string-form\");\n\tconst input = component.querySelector(\".input\");\n\n\tcomponent.editableString = {\n\t\tformIsDisplaying: false,\n\t\tvalue: originalText,\n\t\tinput: input,\n\t\teventsHandlers: {\n\t\t\tonChange: [],\n\t\t\tonSwitch: [],\n\t\t},\n\t\tswitch: () => {\n\t\t\tif(component.formIsDisplaying) {\n\t\t\t\tform.classList.add(\"d-none\");\n\t\t\t\tcontent.classList.remove(\"d-none\");\n\t\t\t\teditableString.innerText = component.editableString.value;\n\t\t\t} else {\n\t\t\t\tform.classList.remove(\"d-none\");\n\t\t\t\tcontent.classList.add(\"d-none\");\n\t\t\t\tinput.value = component.editableString.value;\n\t\t\t}\n\n\t\t\tcomponent.formIsDisplaying = !component.formIsDisplaying;\n\t\t\tcomponent.editableString.runEventHandler(\"onSwitch\");\n\t\t},\n\t\tsetValue: val => {\n\t\t\tcomponent.editableString.value = val;\n\t\t\tinput.value = val;\n\t\t\teditableString.innerText = val;\n\t\t},\n\t\tapply: () => {\n\t\t\tcomponent.editableString.value = input.value;\n\t\t\tcomponent.editableString.switch();\n\t\t\tif(input.value != originalText) {\n\t\t\t\tcomponent.editableString.runEventHandler(\"onChange\");\n\t\t\t}\n\t\t},\n\t\tonChange: cb => {\n\t\t\tcomponent.editableString.eventsHandlers.onChange.push(cb);\n\t\t},\n\t\tonSwitch: cb => {\n\t\t\tcomponent.editableString.eventsHandlers.onSwitch.push(cb);\n\t\t},\n\t\trunEventHandler: evName => {\n\t\t\tcomponent.editableString.eventsHandlers[evName].forEach(handler => handler(component.editableString));\n\t\t} \n\t}\n\n\teditBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.switch();\n\t});\n\n\tcancelBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.switch();\n\t});\n\n\tapplyBtn.addEventListener(\"click\", e => {\n\t\tcomponent.editableString.apply();\n\t});\n\n\tinput.addEventListener(\"keydown\", e => {\n\t\tif(e.key === \"Enter\") {\n\t\t\tinput.blur();\n\t\t\tcomponent.editableString.apply();\n\t\t}\n\t});\n\n\treturn component;\n}\n", "import Helper from \"./helper.js\";\nimport Modals from \"./modals.js\";\n\nexport default function confirmPopup(text, confirmedCb, canceledCb) {\n\tModals.create(\"confirm-popup\", {\n\t\ttitle: `Requires confirmation`,\n\t\tbody: () => {\n\t\t\tconst paragraph = document.createElement(\"p\");\n\t\t\tparagraph.textContent = text ?? \"\";\n\t\t\treturn paragraph;\n\t\t},\n\t\tactions: modal => {\n\t\t\tconst buttonNO = Helper.template.createElement(\"button\", { class: \"btn btn-primary\" }, \"NO\");\n\t\t\tconst buttonYES = Helper.template.createElement(\"button\", { class: \"btn btn-warning\" }, \"YES\");\n\n\t\t\tbuttonNO.addEventListener(\"click\", e => {\n\t\t\t\tmodal.close();\n\t\t\t\tcanceledCb?.();\n\t\t\t});\n\n\t\t\tbuttonYES.addEventListener(\"click\", e => {\n\t\t\t\tmodal.close();\n\t\t\t\tconfirmedCb?.();\n\t\t\t});\n\n\t\t\treturn [ buttonNO, buttonYES ];\n\t\t}\n\t}).show();\n}\n", "function appendContent(container, content, mode = \"html\") {\n\tif(content instanceof Node) {\n\t\tcontainer.append(content);\n\t\treturn;\n\t}\n\n\tif(typeof content != \"undefined\" && content !== null) {\n\t\tif(mode === \"text\") {\n\t\t\tcontainer.textContent = content;\n\t\t} else {\n\t\t\tcontainer.innerHTML = content;\n\t\t}\n\t}\n}\n\nfunction template(id, title, footer, props = {}) {\n\tconst drawer = document.createElement(\"div\");\n\tdrawer.className = \"drawer\";\n\tdrawer.setAttribute(\"aria-hidden\", \"true\");\n\tdrawer.id = id;\n\n\tif(props.position === \"left\") {\n\t\tdrawer.classList.add(\"drawer-left\");\n\t}\n\n\tconst backdrop = document.createElement(\"div\");\n\tbackdrop.className = \"drawer-backdrop\";\n\n\tconst panel = document.createElement(\"aside\");\n\tpanel.className = \"drawer-panel\";\n\tpanel.setAttribute(\"role\", \"dialog\");\n\tpanel.setAttribute(\"aria-modal\", \"true\");\n\tpanel.setAttribute(\"aria-labelledby\", `${id}-title`);\n\n\tconst header = document.createElement(\"header\");\n\theader.className = \"drawer-header\";\n\n\tconst drawerTitle = document.createElement(\"h4\");\n\tdrawerTitle.className = \"drawer-title\";\n\tdrawerTitle.id = `${id}-title`;\n\tdrawerTitle.textContent = title;\n\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"btn-icon drawer-close\";\n\tclose.type = \"button\";\n\tclose.setAttribute(\"aria-label\", \"Close\");\n\tclose.textContent = \"\u2715\";\n\n\tconst body = document.createElement(\"div\");\n\tbody.className = \"drawer-body\";\n\n\tconst drawerFooter = document.createElement(\"footer\");\n\tdrawerFooter.className = \"drawer-footer\";\n\tappendContent(drawerFooter, footer, props.footerMode ?? \"html\");\n\n\theader.append(drawerTitle, close);\n\tpanel.append(header, body, drawerFooter);\n\tdrawer.append(backdrop, panel);\n\n\treturn drawer;\n}\n\nfunction init(drawer, onready) {\n\tdrawer.show = function() {\n\t\tdocument.querySelector(\"body\").append(drawer);\n\n\t\tsetTimeout(() => {\n\t\t\tdrawer.classList.add(\"a-show\");\n\t\t}, 10);\n\t};\n\n\tdrawer.close = function() {\n\t\tdrawer.classList.add(\"a-hide\");\n\t\tsetTimeout(() => {\n\t\t\tdrawer.remove();\n\t\t}, 300);\n\t};\n\n\tdrawer.querySelector(\".drawer-close\").addEventListener(\"click\", () => {\n\t\tdrawer.close();\n\t});\n\n\tdrawer.querySelector(\".drawer-backdrop\").addEventListener(\"click\", () => {\n\t\tdrawer.close();\n\t});\n\n\tif(typeof onready == \"function\") {\n\t\tonready(drawer);\n\t}\n\n\treturn drawer;\n}\n\nfunction create(id, props) {\n\tprops = props ?? {};\n\tconst title = props.title || \"\";\n\tconst footer = props.footer || \"\";\n\n\tconst drawer = template(id, title, footer, props);\n\n\tconst drawerBody = drawer.querySelector(\".drawer-body\");\n\tconst drawerFooter = drawer.querySelector(\".drawer-footer\");\n\n\tif(typeof props.actions == \"function\") {\n\t\tconst actionsResult = props.actions(drawer);\n\n\t\tif(Array.isArray(actionsResult) && actionsResult[0] instanceof Node) {\n\t\t\tconst actions = document.createElement(\"div\");\n\t\t\tactions.classList.add(\"actions\");\n\t\t\tfor(let actionElement of actionsResult) {\n\t\t\t\tactions.append(actionElement);\n\t\t\t}\n\n\t\t\tdrawerFooter.append(actions);\n\t\t} else if(actionsResult instanceof Node) {\n\t\t\tdrawerFooter.append(actionsResult);\n\t\t}\n\t}\n\n\tif(typeof props.body == \"function\") {\n\t\tconst bodyResult = props.body(drawer);\n\n\t\tappendContent(drawerBody, bodyResult, props.bodyMode ?? \"html\");\n\t} else if(typeof props.bodyText != \"undefined\") {\n\t\tappendContent(drawerBody, props.bodyText, \"text\");\n\t} else if(typeof props.bodyHtml != \"undefined\") {\n\t\tappendContent(drawerBody, props.bodyHtml, \"html\");\n\t}\n\n\treturn init(drawer, props?.onready);\n}\n\nexport default {\n\tcreate\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getDrawerForToggle(toggle, root) {\n\tconst id = toggle.getAttribute(\"aria-controls\");\n\n\tif(id) {\n\t\treturn root.getElementById?.(id) || document.getElementById(id);\n\t}\n\n\treturn root.querySelector?.(\"[data-navigation-drawer]\") || document.querySelector(\"[data-navigation-drawer]\");\n}\n\nfunction open(drawer, toggle) {\n\tif(!drawer) {\n\t\treturn;\n\t}\n\n\tdrawer.classList.add(\"is-open\");\n\tdrawer.setAttribute(\"aria-hidden\", \"false\");\n\tdrawer.removeAttribute(\"inert\");\n\ttoggle?.setAttribute(\"aria-expanded\", \"true\");\n\tdocument.body.classList.add(\"nav-drawer-open\");\n\n\tconst firstControl = drawer.querySelector(\"[data-navigation-close], a, button, input, select, textarea\");\n\tfirstControl?.focus?.();\n}\n\nfunction close(drawer, toggle, shouldRestoreFocus = true) {\n\tif(!drawer) {\n\t\treturn;\n\t}\n\n\tdrawer.classList.remove(\"is-open\");\n\tdrawer.setAttribute(\"aria-hidden\", \"true\");\n\tdrawer.setAttribute(\"inert\", \"\");\n\ttoggle?.setAttribute(\"aria-expanded\", \"false\");\n\tdocument.body.classList.remove(\"nav-drawer-open\");\n\n\tif(shouldRestoreFocus) {\n\t\ttoggle?.focus?.();\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst toggle = event.target.closest(\"[data-navigation-toggle]\");\n\n\t\tif(!toggle) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst drawer = getDrawerForToggle(toggle, root);\n\n\t\tif(drawer?.classList.contains(\"is-open\")) {\n\t\t\tclose(drawer, toggle);\n\t\t} else {\n\t\t\topen(drawer, toggle);\n\t\t}\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst closeControl = event.target.closest(\"[data-navigation-close], [data-navigation-link], .nav-drawer .list-action\");\n\n\t\tif(!closeControl) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst drawer = closeControl.closest(\"[data-navigation-drawer]\") || root.querySelector(\"[data-navigation-drawer]\");\n\t\tconst toggle = drawer?.id ? root.querySelector(`[data-navigation-toggle][aria-controls=\"${drawer.id}\"]`) : root.querySelector(\"[data-navigation-toggle]\");\n\t\tconst shouldRestoreFocus = !closeControl.matches(\"[data-navigation-link]\");\n\t\tclose(drawer, toggle, shouldRestoreFocus);\n\t});\n\n\tdocument.addEventListener(\"keydown\", event => {\n\t\tif(event.key !== \"Escape\") {\n\t\t\treturn;\n\t\t}\n\n\t\troot.querySelectorAll(\"[data-navigation-drawer].is-open\").forEach(drawer => {\n\t\t\tconst toggle = drawer.id ? root.querySelector(`[data-navigation-toggle][aria-controls=\"${drawer.id}\"]`) : root.querySelector(\"[data-navigation-toggle]\");\n\t\t\tclose(drawer, toggle);\n\t\t});\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\topen,\n\tclose\n};\n", "const initializedRoots = new WeakSet();\nlet keyboardDismissInitialized = false;\n\nfunction closeNode(node) {\n\tnode.classList.remove(\"is-open\");\n\tnode.querySelectorAll(\"[aria-expanded='true']\").forEach(trigger => {\n\t\ttrigger.setAttribute(\"aria-expanded\", \"false\");\n\t});\n}\n\nfunction closeAll(except = null) {\n\tdocument.querySelectorAll(\".dropdown.is-open, .popover.is-open, .tooltip.is-open\").forEach(node => {\n\t\tif(node !== except) {\n\t\t\tcloseNode(node);\n\t\t}\n\t});\n}\n\nfunction initDropdowns(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-dropdown-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dropdown = trigger.closest(\".dropdown\");\n\n\t\tif(!dropdown) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = dropdown.classList.contains(\"is-open\");\n\t\tcloseAll(dropdown);\n\t\tdropdown.classList.toggle(\"is-open\", !isOpen);\n\t\ttrigger.setAttribute(\"aria-expanded\", String(!isOpen));\n\t});\n}\n\nfunction initPopovers(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-popover-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst popover = trigger.closest(\".popover\");\n\n\t\tif(!popover) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = popover.classList.contains(\"is-open\");\n\t\tcloseAll(popover);\n\t\tpopover.classList.toggle(\"is-open\", !isOpen);\n\t\ttrigger.setAttribute(\"aria-expanded\", String(!isOpen));\n\t});\n}\n\nfunction initTooltips(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tconst trigger = event.target.closest(\"[data-tooltip-toggle]\");\n\n\t\tif(!trigger) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltip = trigger.closest(\".tooltip\");\n\n\t\tif(!tooltip) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst isOpen = tooltip.classList.contains(\"is-open\");\n\t\tcloseAll(tooltip);\n\t\ttooltip.classList.toggle(\"is-open\", !isOpen);\n\t});\n}\n\nfunction initDismiss(root = document) {\n\troot.addEventListener(\"click\", event => {\n\t\tif(event.target.closest(\".dropdown, .popover, .tooltip\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseAll();\n\t});\n\n\tif(!keyboardDismissInitialized) {\n\t\tdocument.addEventListener(\"keydown\", event => {\n\t\t\tif(event.key === \"Escape\") {\n\t\t\t\tcloseAll();\n\t\t\t}\n\t\t});\n\n\t\tkeyboardDismissInitialized = true;\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\tinitDropdowns(root);\n\tinitPopovers(root);\n\tinitTooltips(root);\n\tinitDismiss(root);\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tcloseAll\n};\n", "const initializedRoots = new WeakSet();\nconst fileUploadState = new WeakMap();\n\nfunction getFileKey(file) {\n\treturn `${file.name}:${file.size}:${file.lastModified}`;\n}\n\nfunction clearFilePreviews(previewNode) {\n\tif(!previewNode) {\n\t\treturn;\n\t}\n\n\tpreviewNode.querySelectorAll(\"img[data-object-url]\").forEach(image => {\n\t\tURL.revokeObjectURL(image.dataset.objectUrl);\n\t});\n\tpreviewNode.innerHTML = \"\";\n\tpreviewNode.hidden = true;\n}\n\nfunction getStoredFiles(input) {\n\treturn fileUploadState.get(input) || [];\n}\n\nfunction setStoredFiles(input, files) {\n\tfileUploadState.set(input, files);\n\n\tconst transfer = new DataTransfer();\n\tfiles.forEach(file => transfer.items.add(file));\n\tinput.files = transfer.files;\n}\n\nfunction addStoredFiles(input, files) {\n\tconst storedFiles = getStoredFiles(input);\n\tconst knownKeys = new Set(storedFiles.map(getFileKey));\n\tconst nextFiles = [...storedFiles];\n\n\tfiles.forEach(file => {\n\t\tconst key = getFileKey(file);\n\n\t\tif(!knownKeys.has(key)) {\n\t\t\tknownKeys.add(key);\n\t\t\tnextFiles.push(file);\n\t\t}\n\t});\n\n\tsetStoredFiles(input, nextFiles);\n\treturn nextFiles;\n}\n\nfunction removeStoredFile(input, index) {\n\tconst nextFiles = getStoredFiles(input).filter((file, fileIndex) => fileIndex !== index);\n\tsetStoredFiles(input, nextFiles);\n\treturn nextFiles;\n}\n\nfunction getFileType(file) {\n\tconst nameParts = file.name.split(\".\");\n\tconst extension = nameParts.length > 1 ? nameParts.pop().trim() : \"\";\n\n\tif(extension) {\n\t\treturn extension.slice(0, 6).toUpperCase();\n\t}\n\n\tif(file.type) {\n\t\treturn file.type.split(\"/\").pop().slice(0, 6).toUpperCase();\n\t}\n\n\treturn \"FILE\";\n}\n\nfunction formatBytes(bytes) {\n\tif(!Number.isFinite(bytes)) {\n\t\treturn \"\";\n\t}\n\n\tif(bytes === 0) {\n\t\treturn \"0 B\";\n\t}\n\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\"];\n\tconst index = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n\tconst value = bytes / Math.pow(1024, index);\n\n\treturn `${value.toFixed(value >= 10 || index === 0 ? 0 : 1)} ${units[index]}`;\n}\n\nfunction updateFileUpload(input) {\n\tconst container = input.closest(\".file-upload-panel, .file-upload\");\n\tconst previewNode = container?.querySelector(\"[data-file-upload-preview]\");\n\n\tif(!container || !previewNode) {\n\t\treturn;\n\t}\n\n\tconst files = getStoredFiles(input);\n\n\tif(!files.length) {\n\t\tclearFilePreviews(previewNode);\n\t\treturn;\n\t}\n\n\tupdateFilePreviews(previewNode, files);\n}\n\nfunction updateFilePreviews(previewNode, files) {\n\tif(!previewNode) {\n\t\treturn;\n\t}\n\n\tclearFilePreviews(previewNode);\n\n\tfiles.forEach((file, index) => {\n\t\tconst figure = document.createElement(\"figure\");\n\t\tfigure.className = \"file-upload-preview-item\";\n\t\tfigure.dataset.fileUploadIndex = String(index);\n\n\t\tconst preview = document.createElement(\"div\");\n\t\tpreview.className = \"file-upload-preview-visual\";\n\n\t\tif(file.type.startsWith(\"image/\")) {\n\t\t\tconst image = document.createElement(\"img\");\n\t\t\tconst objectUrl = URL.createObjectURL(file);\n\t\t\timage.src = objectUrl;\n\t\t\timage.dataset.objectUrl = objectUrl;\n\t\t\timage.alt = \"\";\n\t\t\timage.loading = \"lazy\";\n\t\t\tpreview.append(image);\n\t\t} else {\n\t\t\tconst type = document.createElement(\"span\");\n\t\t\ttype.className = \"file-upload-preview-type\";\n\t\t\ttype.textContent = getFileType(file);\n\t\t\tpreview.append(type);\n\t\t}\n\n\t\tconst caption = document.createElement(\"figcaption\");\n\n\t\tconst name = document.createElement(\"span\");\n\t\tname.className = \"file-upload-preview-name\";\n\t\tname.textContent = file.name;\n\n\t\tconst meta = document.createElement(\"span\");\n\t\tmeta.className = \"file-upload-preview-meta\";\n\t\tmeta.textContent = `${getFileType(file)} / ${formatBytes(file.size)}`;\n\n\t\tconst remove = document.createElement(\"button\");\n\t\tremove.className = \"file-upload-preview-remove\";\n\t\tremove.type = \"button\";\n\t\tremove.dataset.fileUploadRemove = String(index);\n\t\tremove.setAttribute(\"aria-label\", `Remove ${file.name}`);\n\t\tremove.innerHTML = ``;\n\n\t\tcaption.append(name, meta);\n\t\tfigure.append(remove, preview, caption);\n\t\tpreviewNode.append(figure);\n\t});\n\n\tpreviewNode.hidden = false;\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst clearButton = event.target.closest(\"[data-input-clear]\");\n\n\t\tif(!clearButton) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst group = clearButton.closest(\".input-group\");\n\t\tconst input = group?.querySelector(\"input, textarea\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tinput.value = \"\";\n\t\tinput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\t\tinput.focus();\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst removeButton = event.target.closest(\"[data-file-upload-remove]\");\n\n\t\tif(!removeButton) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = removeButton.closest(\".file-upload-panel, .file-upload\");\n\t\tconst input = container?.querySelector(\"[data-file-upload-input]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveStoredFile(input, Number(removeButton.dataset.fileUploadRemove));\n\t\tupdateFileUpload(input);\n\t\tinput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n\t});\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst input = event.target.closest(\"[data-date-picker]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\tinput.focus();\n\n\t\tif(typeof input.showPicker === \"function\") {\n\t\t\ttry {\n\t\t\t\tinput.showPicker();\n\t\t\t} catch(error) {\n\t\t\t\t// Some browsers restrict showPicker() to direct user gestures or supported input types.\n\t\t\t}\n\t\t}\n\t});\n\n\troot.addEventListener(\"change\", event => {\n\t\tconst input = event.target.closest(\"[data-file-upload-input]\");\n\n\t\tif(!input) {\n\t\t\treturn;\n\t\t}\n\n\t\taddStoredFiles(input, Array.from(input.files || []));\n\t\tupdateFileUpload(input);\n\t});\n\n\troot.addEventListener(\"reset\", event => {\n\t\tconst form = event.target.closest(\"form\");\n\n\t\tif(!form) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tform.querySelectorAll(\"[data-file-upload-input]\").forEach(input => {\n\t\t\t\tsetStoredFiles(input, []);\n\t\t\t\tupdateFileUpload(input);\n\t\t\t});\n\t\t}, 0);\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tupdateFileUpload\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getPanel(details) {\n\treturn details.querySelector(\".accordion-panel\");\n}\n\nfunction prepareOpenPanel(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel) {\n\t\treturn;\n\t}\n\n\tpanel.style.height = \"auto\";\n\tpanel.style.opacity = \"1\";\n\tpanel.style.transform = \"translateY(0)\";\n}\n\nfunction expand(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel || details.dataset.animating === \"true\") {\n\t\treturn;\n\t}\n\n\tdetails.dataset.animating = \"true\";\n\tdetails.open = true;\n\tpanel.style.height = \"0px\";\n\tpanel.style.opacity = \"0\";\n\tpanel.style.transform = \"translateY(-8px)\";\n\n\trequestAnimationFrame(() => {\n\t\tpanel.style.height = `${panel.scrollHeight}px`;\n\t\tpanel.style.opacity = \"1\";\n\t\tpanel.style.transform = \"translateY(0)\";\n\t});\n\n\tconst handleTransitionEnd = event => {\n\t\tif(event.propertyName !== \"height\") {\n\t\t\treturn;\n\t\t}\n\n\t\tpanel.removeEventListener(\"transitionend\", handleTransitionEnd);\n\t\tpanel.style.height = \"auto\";\n\t\tdelete details.dataset.animating;\n\t};\n\n\tpanel.addEventListener(\"transitionend\", handleTransitionEnd);\n}\n\nfunction collapse(details) {\n\tconst panel = getPanel(details);\n\n\tif(!panel || details.dataset.animating === \"true\") {\n\t\treturn;\n\t}\n\n\tdetails.dataset.animating = \"true\";\n\tpanel.style.height = `${panel.scrollHeight}px`;\n\tpanel.style.opacity = \"1\";\n\tpanel.style.transform = \"translateY(0)\";\n\n\trequestAnimationFrame(() => {\n\t\tpanel.style.height = \"0px\";\n\t\tpanel.style.opacity = \"0\";\n\t\tpanel.style.transform = \"translateY(-8px)\";\n\t});\n\n\tconst handleTransitionEnd = event => {\n\t\tif(event.propertyName !== \"height\") {\n\t\t\treturn;\n\t\t}\n\n\t\tpanel.removeEventListener(\"transitionend\", handleTransitionEnd);\n\t\tdetails.open = false;\n\t\tpanel.style.height = \"\";\n\t\tpanel.style.opacity = \"\";\n\t\tpanel.style.transform = \"\";\n\t\tdelete details.dataset.animating;\n\t};\n\n\tpanel.addEventListener(\"transitionend\", handleTransitionEnd);\n}\n\nfunction toggle(details) {\n\tif(details.open) {\n\t\tcollapse(details);\n\t} else {\n\t\texpand(details);\n\t}\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.querySelectorAll(\".accordion-item[open], .disclosure[open]\").forEach(prepareOpenPanel);\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst summary = event.target.closest(\".accordion-summary\");\n\n\t\tif(!summary) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst details = summary.closest(\".accordion-item, .disclosure\");\n\n\t\tif(!details) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\ttoggle(details);\n\t});\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\texpand,\n\tcollapse,\n\ttoggle\n};\n", "const initializedRoots = new WeakSet();\n\nfunction getTabs(root) {\n\treturn [...root.querySelectorAll('[role=\"tab\"], .tab')];\n}\n\nfunction getPanels(root) {\n\treturn [...root.querySelectorAll('[role=\"tabpanel\"], .tab-panel')];\n}\n\nfunction getPanel(root, tab) {\n\tconst panelId = tab.getAttribute(\"aria-controls\");\n\n\tif(!panelId) {\n\t\treturn null;\n\t}\n\n\treturn root.querySelector(`#${CSS.escape(panelId)}`);\n}\n\nfunction setTabState(tab, isActive) {\n\ttab.classList.toggle(\"tab-active\", isActive);\n\ttab.setAttribute(\"aria-selected\", isActive ? \"true\" : \"false\");\n\ttab.setAttribute(\"tabindex\", isActive ? \"0\" : \"-1\");\n}\n\nfunction setPanelState(panel, isActive) {\n\tpanel.classList.toggle(\"tab-panel-active\", isActive);\n\tpanel.toggleAttribute(\"hidden\", !isActive);\n}\n\nfunction activate(tab, options = {}) {\n\tif(!tab || tab.disabled || tab.getAttribute(\"aria-disabled\") === \"true\") {\n\t\treturn;\n\t}\n\n\tconst root = tab.closest(\".tabs\") || tab.closest('[role=\"tablist\"]')?.parentElement;\n\n\tif(!root) {\n\t\treturn;\n\t}\n\n\tgetTabs(root).forEach(item => setTabState(item, item === tab));\n\tgetPanels(root).forEach(panel => setPanelState(panel, false));\n\n\tconst panel = getPanel(root, tab);\n\n\tif(panel) {\n\t\tsetPanelState(panel, true);\n\t}\n\n\tif(options.focus !== false) {\n\t\ttab.focus();\n\t}\n}\n\nfunction getNextEnabledTab(tabs, activeIndex, direction) {\n\tfor(let offset = 1; offset <= tabs.length; offset++) {\n\t\tconst index = (activeIndex + (offset * direction) + tabs.length) % tabs.length;\n\t\tconst tab = tabs[index];\n\n\t\tif(!tab.disabled && tab.getAttribute(\"aria-disabled\") !== \"true\") {\n\t\t\treturn tab;\n\t\t}\n\t}\n\n\treturn tabs[activeIndex];\n}\n\nfunction handleKeydown(event) {\n\tconst tab = event.target.closest('[role=\"tab\"], .tab');\n\n\tif(!tab) {\n\t\treturn;\n\t}\n\n\tconst root = tab.closest(\".tabs\") || tab.closest('[role=\"tablist\"]')?.parentElement;\n\tconst tabs = root ? getTabs(root) : [];\n\tconst activeIndex = tabs.indexOf(tab);\n\n\tif(activeIndex < 0) {\n\t\treturn;\n\t}\n\n\tlet nextTab = null;\n\n\tif(event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\tnextTab = getNextEnabledTab(tabs, activeIndex, 1);\n\t} else if(event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\tnextTab = getNextEnabledTab(tabs, activeIndex, -1);\n\t} else if(event.key === \"Home\") {\n\t\tnextTab = getNextEnabledTab(tabs, -1, 1);\n\t} else if(event.key === \"End\") {\n\t\tnextTab = getNextEnabledTab(tabs, 0, -1);\n\t}\n\n\tif(!nextTab) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\tactivate(nextTab);\n}\n\nfunction prepare(root) {\n\tconst tabs = getTabs(root);\n\tconst activeTab = tabs.find(tab => tab.classList.contains(\"tab-active\") || tab.getAttribute(\"aria-selected\") === \"true\")\n\t\t|| tabs.find(tab => !tab.disabled && tab.getAttribute(\"aria-disabled\") !== \"true\");\n\n\ttabs.forEach(tab => {\n\t\ttab.setAttribute(\"role\", \"tab\");\n\t\tsetTabState(tab, tab === activeTab);\n\t});\n\n\troot.querySelectorAll(\".tabs-list\").forEach(list => {\n\t\tlist.setAttribute(\"role\", \"tablist\");\n\t});\n\n\tgetPanels(root).forEach(panel => {\n\t\tpanel.setAttribute(\"role\", \"tabpanel\");\n\t\tsetPanelState(panel, activeTab ? panel === getPanel(root, activeTab) : panel.classList.contains(\"tab-panel-active\"));\n\t});\n}\n\nfunction init(root = document) {\n\tif(initializedRoots.has(root)) {\n\t\treturn;\n\t}\n\n\troot.querySelectorAll(\".tabs\").forEach(prepare);\n\n\troot.addEventListener(\"click\", event => {\n\t\tconst tab = event.target.closest('[role=\"tab\"], .tab');\n\n\t\tif(!tab || !root.contains(tab)) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tactivate(tab, { focus: false });\n\t});\n\n\troot.addEventListener(\"keydown\", handleKeydown);\n\n\tinitializedRoots.add(root);\n}\n\nexport default {\n\tinit,\n\tactivate\n};\n", "export default function demoNavigation() {\n const navItems = [...document.querySelectorAll(\".nav-drawer .list-item\")];\n const currentSection = document.querySelector(\"[data-docs-current-section]\");\n\n if (!navItems.length) {\n return;\n }\n\n const setActive = id => {\n navItems.forEach(item => {\n const link = item.querySelector(\".list-action\");\n const isActive = link?.getAttribute(\"href\") === `#${id}`;\n item.classList.toggle(\"list-item-active\", isActive);\n\n if (isActive && currentSection) {\n currentSection.textContent = link.querySelector(\".list-label\")?.textContent.trim() || id;\n }\n });\n };\n\n const updateFromHash = () => {\n const id = window.location.hash?.slice(1);\n\n if (id) {\n setActive(id);\n }\n };\n\n window.addEventListener(\"hashchange\", updateFromHash);\n updateFromHash();\n}\n", "function fallbackCopy(text) {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"readonly\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.append(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n textarea.remove();\n}\n\nfunction escapeHtml(text) {\n return text\n .replace(/&/g, \"&\")\n .replace(//g, \">\");\n}\n\nfunction highlightJavascript(code) {\n const source = code.textContent;\n const tokens = /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|`(?:\\\\[\\s\\S]|[^`\\\\])*`|'(?:\\\\.|[^'\\\\])*'|\"(?:\\\\.|[^\"\\\\])*\"|\\b(?:async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)\\b|\\b\\d+(?:\\.\\d+)?\\b|\\b[A-Za-z_$][\\w$]*(?=\\s*\\()/gm;\n let html = \"\";\n let cursor = 0;\n let match;\n\n while ((match = tokens.exec(source)) !== null) {\n const token = match[0];\n html += escapeHtml(source.slice(cursor, match.index));\n\n if (token.startsWith(\"//\") || token.startsWith(\"/*\")) {\n html += `${escapeHtml(token)}`;\n } else if (token.startsWith(\"\\\"\") || token.startsWith(\"'\") || token.startsWith(\"`\")) {\n html += `${escapeHtml(token)}`;\n } else if (/^\\d/.test(token)) {\n html += `${escapeHtml(token)}`;\n } else if (/^[A-Za-z_$][\\w$]*$/.test(token) && source[match.index + token.length]?.match(/\\s|\\(/)) {\n const keyword = /^(async|await|break|case|catch|class|const|continue|default|do|else|export|for|from|function|if|import|let|new|null|return|switch|throw|try|var|while)$/.test(token);\n html += keyword\n ? `${token}`\n : `${token}`;\n } else {\n html += escapeHtml(token);\n }\n\n cursor = match.index + token.length;\n }\n\n html += escapeHtml(source.slice(cursor));\n code.innerHTML = html;\n code.classList.add(\"hljs\");\n}\n\nfunction highlightCode() {\n document.querySelectorAll(\"code.language-js, code.language-javascript\").forEach(highlightJavascript);\n\n if (window.hljs) {\n document\n .querySelectorAll(\"code:not(.language-js):not(.language-javascript)\")\n .forEach(code => window.hljs.highlightElement(code));\n }\n}\n\nexport default function codeExamples() {\n highlightCode();\n\n document.querySelectorAll(\".code-example .btn-icon\").forEach(button => {\n button.addEventListener(\"click\", async () => {\n const example = button.closest(\".code-example\");\n const code = example?.querySelector(\"code\");\n const text = code?.textContent ?? \"\";\n const originalIcon = button.innerHTML;\n\n if (!text) {\n return;\n }\n\n try {\n if (navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else {\n fallbackCopy(text);\n }\n } catch {\n fallbackCopy(text);\n }\n\n button.innerHTML = ``;\n\n setTimeout(() => {\n button.innerHTML = originalIcon;\n }, 1200);\n });\n });\n}\n"], + "mappings": "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", + "names": ["index_exports", "__export", "accordion_default", "drawer_default", "helper_default", "input_patterns_default", "modals_default", "navigation_shell_default", "overlays_default", "tabs_default", "toasts_default", "advancedSelect", "confirmPopup", "index_default", "editableString", "sidebarNav", "items", "listItems", "item", "aOpen", "aClose", "table", "caption", "columns", "data", "tfoot", "head", "totalColumns", "key", "body", "column", "foot", "tableCaption", "tableHead", "createElement", "type", "props", "content", "node", "value", "createAlert", "fieldsUnification", "map", "dataObj", "field", "btnLoadingState", "btn", "isLoading", "cardStatusLoadingState", "card", "iconContainer", "mainTemplate", "sidebar", "connectionStatusBadge", "status", "toogleStateBadge", "state", "timeAgo", "dateString", "date", "diff_seconds", "minutes", "hours", "days", "remain_minutes", "formatDate", "now", "today", "target_day", "diff_days", "months", "circleLoaderHTML", "emptyHereHTML", "helper_default", "appendIcon", "container", "icon", "iconWrap", "template", "type", "title", "text", "toast", "content", "toastTitle", "toastText", "close", "init", "props", "i", "_a", "e", "lifetimeInterval", "create", "createSuccess", "createInfo", "createWarning", "createError", "toasts_default", "appendContent", "container", "content", "mode", "template", "id", "title", "footer", "props", "_a", "modal", "backdrop", "dialog", "panel", "header", "modalTitle", "close", "body", "modalFooter", "init", "onready", "e", "create", "modalBody", "actionsResult", "actions", "actionElement", "bodyResult", "modals_default", "scrollToElementInFocus", "container", "focus", "container_rect", "focus_rect", "autoSetState", "firstVisibleOption", "lastVisibleOption", "selectOption", "input", "option", "advancedSelect", "options", "notFoundText", "popup", "notFound", "optionsContainer", "optionValue", "existsOption", "value", "ret", "stateName", "name", "handler", "eventHandler", "e", "_a", "_b", "current", "prev", "next", "selected", "val", "i", "template", "originalText", "isMultiString", "placeholder", "input", "editableString", "stringContainer", "component", "helper_default", "editBtn", "applyBtn", "cancelBtn", "content", "form", "val", "cb", "evName", "handler", "e", "confirmPopup", "text", "confirmedCb", "canceledCb", "modals_default", "paragraph", "modal", "buttonNO", "helper_default", "buttonYES", "e", "appendContent", "container", "content", "mode", "template", "id", "title", "footer", "props", "_a", "drawer", "backdrop", "panel", "header", "drawerTitle", "close", "body", "drawerFooter", "init", "onready", "create", "drawerBody", "actionsResult", "actions", "actionElement", "bodyResult", "drawer_default", "initializedRoots", "getDrawerForToggle", "toggle", "root", "_a", "_b", "id", "open", "drawer", "firstControl", "close", "shouldRestoreFocus", "init", "event", "closeControl", "navigation_shell_default", "initializedRoots", "keyboardDismissInitialized", "closeNode", "node", "trigger", "closeAll", "except", "initDropdowns", "root", "event", "dropdown", "isOpen", "initPopovers", "popover", "initTooltips", "tooltip", "initDismiss", "init", "overlays_default", "initializedRoots", "fileUploadState", "getFileKey", "file", "clearFilePreviews", "previewNode", "image", "getStoredFiles", "input", "setStoredFiles", "files", "transfer", "addStoredFiles", "storedFiles", "knownKeys", "nextFiles", "key", "removeStoredFile", "index", "fileIndex", "getFileType", "nameParts", "extension", "formatBytes", "bytes", "units", "value", "updateFileUpload", "container", "updateFilePreviews", "figure", "preview", "objectUrl", "type", "caption", "name", "meta", "remove", "init", "root", "event", "clearButton", "group", "removeButton", "error", "form", "input_patterns_default", "initializedRoots", "getPanel", "details", "prepareOpenPanel", "panel", "expand", "handleTransitionEnd", "event", "collapse", "toggle", "init", "root", "summary", "accordion_default", "initializedRoots", "getTabs", "root", "getPanels", "getPanel", "tab", "panelId", "setTabState", "isActive", "setPanelState", "panel", "activate", "options", "_a", "item", "getNextEnabledTab", "tabs", "activeIndex", "direction", "offset", "index", "handleKeydown", "event", "nextTab", "prepare", "activeTab", "list", "init", "tabs_default", "demoNavigation", "navItems", "currentSection", "setActive", "id", "item", "_a", "link", "isActive", "updateFromHash", "fallbackCopy", "text", "textarea", "escapeHtml", "highlightJavascript", "code", "_a", "source", "tokens", "html", "cursor", "match", "token", "keyword", "highlightCode", "codeExamples", "button", "_b", "example", "originalIcon", "e", "api", "helper_default", "toasts_default", "modals_default", "advancedSelect", "editableString", "confirmPopup", "drawer_default", "navigation_shell_default", "overlays_default", "input_patterns_default", "accordion_default", "tabs_default", "demoNavigation", "codeExamples", "index_default", "api"] } diff --git a/src/js/demo-navigation.js b/src/js/demo-navigation.js index f4d095d..59a579d 100644 --- a/src/js/demo-navigation.js +++ b/src/js/demo-navigation.js @@ -1,9 +1,8 @@ export default function demoNavigation() { const navItems = [...document.querySelectorAll(".nav-drawer .list-item")]; - const sections = [...document.querySelectorAll(".docs-content .section[id]")]; const currentSection = document.querySelector("[data-docs-current-section]"); - if (!navItems.length || !sections.length) { + if (!navItems.length) { return; } @@ -19,49 +18,14 @@ }); }; - const getActiveSection = () => { - const anchor = Math.min(window.innerHeight * 0.35, 280); - let active = sections[0]; + const updateFromHash = () => { + const id = window.location.hash?.slice(1); - for (const section of sections) { - const rect = section.getBoundingClientRect(); - - if (rect.top <= anchor) { - active = section; - } else { - break; - } - } - - return active; - }; - - let ticking = false; - - const updateActive = () => { - ticking = false; - const active = getActiveSection(); - - if (active?.id) { - setActive(active.id); + if (id) { + setActive(id); } }; - const requestUpdate = () => { - if (ticking) { - return; - } - - ticking = true; - window.requestAnimationFrame(updateActive); - }; - - window.addEventListener("scroll", requestUpdate, { passive: true }); - window.addEventListener("resize", requestUpdate); - - if (window.location.hash) { - setActive(window.location.hash.slice(1)); - } else { - updateActive(); - } + window.addEventListener("hashchange", updateFromHash); + updateFromHash(); }