Newer
Older
gnexus-ui-kit / dist / js / gnexus-ui-kit.esm.js
function pe(e){let t="";for(let a of e){let n="",i="";a.route&&(n=`<a class="list-action" href="${a.route}">`,i="</a>"),t+=`
			<li class="list-item ${a.is_active?"list-item-active":""}">
				${n}${a.content}${i}
			</li>
		`}return`
		<div class="sidebar block">
			<ul class="list list-nav">
				${t} 
			</ul>
		</div>
	`}function he(e,t,a,n){let i='<tr class="table-row">',s=0;for(let d in t)i+=`<th scope="col">${t[d]}</th>`,s++;i+="</tr>";let l="";for(let d of a){l+='<tr class="table-row">';for(let f in t)l+=`<td>${d[f]}</td>`;l+="</tr>"}let c="";typeof n!="undefined"&&(c=`
			<tfoot class="table-foot">
				<tr class="table-row">
					<td colspan="${s}">
						${n}
					</td>
				</tr>
			</tfoot>
		`);let o=e?`<caption class="table-caption">${e}</caption>`:"",r=a.length?`<thead class="table-head">${i}</thead>`:"";return l=a.length?l:'<tr><td class="is-empty">Empty</td></tr>',`
		<div class="table-wrapper">
			<table class="table data-list ${a.length?"":"table-empty"}">
				${o}
				${r}
				<tbody class="table-body">${l}</tbody>
				${c}
			</table>
		</div>
	`}function z(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 ve(e,t){return["primary","success","secondary","info","warning","error","danger"].indexOf(e)<0?console.error("createAlert()","Error of type: "+e):z("div",{class:`alert alert-${e}`},t)}function ge(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 ye(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='<i class="ph ph-bold ph-spinner"></i> 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 be(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='<i class="ph ph-bold ph-spinner"></i>';else{if(e.isLoading=!1,!e.originalContent)return!1;e.removeAttribute("disabled"),e.classList.remove("loading-state"),a.innerHTML=e.originalContent}return e}function Ee(e,t){return t=t!=null?t:"",`
		<div class="container">
			<div class="row adaptive g-6">
				<div class="col sidebar-container">
					${e}
				</div>
				<div class="col main-container w-100">
					${t}
				</div>
			</div>
		</div>
	`}function Se(e){return e=="active"?'<span class="badge badge-success">Online</span>':'<span class="badge badge-warning">Offline</span>'}function Le(e){return e=="enabled"?'<span class="badge badge-success">Enabled</span>':'<span class="badge badge-primary">Disabled</span>'}function we(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 c=i%60;return`${s} hour${s!==1?"s":""} ${c} minute${c!==1?"s":""} ago`}return`${l} day${l!==1?"s":""} ago`}function xe(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"),c=String(t.getMinutes()).padStart(2,"0");if(s===0)return`Today at ${l}:${c}`;if(s===1)return`Yesterday at ${l}:${c}`;let o=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return`${t.getDate()} ${o[t.getMonth()]} ${t.getFullYear()} at ${l}:${c}`}function Ae(){return`
		<div class="circle-loader">
			<i class="ph ph-bold ph-spinner normalize"></i>
			Loading
		</div>
	`}function $e(){return`
		<div class="empty-here">
			<div class="icon"><i class="ph ph-placeholder normalize"></i></div>
			<p class="text-msg">It's empty here yet</p>
		</div>
	`}var m={template:{sidebarNav:pe,table:he,createElement:z,createAlert:ve,mainTemplate:Ee,connectionStatusBadge:Se,toogleStateBadge:Le,circleLoaderHTML:Ae,emptyHereHTML:$e},unification:{fieldsUnification:ge,timeAgo:we,formatDate:xe},states:{btnLoadingState:ye,cardStatusLoadingState:be}};function ke(e,t){if(t instanceof Node){e.append(t);return}let a=document.createElement("span");a.innerHTML=t,e.append(...a.childNodes)}function qe(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("div");if(l.className="toast-header",ke(l,t),l.append(document.createTextNode(` ${a!=null?a:""}`)),s.append(l),n){let u=document.createElement("p");u.className="toast-text",u.textContent=n,s.append(u)}let c=document.createElement("div");c.className="toast-progress";let o=document.createElement("div");o.className="toast-progress-bar",c.append(o);let r=document.createElement("button");return r.className="btn-icon toast-close",r.type="button",r.setAttribute("aria-label","Close"),r.innerHTML='<i class="ph ph-x"></i>',i.append(s,r,c),i}function Te(e,t){let a=(t==null?void 0:t.lifetime)||4e3;t!=null&&t.alone&&document.querySelectorAll(".toast").forEach(i=>{var s;return(s=i.close)==null?void 0:s.call(i)});let n=e.querySelector(".toast-progress-bar");if(n&&a>0&&(n.style.animationDuration=`${a}ms`),e.close=function(){this.classList.add("a-hide"),setTimeout(()=>{this.remove()},300)},e.querySelector(".toast-close").addEventListener("click",i=>{e.close()}),e.show=function(){document.querySelector("body").append(e),setTimeout(()=>{e.classList.add("a-show")},10)},e.addEventListener("mouseover",i=>e.ishovered=!0),e.addEventListener("mouseout",i=>e.ishovered=!1),a>0){let i=setInterval(()=>{e.ishovered||(e.close(),clearInterval(i))},a)}return e}function v(e,t,a,n,i){return Te(qe(e,t,a,n),i)}function g(e){return typeof e=="undefined"&&(e={}),typeof e.lifetime=="undefined"&&(e.lifetime=4e3),typeof e.alone=="undefined"&&(e.alone=!0),e}function Ne(e,t,a){return a=g(a),v("success",'<i class="ph ph-check-circle"></i>',e,t,a)}function He(e,t,a){return a=g(a),v("info",'<i class="ph ph-info"></i>',e,t,a)}function Me(e,t,a){return a=g(a),v("warning",'<i class="ph ph-warning"></i>',e,t,a)}function V(e,t,a){return a=g(a),v("danger",'<i class="ph ph-warning-octagon"></i>',e,t,a)}var Y={create:v,createInfo:He,createSuccess:Ne,createWarning:Me,createError:V,createDanger:V};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 Ce(e,t,a,n={}){var P;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 c=document.createElement("div");c.className="modal-panel";let o=document.createElement("header");o.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,(P=n.footerMode)!=null?P:"html"),o.append(r,u),c.append(d,f),l.append(o,c),i.append(s,l),i}function De(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 Oe(e,t){var c;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=Ce(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 r=document.createElement("div");r.classList.add("actions");for(let u of o)r.append(u);l.append(r)}else o instanceof Node&&l.append(o)}if(typeof t.body=="function"){let o=t.body(i);y(s,o,(c=t.bodyMode)!=null?c:"html")}else typeof t.bodyText!="undefined"?y(s,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&y(s,t.bodyHtml,"html");return De(i,t==null?void 0:t.onready)}var b={create:Oe};function _(e){let t=e.querySelector(".focus");if(!t)return;let a=e.getBoundingClientRect(),n=t.getBoundingClientRect();n.top<a.top?e.scrollTop-=a.top-n.top:n.bottom>a.bottom&&(e.scrollTop+=n.bottom-a.bottom)}function x(e){e.advancedSelect.optionsElements.length-e.querySelectorAll(".option.hide").length==0?e.advancedSelect.showState("not-found"):e.advancedSelect.showState("options")}function A(e){return e.querySelector(".option:not(.hide)")}function Fe(e){return e.querySelector(".option:not(.hide):last-child")}function K(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 $(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 r=document.createElement("div");r.className="option",r.dataset.value=o,r.dataset.displayValue=t[o],r.textContent=t[o],l.append(r)}i.append(s,l),n.append(i);let c=(o,r)=>{for(let u in r)if(r[u]==o){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"),x(n),n.advancedSelect.dispatchEvent("openList")},closeList:()=>{n.advancedSelect.isOpened=!1,n.classList.remove("a-show"),x(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=c(e.value,t);return{inputValue:e.value,isOption:!!o,option:o}},addEventListener:(o,r)=>{if(typeof n.advancedSelect.eventsHandlers[o]!="undefined")return n.advancedSelect.eventsHandlers[o].push(r);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 r of n.advancedSelect.eventsHandlers[o])r(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 r,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=A(n)),f==null||f.classList.add("focus")}else(r=Fe(n))==null||r.classList.add("focus");_(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=A(n)),f==null||f.classList.add("focus")}else(u=A(n))==null||u.classList.add("focus");_(n)}else if(o.key==="Enter"){o.preventDefault();let d=n.querySelector(".option.focus");K(e,n,d)}else o.key==="Escape"&&(n.advancedSelect.closeList(),e.blur())}),e.addEventListener("input",o=>{var u;let r=o.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")),x(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",r=>{r.preventDefault(),K(e,n,r.currentTarget)})}),n}function Ie(e,t){let a="Write something",n=t?`<textarea class="input" placeholder="${a}"></textarea>`:`<input type="text" class="input" placeholder="${a}">`;return`
		<div class="editable-string-content">
			<span class="editable-string">${e}</span>
			<button class="btn-icon without-hover edit-text-btn"><i class="ph ph-pencil-simple"></i></button>
		</div>
		<div class="editable-string-form d-none">
			<div class="form-group">
				<label class="label">
					${n}
				</label>
			</div>
			<button class="btn-icon without-hover apply-changes-btn"><i class="ph ph-check"></i></button>
			<button class="btn-icon without-hover cancel-changes-btn"><i class="ph ph-x"></i></button>
		</div>
	`}function k(e,t){t=t!=null?t:!1;let a=e.innerHTML,n=m.template.createElement("div",{class:"component editable-string-component"},Ie(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"),c=n.querySelector(".editable-string-content"),o=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"),o.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,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 q(e,t,a){b.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 E(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 je(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 c=document.createElement("header");c.className="drawer-header";let o=document.createElement("h4");o.className="drawer-title",o.id=`${e}-title`,o.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",E(d,a,(f=n.footerMode)!=null?f:"html"),c.append(o,r),l.append(c,u,d),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(".drawer-close").addEventListener("click",()=>{e.close()}),e.querySelector(".drawer-backdrop").addEventListener("click",()=>{e.close()}),typeof t=="function"&&t(e),e}function Re(e,t){var c;t=t!=null?t:{};let a=t.title||"",n=t.footer||"",i=je(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 r=document.createElement("div");r.classList.add("actions");for(let u of o)r.append(u);l.append(r)}else o instanceof Node&&l.append(o)}if(typeof t.body=="function"){let o=t.body(i);E(s,o,(c=t.bodyMode)!=null?c:"html")}else typeof t.bodyText!="undefined"?E(s,t.bodyText,"text"):typeof t.bodyHtml!="undefined"&&E(s,t.bodyHtml,"html");return Be(i,t==null?void 0:t.onready)}var J={create:Re};var G=new WeakSet;function Ue(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 S(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 We(e=document){G.has(e)||(e.addEventListener("click",t=>{let a=t.target.closest("[data-navigation-toggle]");if(!a)return;let n=Ue(a,e);n!=null&&n.classList.contains("is-open")?S(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]");S(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]");S(a,n)})}),G.add(e))}var T={init:We,open:Z,close:S};var Q=new WeakSet,X=!1;function Pe(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&&Pe(t)})}function ze(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 Ve(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 Ye(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 _e(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 Ke(e=document){Q.has(e)||(ze(e),Ve(e),Ye(e),_e(e),Q.add(e))}var N={init:Ke,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 H(e){return ae.get(e)||[]}function M(e,t){ae.set(e,t);let a=new DataTransfer;t.forEach(n=>a.items.add(n)),e.files=a.files}function Je(e,t){let a=H(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))}),M(e,i),i}function Ge(e,t){let a=H(e).filter((n,i)=>i!==t);return M(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 Ze(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 L(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=H(e);if(!n.length){ie(a);return}Qe(a,n)}function Qe(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"),c=document.createElement("span");c.className="file-upload-preview-name",c.textContent=a.name;let o=document.createElement("span");o.className="file-upload-preview-meta",o.textContent=`${ne(a)} / ${Ze(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='<i class="ph ph-x"></i>',l.append(c,o),i.append(r,s,l),e.append(i)}),e.hidden=!1)}function Xe(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&&(Ge(i,Number(a.dataset.fileUploadRemove)),L(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&&(Je(a,Array.from(a.files||[])),L(a))}),e.addEventListener("reset",t=>{let a=t.target.closest("form");a&&setTimeout(()=>{a.querySelectorAll("[data-file-upload-input]").forEach(n=>{M(n,[]),L(n)})},0)}),ee.add(e))}var C={init:Xe,updateFileUpload:L};var se=new WeakSet;function D(e){return e.querySelector(".accordion-panel")}function et(e){let t=D(e);t&&(t.style.height="auto",t.style.opacity="1",t.style.transform="translateY(0)")}function oe(e){let t=D(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=D(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 re(e){e.open?le(e):oe(e)}function tt(e=document){se.has(e)||(e.querySelectorAll(".accordion-item[open], .disclosure[open]").forEach(et),e.addEventListener("click",t=>{let a=t.target.closest(".accordion-summary");if(!a)return;let n=a.closest(".accordion-item, .disclosure");n&&(t.preventDefault(),re(n))}),se.add(e))}var O={init:tt,expand:oe,collapse:le,toggle:re};var ce=new WeakSet;function I(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 F(e,t){e.classList.toggle("tab-panel-active",t),e.toggleAttribute("hidden",!t)}function j(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;I(a).forEach(s=>fe(s,s===e)),de(a).forEach(s=>F(s,!1));let n=ue(a,e);n&&F(n,!0),t.focus!==!1&&e.focus()}function w(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 nt(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?I(a):[],i=n.indexOf(t);if(i<0)return;let s=null;e.key==="ArrowRight"||e.key==="ArrowDown"?s=w(n,i,1):e.key==="ArrowLeft"||e.key==="ArrowUp"?s=w(n,i,-1):e.key==="Home"?s=w(n,-1,1):e.key==="End"&&(s=w(n,0,-1)),s&&(e.preventDefault(),j(s))}function at(e){let t=I(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"),F(n,a?n===ue(e,a):n.classList.contains("tab-panel-active"))})}function it(e=document){ce.has(e)||(e.querySelectorAll(".tabs").forEach(at),e.addEventListener("click",t=>{let a=t.target.closest('[role="tab"], .tab');!a||!e.contains(a)||(t.preventDefault(),j(a,{focus:!1}))}),e.addEventListener("keydown",nt),ce.add(e))}var B={init:it,activate:j};function R(){let e=[...document.querySelectorAll(".nav-drawer .list-item")],t=document.querySelector("[data-docs-current-section]");if(!e.length)return;let a=i=>{e.forEach(s=>{var o;let l=s.querySelector(".list-action"),c=(l==null?void 0:l.getAttribute("href"))===`#${i}`;s.classList.toggle("list-item-active",c),c&&t&&(t.textContent=((o=l.querySelector(".list-label"))==null?void 0:o.textContent.trim())||i)})},n=()=>{var s;let i=(s=window.location.hash)==null?void 0:s.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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function st(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 c=s[0];if(n+=h(t.slice(i,s.index)),c.startsWith("//")||c.startsWith("/*"))n+=`<span class="hljs-comment">${h(c)}</span>`;else if(c.startsWith('"')||c.startsWith("'")||c.startsWith("`"))n+=`<span class="hljs-string">${h(c)}</span>`;else if(/^\d/.test(c))n+=`<span class="hljs-number">${h(c)}</span>`;else if(/^[A-Za-z_$][\w$]*$/.test(c)&&((l=t[s.index+c.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(c);n+=o?`<span class="hljs-keyword">${c}</span>`:`<span class="hljs-title function_">${c}</span>`}else n+=h(c);i=s.index+c.length}n+=h(t.slice(i)),e.innerHTML=n,e.classList.add("hljs")}function ot(){document.querySelectorAll("code.language-js, code.language-javascript").forEach(st),window.hljs&&document.querySelectorAll("code:not(.language-js):not(.language-javascript)").forEach(e=>window.hljs.highlightElement(e))}function U(){ot(),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(c){me(n)}e.innerHTML='<i class="ph ph-check"></i>',setTimeout(()=>{e.innerHTML=i},1200)}})})}var W={Helper:m,Toasts:Y,Modals:b,advancedSelect:$,editableString:k,confirmPopup:q,Drawer:J,NavigationShell:T,Overlays:N,InputPatterns:C,Accordion:O,Tabs:B};typeof window!="undefined"&&(window.GNexusUIKit=W,Object.assign(window,W),document.addEventListener("DOMContentLoaded",()=>{N.init(),T.init(),C.init(),O.init(),B.init(),R(),U()}));var jt=W;export{O as Accordion,J as Drawer,m as Helper,C as InputPatterns,b as Modals,T as NavigationShell,N as Overlays,B as Tabs,Y as Toasts,$ as advancedSelect,q as confirmPopup,jt as default,k as editableString};
//# sourceMappingURL=gnexus-ui-kit.esm.js.map