Hello iam using latest version of Chronoforms and there is an errot message on browser console:Uncaught SyntaxError: redeclaration of let Nui the error code is pointing this line of script below how can i fix it Thanks in advance My site is https://odel.joomlatema.net/:
<script>let Nui={Extensions:class{static list={}},Core:class{static duration_to_number(d){return d.includes("ms")?parseFloat(d):1e3*parseFloat(d)}static create_element(html,multiple){let template=document.createElement("template");return html=html.trim(),template.innerHTML=html,!0===multiple?template.content.children:template.content.firstElementChild}static get_position(node){return node.getBoundingClientRect()}static create_icon(cls,html){return this.create_element(`<svg class="fasvg icon ${cls}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">${html}</svg>`)}static postLink(node){let form=node.closest("form");return form.setAttribute("action",node.getAttribute("href")),form.submit(),!1}static keepalive(url){const xhttp=new XMLHttpRequest;setInterval((function(){xhttp.open("GET",url),xhttp.send()}),3e5)}static tracker(url){const xhttp=new XMLHttpRequest;let done=0,log="";["touchstart"].forEach(evt=>{document.addEventListener(evt,e=>{0==done&&e.isTrusted&&(log=log+"&evt="+evt+"&time="+e.timeStamp)})}),["mousemove","click","keydown","touchend"].forEach(evt=>{document.addEventListener(evt,e=>{0==done&&e.isTrusted&&(log=log+"&evt="+evt+"&time="+e.timeStamp,xhttp.open("GET",url+"&e=action"+log),xhttp.send(),done=1)})})}static hide(target){target.classList.add("hidden")}static toggleClass(source,target,eclass){target.classList.toggle(eclass)}static DisplayFlash(output){let pcs,flashes=output.split("\x3c!--flash--\x3e")[1];flashes=flashes.replace("\x3c!--",""),flashes=flashes.replace("--\x3e","");let flashObj=JSON.parse(flashes);for(const[ftype,msgs]of Object.entries(flashObj))if(msgs.length>0){let color="red";switch(ftype){case"success":color="green";break;case"info":color="blue";break;case"warning":color="orange"}msgs.forEach(msg=>{Nui.Toast.show({message:msg,color:color,position:"bottom right"})})}}static scrollToTargetwithOffset(element,offset){var elementPosition,offsetPosition=element.getBoundingClientRect().top+window.scrollY-offset;window.scrollTo({top:offsetPosition,behavior:"smooth"})}},Component:class{constructor(node){this._element=node}static create(node){let element=new this(node);return this.prototype.nodes.push(node),this.prototype.instances.push(element),element}static getInstance(node,parent){if(null==parent&&(parent=document),null==this.prototype.nodes&&(this.prototype.instances=[],this.prototype.nodes=[]),!("string"==typeof node||node instanceof String))return this.prototype.nodes.includes(node)?this.prototype.instances[this.prototype.nodes.indexOf(node)]:this.create(node);{let nodes=parent.querySelectorAll(node);for(var i=0;i<nodes.length;i++)this.getInstance(nodes[i])}}}};Nui.Dynamic=class extends Nui.Component{constructor(node){super(node),this.init()}init(){"FORM"==this._element.tagName?this._element.addEventListener("submit",e=>{e.preventDefault(),this.ajax(this._element.getAttribute("data-output"),this._element.getAttribute("data-outputAction"),!0)}):this._element.hasAttribute("data-dynamic")?(this.events=JSON.parse(this._element.getAttribute("data-dynamic")),this.events.forEach(eventData=>{this._element.addEventListener(eventData.trigger,e=>{e.preventDefault(),eventData.actions.forEach(action=>{switch(action.type){case"ajax":this.ajax(action.target,action.targetAction);break;case"show":{let target;document.querySelector(action.target).classList.remove("hidden")}break;case"hide":{let target;document.querySelector(action.target).classList.add("hidden")}}})})})):this._element.addEventListener("click",e=>{e.preventDefault(),this.ajax(this._element.getAttribute("data-output"),this._element.getAttribute("data-outputAction"),!0)})}ajax(targetSelector,action,unhideTarget){let _url="",loadingElement=this._element,postBody=new FormData(void 0),form=null;if(this._element.hasAttribute("href")?_url=this._element.getAttribute("href"):this._element.hasAttribute("data-url")?(_url=this._element.getAttribute("data-url"),loadingElement=this._element,form=this._element.closest("form")):"BUTTON"==this._element.tagName?form=this._element.closest("form"):"FORM"==this._element.tagName&&(form=this._element),form){_url=form.getAttribute("action"),loadingElement=form;let nuiform=Nui.Form.getInstance(form);if(nuiform.validate(),nuiform.vfailed)return nuiform.displayErrors(),!1;if(!form.checkValidity())return form.reportValidity(),!1;form.querySelectorAll("textarea[data-editor]").forEach(editor=>{editor.dispatchEvent(new CustomEvent("saveEditor"))}),form.dispatchEvent(new Event("dynamic_init")),postBody=new FormData(form),this._element.getAttribute("name")&&postBody.append(this._element.getAttribute("name"),this._element.getAttribute("value"))}loadingElement.classList.add("loading"),_url+=_url.includes("?")?"&output=component":"?output=component";let url=_url;form&&form.dispatchEvent(new Event("dynamic_start"));const xhttp=new XMLHttpRequest;return xhttp.addEventListener("readystatechange",e=>{if(4==e.target.readyState&&200==e.target.status){if(loadingElement.classList.remove("loading"),null!=targetSelector){let items=Nui.Core.create_element(e.target.responseText,!0),new_items=items;if(items.length>0){let target=document.querySelector(targetSelector);switch(unhideTarget&&target.classList.remove("hidden"),null==action&&(action="replace"),action){case"append":new_items=[],[...items].forEach(item=>{target.append(item),new_items.push(item)});break;default:1==items.length&&items[0].matches(targetSelector)?(new_items=[],[...items].forEach(item=>{target.before(item),new_items.push(item)}),target.remove()):(target.replaceChildren(),target.append(...items),new_items=target.children)}Nui_boot(...new_items)}}e.target.responseText.includes("\x3c!--flash--\x3e")&&Nui.Core.DisplayFlash(e.target.responseText),form&&form.dispatchEvent(new Event("dynamic_complete"))}}),xhttp.upload.addEventListener("progress",e=>{if(e.lengthComputable&&null!=form){var percentComplete=e.loaded/e.total;percentComplete=parseInt(100*percentComplete);let progressBar=form.querySelector(".nui.progress");null!=progressBar&&(progressBar.style.width=percentComplete+"%",progressBar.innerHTML=percentComplete)}}),xhttp.open("POST",url),xhttp.send(postBody),!1}},Nui.BBEditor=class extends Nui.Component{constructor(node){super(node),this.init()}init(){let textarea=this._element.querySelector("textarea");this._element.querySelectorAll("button").forEach(button=>{button.addEventListener("click",e=>{e.preventDefault();let bstart=button.getAttribute("data-start"),bend=button.getAttribute("data-end"),selected=textarea.value.slice(textarea.selectionStart,textarea.selectionEnd);if(textarea.focus(),textarea.selectionStart==textarea.selectionEnd){let fstart=textarea.selectionStart;textarea.setRangeText(bstart+selected+bend),textarea.selectionStart=fstart+bstart.length}else textarea.setRangeText(bstart+selected+bend)})})}},Nui.Draggables=class{constructor(draggableSelector,droppableSelector,params){this.settings={onDrop:()=>{},onDrag:()=>{},onClone:()=>{},onEnterDroppable:()=>{},onExitDroppable:()=>{},onTestDroppable:()=>{},dragged:"clone",droppedClass:"dropped",draggerSelector:"",sortableSelector:"*"},null!=params&&Object.assign(this.settings,params),this.draggableSelector=draggableSelector,this.droppableSelector=droppableSelector,this.originalDraggable=null,this.draggable=null,this.mouseStartX=0,this.mouseStartY=0,this.draggableStartOffsetX=0,this.draggableStartOffsetY=0,this.placeHolder=Nui.Core.create_element('<div style="height:5px;width:100%;background-color:aqua;"> </div>'),this.closestDraggable=null,this.activeDroppable=null,this.init()}init(){document.addEventListener("mousedown",e=>{if(0===e.button&&null!=e.target.closest(this.draggableSelector)){if(""!=this.settings.draggerSelector&&!e.target.matches(this.settings.draggerSelector))return!1;e.preventDefault(),this.originalDraggable=e.target.closest(this.draggableSelector),"clone"==this.settings.dragged&&(this.draggable=this.originalDraggable.cloneNode(!0),null!=this.settings.onClone(this.draggable)&&(this.draggable=this.settings.onClone(this.draggable)),document.querySelector("body").append(this.draggable),this.originalDraggable.parentElement.matches(this.droppableSelector)&&(this.originalDraggable.classList.add("disabled"),this.originalDraggable.before(this.placeHolder))),this.draggable.classList.add("dragging"),this.settings.onDrag(this.draggable),this.mouseStartX=e.clientX,this.mouseStartY=e.clientY,this.draggableStartOffsetX=this.draggable.offsetLeft,this.draggableStartOffsetY=this.draggable.offsetTop,this.draggable.style.position="absolute",this.draggable.style.zIndex="1000",this.draggable.style.top=e.clientY+window.scrollY+"px",this.draggable.style.left=e.clientX+window.scrollX+"px",this.draggable.parentElement.matches(this.droppableSelector)&&(null!=this.draggable.nextElementSibling?this.draggable.nextElementSibling.before(this.placeHolder):null!=this.draggable.previousElementSibling?this.draggable.previousElementSibling.after(this.placeHolder):this.draggable.parentElement.append(this.placeHolder))}}),document.addEventListener("mouseover",e=>{this.draggable&&e.target.closest(this.droppableSelector)}),document.addEventListener("mousemove",e=>{if(null!=this.draggable){e.preventDefault(),this.draggable.style.top=e.clientY+15+window.scrollY+"px",this.draggable.style.left=e.clientX+15+window.scrollX+"px",document.querySelectorAll(this.droppableSelector).forEach(droppable=>{let bounds=droppable.getBoundingClientRect();if(e.clientY>=Math.floor(bounds.top)-2&&e.clientY<=Math.ceil(bounds.bottom)+2&&e.clientX>=bounds.left&&e.clientX<=bounds.right&&!this.originalDraggable.contains(droppable)){if(droppable.classList.add("draggable_over"),!1!==this.settings.onTestDroppable(this.draggable,droppable))if(this.draggable.hasAttribute("data-weight")&&droppable.hasAttribute("data-weight")){let draggable_weight,droppable_weight;parseInt(this.draggable.getAttribute("data-weight"))<=parseInt(droppable.getAttribute("data-weight"))&&droppable.classList.add("droppable_active")}else droppable.classList.add("droppable_active")}else droppable.classList.remove("draggable_over","droppable_active","droppable_selected_active")});let overs=document.querySelectorAll(this.droppableSelector+".draggable_over.droppable_active");if(overs.length>0?(this.setDroppable(overs[overs.length-1]),overs.forEach((over,k)=>{k==overs.length-1?over.classList.add("droppable_selected_active"):over.classList.remove("droppable_selected_active")})):this.unsetDroppable(),null!=this.activeDroppable){let mode="vertical";[...this.activeDroppable.children].filter(elem=>elem.matches(this.settings.sortableSelector)).forEach(otherDraggable=>{if(otherDraggable==this.draggable)return;let otherDraggableRect=otherDraggable.getBoundingClientRect();"row"==this.activeDroppable.style.flexDirection?(mode="horizontal",this.placeHolder.style.height="auto",this.placeHolder.style.width="5px"):(this.placeHolder.style.height="5px",this.placeHolder.style.width="auto"),null==this.closestDraggable?this.closestDraggable=otherDraggable:"vertical"==mode&&Math.abs(e.clientY-this.closestDraggable.getBoundingClientRect().top)>Math.abs(e.clientY-otherDraggableRect.top)?this.closestDraggable=otherDraggable:"horizontal"==mode&&Math.abs(e.clientX-this.closestDraggable.getBoundingClientRect().left)>Math.abs(e.clientX-otherDraggableRect.left)&&(this.closestDraggable=otherDraggable)}),null==this.closestDraggable?this.placeHolder.parentElement!==this.activeDroppable&&this.activeDroppable.append(this.placeHolder):"vertical"==mode?e.clientY<this.closestDraggable.getBoundingClientRect().top+.4*this.closestDraggable.getBoundingClientRect().height?this.closestDraggable.before(this.placeHolder):this.closestDraggable.after(this.placeHolder):e.clientX<this.closestDraggable.getBoundingClientRect().left+.4*this.closestDraggable.getBoundingClientRect().width?this.closestDraggable.before(this.placeHolder):this.closestDraggable.after(this.placeHolder)}else this.placeHolder.remove()}}),document.addEventListener("mouseup",e=>{null!=this.draggable&&(e.preventDefault(),this.draggable.classList.remove("dragging"),null!=this.placeHolder.parentElement&&this.placeHolder.parentElement.matches(this.droppableSelector)?(this.originalDraggable.parentElement.matches(this.droppableSelector)?(this.draggable.remove(),this.originalDraggable.classList.remove("disabled"),this.placeHolder.replaceWith(this.originalDraggable),this.settings.onDrop(this.originalDraggable),this.draggable.classList.add(this.settings.droppedClass)):(this.placeHolder.replaceWith(this.draggable),this.settings.onDrop(this.draggable),this.draggable.classList.add(this.settings.droppedClass)),this.unsetDroppable()):this.originalDraggable.parentElement.matches(this.droppableSelector)?(this.draggable.remove(),this.originalDraggable.classList.remove("disabled"),this.placeHolder.replaceWith(this.originalDraggable),this.settings.onDrop(this.originalDraggable),this.draggable.classList.add(this.settings.droppedClass)):this.draggable.remove(),this.draggable.style.position="",this.draggable.style.zIndex="",this.draggable.style.top="",this.draggable.style.left="",this.draggable=null,this.mouseStartX=0,this.mouseStartY=0,this.draggableStartOffsetX=0,this.draggableStartOffsetY=0)})}setDroppable(droppable){null!=this.draggable&&this.activeDroppable!=droppable&&(this.closestDraggable=null,this.activeDroppable=droppable,this.settings.onEnterDroppable(this.draggable,this.activeDroppable))}unsetDroppable(){this.activeDroppable&&this.settings.onExitDroppable(this.draggable,this.activeDroppable),this.closestDraggable=null,this.activeDroppable=null}},Nui.Checkbox=class extends Nui.Component{constructor(node){super(node),this.init()}init(){this.checkbox=this._element.querySelectorAll("input[type=checkbox], input[type=radio]")[0],this.checkbox.classList.add("hidden"),this.checkbox.checked&&(this._element.classList.add("checked"),null!=this._element.querySelector("input[type=hidden]")&&(this._element.querySelector("input[type=hidden]").disabled=!0)),this._element.querySelector("label").addEventListener("click",e=>{this.toggle()}),this._element.querySelector("label").addEventListener("keydown",e=>{"Space"==e.code&&(e.stopPropagation(),e.preventDefault(),this._element.querySelector("label").dispatchEvent(new Event("click")))})}check(){this.checkbox.checked||(this.checkbox.checked=!0,this._element.classList.add("checked"),this.setGhost(!0),this.checkbox.dispatchEvent(new Event("change")))}toggle(){this.checkbox.click();let isChecked=this.checkbox.checked,isRadio="radio"==this.checkbox.getAttribute("type");isChecked?(isRadio&&document.querySelectorAll("input[name='"+this.checkbox.getAttribute("name")+"'][type=radio]").forEach(radio=>{radio.matches(".hidden")&&radio.closest(".checkbox").classList.remove("checked")}),this._element.classList.add("checked"),this.setGhost(!0)):(this._element.classList.remove("checked"),this.setGhost(!1))}setGhost(value){null!=this._element.querySelector("input[type=hidden]")&&(this._element.querySelector("input[type=hidden]").disabled=value)}},Nui.Toast=class extends Nui.Component{constructor(node){super(node),this.init()}init(){}static show(params){this.settings={color:"red",message:"Message",position:"top center",time:2e3},Object.assign(this.settings,params);let toast=Nui.Core.create_element(`<div class="nui segment large bold block rounded thick bordered dotted ${this.settings.color} transition visible"><p>${this.settings.message}</p></div>`),holder=document.querySelector(".nui.floating."+this.settings.position.replace(" ","."));null==holder&&(holder=Nui.Core.create_element(`<div class="nui floating ${this.settings.position}"></div>`),document.querySelector("body").append(holder)),holder.prepend(toast),setTimeout((function(){toast.remove(),null==holder.querySelector(".nui.segment")&&holder.remove()}),this.settings.time)}},Nui.Modal=class extends Nui.Component{constructor(node,params){super(node),this.settings={content:"",position:"auto",color:"white",closable:!0,hide_lag:300,show_on:"click"},Object.assign(this.settings,params),this.init()}init(){let params=this._element.getAttribute("data-modal");var observer;(params.length>0&&(params=JSON.parse(params),Object.assign(this.settings,params)),this.isShown=!1,this.hideOk=!0,"visible"==this.settings.show_on)?new IntersectionObserver(entries=>{!0===entries[0].isIntersecting&&(this.isShown||this.show()),this.hideOk=!1},{threshold:[0]}).observe(this._element):this._element.addEventListener(this.settings.show_on,e=>{e.preventDefault(),this.isShown||this.show(),this.hideOk=!1});this.settings.url=this._element.getAttribute("href"),this.settings.url.includes("output=component")||(this.settings.url.includes("?")?this.settings.url=this.settings.url+"&output=component":this.settings.url=this.settings.url+"?output=component")}show(){if(null!=this.dimmer)this.dimmer.style.display="",document.querySelector("body").style.overflow="hidden";else if(this.modal=Nui.Core.create_element(`<div class="nui segment modal rounded bordered ${this.settings.color} loading"></div>`),this.dimmer=Nui.Core.create_element('<div class="nui dimmer active black active"></div>'),document.querySelector("body").append(this.dimmer),document.querySelector("body").style.overflow="hidden",this.dimmer.addEventListener("mousedown",e=>{e.target==this.dimmer&&this.hide()}),this.dimmer.append(this.modal),0==this.settings.content.length){const xhttp=new XMLHttpRequest;xhttp.addEventListener("readystatechange",e=>{4==e.target.readyState&&200==e.target.status&&(this.set_content(e.target.responseText),Nui_boot(this.modal))}),xhttp.open("GET",this.settings.url),xhttp.send()}else(this.settings.content.startsWith("#")||this.settings.content.startsWith("."))&&document.querySelector(this.settings.content)?(this.target=document.querySelector(this.settings.content),this.placeHolder=Nui.Core.create_element('<span style="display:none"></span>'),this.target.after(this.placeHolder),this.set_content(this.target)):this.set_content(this.settings.content)}hide(){this.settings.content.length>0?(this.dimmer.style.display="none",this.placeHolder&&this.placeHolder.replaceWith(this.target)):this.dimmer.remove(),document.querySelector("body").style.overflow="auto",this.dimmer=null}set_content(content){if(content instanceof HTMLElement?this.modal.append(content):this.modal.innerHTML=content,this.modal.classList.remove("loading"),this.settings.closable){let close_icon=Nui.Core.create_element('<i class="icon close nui white rounded circular link"></i>');this.modal.append(close_icon),close_icon.addEventListener("mousedown",e=>{this.dimmer.dispatchEvent(new Event("mousedown"))})}}},Nui.Sidebar=class extends Nui.Component{constructor(node){super(node),this.init()}init(){this._element.hasAttribute("data-bs-trigger")&&document.querySelector(this._element.getAttribute("data-bs-trigger")).addEventListener("click",function(e){e.preventDefault(),this.show()}.bind(this))}show(params){let settings={color:"black"};Object.assign(settings,params);let dimmer=Nui.Core.create_element(`<div class="nui dimmer active ${settings.color} active"></div>`);this._element.after(dimmer),dimmer.addEventListener("click",function(e){this.hide()}.bind(this)),this._element.classList.add("active")}hide(){this._element.classList.remove("active"),this._element.nextElementSibling.remove()}},Nui.Tabs=class extends Nui.Component{constructor(node){super(node),this.container=this._element.parentElement,this._element.hasAttribute("data-parent")&&(this.container=this._element.closest(this._element.dataset.parent)),this.init()}init(){[...this._element.children].filter(e=>e.matches("[data-tab]")).forEach(tab=>{tab.matches(".item[data-tab]")&&(this.container.querySelectorAll("[data-tab="+tab.dataset.tab+"].item").forEach(_tab=>{tab.matches(".active")?_tab.classList.add("active"):_tab.classList.remove("active")}),this.container.querySelectorAll("[data-tab="+tab.dataset.tab+"]:not(.item)").forEach(tabarea=>{tab.matches(".active")?tabarea.classList.remove("hidden"):tabarea.classList.add("hidden"),tab.addEventListener("click",function(e){this.toggle(tab)}.bind(this)),tab.addEventListener("mouseover",function(e){1==e.buttons&&1==e.which&&this.toggle(tab)}.bind(this))}))})}toggle(tab){[...this._element.children].filter(e=>e.matches("[data-tab]")).forEach(_tab=>{_tab.classList.remove("active"),this.container.querySelectorAll("[data-tab="+_tab.dataset.tab+"].item").forEach(_sametab=>{_sametab.classList.remove("active")}),this.container.querySelectorAll('[data-tab="'+_tab.dataset.tab+'"]:not(.item)').forEach(_tabarea=>{_tabarea.matches('[data-tab="'+tab.dataset.tab+'"]')?_tabarea.classList.remove("hidden"):_tabarea.classList.add("hidden")})}),tab.classList.add("active"),this.container.querySelectorAll("[data-tab="+tab.dataset.tab+"].item").forEach(_sametab=>{_sametab.classList.add("active")}),tab.dispatchEvent(new Event("activated"))}},Nui.Form=class extends Nui.Component{constructor(node){super(node),this.errors={},this.vfailed=!1,this.validations={},this.init()}init(){let counter=0;this._element.querySelectorAll("[data-validations]").forEach(input=>{let inputKey=counter,validations=input.getAttribute("data-validations");if(validations.startsWith("{"))validations=JSON.parse(input.getAttribute("data-validations"));else{let jvalidations={rules:[]},rules;validations.split(";").forEach(rule=>{let rule_parts=rule.split(":");switch(rule_parts[0]){case"regex":jvalidations.rules.push({type:rule_parts[0],prompt:rule_parts[1],regex:rule_parts[2]});break;default:jvalidations.rules.push({type:rule_parts[0],prompt:rule_parts[1]})}}),validations=jvalidations}this.validations[counter]=validations,["input","change"].forEach(event=>{input.addEventListener(event,e=>{this.validateInput(inputKey,!0)})}),counter++;let holder=input.closest(".field");null!=this.validations[inputKey].multiple&&(holder=input.closest(".field.holder"));let label=holder.querySelector("label");null!=label&&null==label.querySelector(".errormark")&&this.validations[inputKey].rules.forEach((rule,ruleKey)=>{"required"==rule.type&&(label.innerHTML+="<span class='nui red transparent errormark'> *</span>")})}),this._element.querySelectorAll("button[data-clear]").forEach(clearBtn=>{clearBtn.addEventListener("click",e=>{this._element.querySelectorAll(clearBtn.getAttribute("data-clear")).forEach(formInput=>{formInput.matches("[type=button], [type=submit], [type=reset], [type=radio], [type=checkbox], [type=hidden], [data-cftoken]")||(formInput.setAttribute("value",""),formInput.value="",formInput.dispatchEvent(new Event("change"))),formInput.matches("[type=radio], [type=checkbox]")&&(formInput.removeAttribute("checked"),formInput.checked=!1,formInput.dispatchEvent(new Event("change"))),formInput.matches("select")&&(formInput.querySelectorAll("option").forEach(opt=>{opt.removeAttribute("selected"),opt.selected=!1}),formInput.dispatchEvent(new Event("change")))}),this._element.submit()})}),this._element.addEventListener("submit",e=>{if(this._element.classList.add("loading"),this.validations!={}&&(this.validate(),this.vfailed))return this.displayErrors(),e.preventDefault(),this._element.classList.remove("loading"),!1;if(this._element.querySelector(".g-recaptcha.v3")){e.preventDefault();let form=this._element;grecaptcha.ready((function(){grecaptcha.execute(form.querySelector(".g-recaptcha.v3").getAttribute("data-sitekey3"),{action:"submit"}).then((function(token){form.querySelector(".g-recaptcha.v3").remove(),form.querySelector('[name="g-recaptcha-response"]').value=token,form.submit()}))}))}})}displayErrors(){Object.keys(this.errors).forEach(inputKey=>{this.displayFieldErrors(inputKey)}),Nui.Core.scrollToTargetwithOffset(this._element.querySelector(".field"),200)}displayFieldErrors(inputKey){let input=this._element.querySelectorAll("[data-validations]")[inputKey];if(Object.keys(this.errors[inputKey]).length>0&&null!=input.closest(".field")){let holder=input.closest(".field");if(null!=this.validations[inputKey].multiple&&(holder=input.closest(".field.holder"),holder.matches(".error")))return;holder.classList.add("error"),Object.keys(this.errors[inputKey]).forEach(errorKey=>{holder.append(Nui.Core.create_element('<span class="errormsg">'+this.errors[inputKey][errorKey]+"</span>"))}),this._element.dispatchEvent(new Event("resize"))}}cleanErrors(){this.errors={},this.vfailed=!1,this._element.querySelectorAll("[data-validations]").forEach((input,inputKey)=>{this.cleanFieldErrors(inputKey)})}cleanFieldErrors(inputKey){this.errors[inputKey]={};let input=this._element.querySelectorAll("[data-validations]")[inputKey],field=input.closest(".field");null!=this.validations[inputKey].multiple&&(field=input.closest(".field.holder")),field.classList.remove("error"),field.querySelectorAll(".errormsg").forEach(errormsg=>{errormsg.remove()})}validate(){this.cleanErrors(),Object.keys(this.validations).forEach(inputKey=>{this.validateInput(inputKey)})}validateInput(inputKey,single){!0===single&&this.cleanFieldErrors(inputKey);let input=this._element.querySelectorAll("[data-validations]")[inputKey];if(!input)return;if(input.hasAttribute("disable-validations")||input.parentElement.closest(".hidden")||input.closest(".disabled"))return;let inputValidations=this.validations[inputKey];null!=inputValidations.rules&&inputValidations.rules.forEach((rule,ruleKey)=>{switch(rule.type){case"required":if(null!=this.validations[inputKey].multiple){let oneChecked=!1;document.querySelectorAll("input[name='"+input.getAttribute("name")+"']").forEach(radio=>{radio.checked&&(oneChecked=!0)}),oneChecked||this.addError(inputKey,ruleKey,rule)}else if("checkbox"==input.getAttribute("type"))input.checked||this.addError(inputKey,ruleKey,rule);else if(""==input.value){if("file"==input.getAttribute("type")&&input.previousElementSibling&&input.previousElementSibling.querySelector("input[type='hidden'][name='"+input.getAttribute("name")+"']")&&input.previousElementSibling.querySelector("input[type='hidden'][name='"+input.getAttribute("name")+"']").value.length>0)break;this.addError(inputKey,ruleKey,rule)}break;case"count":if(null!=this.validations[inputKey].multiple){let checked=0;document.querySelectorAll("input[name='"+input.getAttribute("name")+"']").forEach(radio=>{radio.checked&&checked++}),null!=rule.mincount&&rule.mincount.length>0&&checked<rule.mincount?this.addError(inputKey,ruleKey,rule):null!=rule.maxcount&&rule.maxcount.length>0&&checked>rule.maxcount&&this.addError(inputKey,ruleKey,rule)}break;case"email":""==input.value||input.value.match(/^([a-zA-Z0-9_\.\-\+%])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{1,11})+$/)||this.addError(inputKey,ruleKey,rule);break;case"matches":""!=rule.id&&input.value!=document.getElementById(rule.id).value&&this.addError(inputKey,ruleKey,rule);break;case"function":if(""!=rule.function&&null!=window[rule.function]&&"function"==typeof window[rule.function]){let returned=window[rule.function](input.value);!0!==returned&&this.addError(inputKey,ruleKey,{prompt:returned})}break;case"regex":""==input.value||input.value.match(new RegExp(rule.regex.slice(1,-1)))||this.addError(inputKey,ruleKey,rule)}}),!0===single&&this.displayFieldErrors(inputKey)}addError(inputKey,ruleKey,rule){null==this.errors[inputKey]&&(this.errors[inputKey]={}),this.errors[inputKey][ruleKey]=rule.prompt,this.vfailed=!0}},Nui.Dropdown=class extends Nui.Component{constructor(node){super(node),this.select=node,this.isOpen=!1,this.settings={onAddOption:null},this.init()}init(){if(this._element.closest(".clonable[data-key='n']"))return;if(this.select.parentElement.matches(".nui.select")){let rm=this.select.closest(".nui.select");rm.after(this.select.cloneNode(!0)),this.select=rm.nextElementSibling,this.select.classList.add("nui","select"),rm.remove()}let dropdownHTML=`\n\t\t<div class="${this.select.getAttribute("class")} selection" tabindex="0">\n\t\t\t<input class="search" autocomplete="off" tabindex="0" title="search">\n\t\t\t<div class="default text"> </div>\n\t\t\t<i class="close icon"></i>\n\t\t\t<i class="dropdown icon"></i>\n\t\t\t<div class="menu transition hidden`+(this.select.hasAttribute("data-menuclass")?" "+this.select.getAttribute("data-menuclass"):"")+'"></div>\n\t \t</div>';this.select.after(Nui.Core.create_element(dropdownHTML)),this.dropdown=this.select.nextElementSibling,this.dropdown.prepend(this.select),this.select.setAttribute("class",this.select.hasAttribute("data-class")?this.select.getAttribute("data-class"):""),this.select.multiple&&this.dropdown.classList.add("multiple"),(this.select.matches("[data-searchable]")||this.select.matches("[data-additions]"))&&(this.dropdown.classList.add("search"),this.select.matches("[data-additions]")&&this.dropdown.classList.add("additions")),this.buildOptions(),this.dropdown.addEventListener("click",e=>{this.dropdown.focus(),this.isOpen?this.dropdown.querySelector("input.search")&&e.srcElement==this.dropdown.querySelector("input.search")||this.close():this.open()}),this.dropdown.addEventListener("keydown",e=>{if(" "==e.key&&this.dropdown.matches(":focus"))e.stopPropagation(),e.preventDefault(),this.open();else if("Enter"==e.key)this.isOpen&&this.dropdown.querySelector(".menu").querySelectorAll(".item.hovered").length>0&&(e.stopPropagation(),e.preventDefault(),this.dropdown.querySelector(".menu").querySelector(".item.hovered").dispatchEvent(new Event("click")),this.close(),this.dropdown.focus());else if("ArrowDown"==e.key){if(this.isOpen){e.stopPropagation(),e.preventDefault();let hoveredItem=this.dropdown.querySelector(".menu").querySelector(".item.hovered");if(!hoveredItem&&this.dropdown.querySelector(".menu").querySelector(".item.selected")&&(hoveredItem=this.dropdown.querySelector(".menu").querySelector(".item.selected")),hoveredItem){let current=hoveredItem;for(;current.nextElementSibling;){if(current.nextElementSibling.matches(".item:not(.filtered)")){current.nextElementSibling.classList.add("hovered"),hoveredItem.classList.remove("hovered");break}current=current.nextElementSibling}}else this.dropdown.querySelector(".menu").querySelector(".item:not(.filtered)").classList.add("hovered");this.dropdown.querySelector(".menu").querySelector(".item.hovered")&&this.dropdown.querySelector(".menu").querySelector(".item.hovered").offsetTop+this.dropdown.querySelector(".menu").querySelector(".item.hovered").offsetHeight>=this.dropdown.querySelector(".menu").offsetHeight&&(this.dropdown.querySelector(".menu").scrollTop=this.dropdown.querySelector(".menu").querySelector(".item.hovered").offsetTop)}}else if("ArrowUp"==e.key&&this.isOpen){e.stopPropagation(),e.preventDefault();let hoveredItem=this.dropdown.querySelector(".menu").querySelector(".item.hovered");if(!hoveredItem&&this.dropdown.querySelector(".menu").querySelector(".item.selected")&&(hoveredItem=this.dropdown.querySelector(".menu").querySelector(".item.selected")),hoveredItem){let current=hoveredItem;for(;current.previousElementSibling;){if(current.previousElementSibling.matches(".item:not(.filtered)")){current.previousElementSibling.classList.add("hovered"),hoveredItem.classList.remove("hovered");break}current=current.previousElementSibling}}else this.dropdown.querySelector(".menu").querySelector(".item:not(.filtered)").classList.add("hovered");this.dropdown.querySelector(".menu").querySelector(".item.hovered")&&this.dropdown.querySelector(".menu").querySelector(".item.hovered").offsetTop<this.dropdown.querySelector(".menu").scrollTop&&(this.dropdown.querySelector(".menu").scrollTop=this.dropdown.querySelector(".menu").querySelector(".item.hovered").offsetTop)}}),this.dropdown.addEventListener("blur",function(e){e.relatedTarget!=this.dropdown.querySelector("input.search")&&this.close()}.bind(this)),this.dropdown.matches(".search")&&(this.dropdown.querySelector("input.search").addEventListener("blur",function(e){this.select.matches("[data-additions]")&&e.relatedTarget!=this.dropdown&&this.addSearchOption(),e.relatedTarget!=this.dropdown?this.dropdown.dispatchEvent(new Event("blur")):this.select.multiple&&(this.dropdown.querySelector("input.search").value="",this.dropdown.querySelector("input.search").focus())}.bind(this)),this.dropdown.querySelector("input.search").addEventListener("input",function(e){""!=this.dropdown.querySelector("input.search").value?(this.dropdown.querySelector(".text").classList.add("filtered"),this.filterBy(this.dropdown.querySelector("input.search").value)):(this.dropdown.querySelector(".text").classList.remove("filtered"),this.clearFilter())}.bind(this)),this.select.matches("[data-additions]")&&this.dropdown.querySelector("input.search").addEventListener("keydown",e=>{e.stopPropagation();let separators=[];if(this.select.hasAttribute("data-separators")&&(separators=this.select.getAttribute("data-separators").split("")),(13==e.which||separators.includes(e.key))&&(e.preventDefault(),this.addSearchOption()),"Backspace"===e.key&&""==this.dropdown.querySelector("input.search").value){e.preventDefault();let customs=this.dropdown.querySelectorAll(".custom_option");customs.length>0&&this.removeSelection(customs[customs.length-1].getAttribute("data-value"))}})),this.select.addEventListener("click",function(e){e.stopPropagation(),this.dropdown.dispatchEvent(new Event("click"))}.bind(this)),this.select.matches("[data-clearable]")&&this.addClear(),this.select.dispatchEvent(new CustomEvent("DropdownReady"))}buildOptions(){this.dropdown.querySelector(".menu").querySelectorAll(".item").forEach(item=>{item.remove()}),this.dropdown.querySelectorAll(".custom_option").forEach(item=>{item.remove()}),[...this.select.querySelectorAll("option")].forEach(option=>{this.initOption(option)}),this.select.querySelector("option[selected]")?this.dropdown.matches(".multiple")?[...this.select.querySelectorAll("option[selected]")].forEach(selection=>{this.selectOption(selection,!1)}):this.selectOption(this.select.querySelector("option[selected]"),!1):(this.select.classList.add("noselection"),this.select.querySelector("option")&&!this.select.multiple&&this.selectOption(this.select.querySelectorAll("option")[0],!1))}updateOptions(options){let selected=[];this.select.querySelectorAll("option").forEach(option=>{option.selected&&selected.push(option.getAttribute("value")),option.remove()}),Object.keys(options).forEach(k=>{this.select.append(Nui.Core.create_element('<option value="'+k+'" '+(selected.includes(k)?"selected":"")+">"+options[k]+"</option>"))}),this.buildOptions(!0)}addSearchOption(){if(""!=this.dropdown.querySelector("input.search").value){let addition=this.dropdown.querySelector("input.search").value;if(null!=this.select.querySelector('option[value="'+addition+'"]')){let add_option=this.select.querySelector('option[value="'+addition+'"]');add_option.selected||this.selectOption(add_option)}else{this.settings.onAddOption&&(addition=this.settings.onAddOption(addition));let new_option=Nui.Core.create_element('<option value="'+addition+'">'+addition+"</option>");this.select.append(new_option),this.initOption(new_option),this.selectOption(new_option)}this.hideSearch()}}filterBy(value){if(this.select.hasAttribute("data-autocomplete")){const xhttp=new XMLHttpRequest;xhttp.addEventListener("readystatechange",e=>{if(4==e.target.readyState&&200==e.target.status){let options=JSON.parse(e.target.responseText);"object"==typeof options&&null!==options&&(this.select.querySelectorAll("option").forEach(option=>{option.remove()}),Object.keys(options).forEach(key=>{let opt=Nui.Core.create_element('<option value="'+options[key].value+'">'+options[key].text+"</option>");this.select.append(opt)}),this.buildOptions())}}),xhttp.open("GET",this.select.getAttribute("data-autocomplete")+value),xhttp.send()}[...this.dropdown.querySelector(".menu").querySelectorAll(".item")].forEach(item=>{item.innerHTML.toLowerCase().includes(value.toLowerCase())?item.classList.remove("hidden"):item.classList.add("hidden")})}clearFilter(){[...this.dropdown.querySelector(".menu").querySelectorAll(".item")].forEach(item=>{item.classList.remove("hidden")})}initOption(option){let content=""==option.innerHTML?" ":option.innerHTML,flex="";option.hasAttribute("data-html")&&(content=option.dataset.html,flex="nui flex");let option_item=Nui.Core.create_element(`<div class="item ${flex}" data-value="${option.value}">${content}</div>`);this.dropdown.querySelector(".menu").append(option_item),option_item.addEventListener("click",function(e){this.selectOption(this.select.querySelector('option[value="'+option_item.dataset.value+'"]')),this.clearFilter()}.bind(this))}addClear(){this.dropdown.classList.add("clearable"),this.dropdown.querySelector("i.close.icon").addEventListener("click",function(e){e.stopPropagation(),this.dropdown.classList.remove("hasSelection"),this.select.multiple?[...this.dropdown.querySelectorAll(".nui.label[data-value]")].forEach(selection=>{this.removeSelection(selection.dataset.value)}):this.selectOption(this.select.querySelector("option"))}.bind(this))}open(){this.select.dispatchEvent(new CustomEvent("open",{bubbles:!0})),this.dropdown.querySelector(".menu").querySelectorAll(".item:not(.filtered)").length>0?(this.dropdown.classList.add("active"),this.dropdown.querySelector(".menu").classList.remove("hidden"),this.dropdown.querySelector(".menu").classList.add("visible"),this.isOpen=!0,null!=this.dropdown.querySelector(".menu").querySelector(".item.selected")&&(this.dropdown.querySelector(".menu").scrollTop=this.dropdown.querySelector(".menu").querySelector(".item.selected").offsetTop),this.dropdown.querySelector(".menu").style.zIndex="100",window.innerHeight<this.dropdown.querySelector(".menu").getBoundingClientRect().top+this.dropdown.querySelector(".menu").getBoundingClientRect().height?this.dropdown.classList.add("top"):this.dropdown.classList.remove("top"),this.dropdown.matches(".search")?(this.dropdown.focus(),this.dropdown.querySelector("input.search").style.zIndex="2",this.dropdown.querySelector("input.search").focus()):this.dropdown.focus()):this.dropdown.matches(".additions")&&(this.dropdown.classList.add("active"),this.dropdown.focus(),this.dropdown.querySelector("input.search").style.zIndex="2",this.dropdown.querySelector("input.search").focus()),this.dropdown.querySelector(".menu").querySelectorAll(".item.hovered").length>0&&this.dropdown.querySelector(".menu").querySelectorAll(".item.hovered").forEach(hovered=>{hovered.classList.remove("hovered")}),this.dropdown.closest("form")&&this.dropdown.closest("form").dispatchEvent(new Event("resize")),this.select.dispatchEvent(new CustomEvent("opened",{bubbles:!0}))}hideSearch(){this.dropdown.matches(".search")&&(this.dropdown.querySelector("input.search").value="",this.dropdown.querySelector("input.search").style.zIndex="",this.dropdown.querySelector(".text").classList.remove("filtered"),[...this.dropdown.querySelector(".menu").querySelectorAll(".item")].forEach(item=>{item.classList.remove("hidden")}))}close(){this.select.dispatchEvent(new CustomEvent("close",{bubbles:!0})),this.dropdown.classList.remove("top"),this.dropdown.classList.remove("active"),this.dropdown.querySelector(".menu").classList.remove("visible"),this.dropdown.querySelector(".menu").classList.add("hidden"),this.isOpen=!1,this.dropdown.querySelector(".menu").style.zIndex="",this.hideSearch(),this.dropdown.closest("form")&&this.dropdown.closest("form").dispatchEvent(new Event("resize")),this.select.dispatchEvent(new CustomEvent("closed",{bubbles:!0}))}selectOption(option,event){this.dropdown.querySelector(".text").classList.remove("default"),this.dropdown.querySelector(".text").innerHTML=" ",this.dropdown.querySelector("input.search").value="",this.select.multiple?(this.dropdown.querySelector('.item[data-value="'+option.value+'"]').classList.add("active","filtered"),this.dropdown.querySelector("input.search").before(this.createSelection(option.value,option.innerHTML)),option.selected=!0):([...this.dropdown.querySelector(".menu").querySelectorAll(".item")].forEach(item=>{item.classList.remove("active","selected")}),this.dropdown.querySelector('.item[data-value="'+option.value+'"]').classList.add("active","selected"),this.dropdown.querySelector(".text").innerHTML=this.dropdown.querySelector('.item[data-value="'+option.value+'"]').innerHTML,this.select.value=option.value),""!=option.value?this.dropdown.classList.add("hasSelection"):this.dropdown.classList.remove("hasSelection"),!1!==event&&(this.select.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})),this.select.dispatchEvent(new CustomEvent("optionSelected",{detail:option.value,bubbles:!0})))}removeSelection(value){this.dropdown.querySelector('.item[data-value="'+value+'"]').classList.remove("active","filtered"),this.select.querySelector('option[value="'+value+'"]').selected=!1,this.dropdown.querySelector('.nui.label[data-value="'+value+'"]')&&this.dropdown.querySelector('.nui.label[data-value="'+value+'"]').remove(),null==this.dropdown.querySelector(".menu").querySelector(".item.active")&&this.dropdown.classList.remove("hasSelection"),this.select.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})),this.select.dispatchEvent(new CustomEvent("optionUnselected",{detail:value,bubbles:!0}))}createSelection(value,content){let selection=Nui.Core.create_element(`<a class="nui label grey rounded bordered custom_option" data-value="${value}">${content}<i class="close icon"></i></a>`);return selection.querySelector("i.icon").addEventListener("click",function(e){e.stopPropagation(),this.removeSelection(value)}.bind(this)),selection}},Nui.Popup=class extends Nui.Component{constructor(node,params){if(super(node),this.settings={popup:"",content:"",position:"auto",color:"white",hide_lag:300,event:"hover",clickable:!1,onOpen:()=>{},onShow:()=>{}},Object.assign(this.settings,params),null===this._element.offsetParent)for(this._element=this._element.parentElement;null===this._element.parentElement.offsetParent;)this._element=this._element.parentElement;this.init()}init(){let popup_params=this._element.getAttribute("data-popup");null!=popup_params&&popup_params.length>0&&(popup_params=JSON.parse(popup_params),Object.assign(this.settings,popup_params)),this.opened=!1,this.hideID=null,"hover"==this.settings.event?(this._element.addEventListener("mouseover",e=>{this.hideID&&clearTimeout(this.hideID),this.opened||(this.show(),setTimeout(()=>{this.opened=!0},200))}),this._element.addEventListener("mouseout",e=>{this.hideID=setTimeout(()=>{this.hide(),this.hideID=null},this.settings.hide_lag)})):"focus"==this.settings.event&&(this._element.addEventListener("focus",e=>{this.show(),setTimeout(()=>{this.opened=!0},200)}),this._element.addEventListener("click",e=>{e.stopPropagation()}),document.addEventListener("click",e=>{this.hide()}),document.addEventListener("focusin",e=>{e.target!=this._element&&this.hide()}))}show(){let addToBody=!0;null==this.popup&&(0==this.settings.popup.length?(this.popup=Nui.Core.create_element(`<div class="nui popup ${this.settings.color} rounded bordered raised transition" style="">\n\t\t\t\t<div class="content"></div>\n\t\t\t\t</div>`),0==this.settings.content.length&&(this.settings.content=this._element.getAttribute("title"),this._element.setAttribute("title","")),this.popup.querySelector(".content").innerHTML=this.settings.content):"string"==typeof this.settings.popup?this.popup=document.querySelector(this.settings.popup):this.popup=this.settings.popup),this.settings.clickable&&this.popup.addEventListener("click",e=>{e.stopPropagation()}),this.settings.onOpen(),document.querySelector("body").append(this.popup),this.popup.classList.remove("hidden"),this.popup.classList.add("visible"),this.isShown=!0;let element_bounds=this._element.getBoundingClientRect(),popup_bounds=this.popup.getBoundingClientRect();if("auto"==this.settings.position){let posv="",posh="";posv=element_bounds.top<popup_bounds.height?"bottom":"top",posh=element_bounds.width>popup_bounds.width?"center":element_bounds.right<popup_bounds.width?"left":"right",this.settings.position=posv+" "+posh,this.popup.classList.add(posv,posh),this.position()}else this.popup.classList.add(this.settings.position.split(" ")[0],this.settings.position.split(" ")[1]),this.position()}position(){let element_bounds=this._element.getBoundingClientRect(),popup_bounds=this.popup.getBoundingClientRect();this.popup.classList.contains("left")?this.popup.style.left=element_bounds.left+window.scrollX+"px":this.popup.classList.contains("right")?this.popup.style.left=element_bounds.left+window.scrollX-(popup_bounds.width-element_bounds.width)+"px":this.popup.style.left=element_bounds.left+window.scrollX-(popup_bounds.width/2-element_bounds.width/2)+"px",this.popup.classList.contains("top")?this.popup.style.bottom=window.innerHeight-element_bounds.top+parseInt(window.getComputedStyle(this.popup,":before").height)+"px":this.popup.classList.contains("bottom")?this.popup.style.top=element_bounds.top+element_bounds.height+parseInt(window.getComputedStyle(this.popup,":before").height)+"px":this.popup.classList.contains("side")&&(this.popup.style.top=element_bounds.top+element_bounds.height/2-popup_bounds.height/2+"px",this.popup.classList.contains("left")?this.popup.style.left=element_bounds.left+window.scrollX-popup_bounds.width-parseInt(window.getComputedStyle(this.popup,":before").width)+"px":this.popup.classList.contains("right")&&(this.popup.style.left=element_bounds.left+window.scrollX+element_bounds.width+parseInt(window.getComputedStyle(this.popup,":before").width)+"px"))}hide(){this.opened&&(this.opened=!1,this.popup.classList.add("hidden"),this.popup.classList.remove("visible"))}},Nui.Calendar=class extends Nui.Component{constructor(node,params){super(node),this.settings={text:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],days:["S","M","T","W","T","F","S"],units:{year:"Year",month:"Month",hour:"Hour",minute:"Minute",second:"Second"}},startMode:"day",format:"YYYY-MM-DD HH:mm:ss",sformat:"YYYY-MM-DD HH:mm:ss",type:"datetime",startday:0,opendays:[0,1,2,3,4,5,6],openhours:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],minutestep:1,startyear:1900,endyear:2100,startdate:null,enddate:null,startdate_difference:0},Object.assign(this.settings,params),this.init()}init(){if(this._element.setAttribute("readonly","readonly"),this.calendar=Nui.Core.create_element('<div class="nui popup calendar white rounded bordered raised p0 transition hidden"></div>'),this._element.closest(".field").append(this.calendar),this.input=this._element,this.sinput=this._element.closest(".field").querySelector('input[type="hidden"]'),this._element.hasAttribute("data-startmode")&&(this.settings.startMode=this._element.getAttribute("data-startmode")),this._element.hasAttribute("data-startday")&&(this.settings.startday=parseInt(this._element.getAttribute("data-startday"))),this._element.hasAttribute("data-format")&&(this.settings.format=this._element.getAttribute("data-format")),this._element.hasAttribute("data-sformat")&&(this.settings.sformat=this._element.getAttribute("data-sformat")),this._element.hasAttribute("data-type")&&(this.settings.type=this._element.getAttribute("data-type")),this._element.hasAttribute("data-months"))try{this.settings.text.months=JSON.parse(this._element.getAttribute("data-months"))}catch(e){this.settings.text.months=this._element.getAttribute("data-months").split(",")}if(this._element.hasAttribute("data-days"))try{this.settings.text.days=JSON.parse(this._element.getAttribute("data-days"))}catch(e){this.settings.text.days=this._element.getAttribute("data-days").split(",")}if(this._element.hasAttribute("data-units"))try{this.settings.text.units=JSON.parse(this._element.getAttribute("data-units"))}catch(e){this.settings.text.units=this._element.getAttribute("data-units").split(",")}this._element.hasAttribute("data-minutestep")&&(this.settings.minutestep=this._element.getAttribute("data-minutestep")),this.setDateLimits(),this._element.hasAttribute("data-opendays")&&this._element.getAttribute("data-opendays").length>0&&(this.settings.opendays=JSON.parse(this._element.getAttribute("data-opendays"))),this._element.hasAttribute("data-openhours")&&this._element.getAttribute("data-openhours").length>0&&(this.settings.openhours=JSON.parse(this._element.getAttribute("data-openhours")));let now=new Date;this.sinput&&this.sinput.value.trim().length&&(now=new Date(this.sinput.value.trim().replace(" ","T")),this.input.value=this.format(now,this.settings.format)),this.selected={day:now.getDate(),month:now.getMonth(),year:now.getFullYear(),minute:now.getMinutes(),second:now.getSeconds(),hour:now.getHours()};let popup_settings={popup:this.calendar,event:"focus",clickable:!0,onOpen:()=>{this.mode=this.settings.startMode,this.setDateLimits(),this.setupContent(this.selected.year,this.selected.month,this.selected.day,this.selected.hour,this.selected.minute)}};this.popup=new Nui.Popup(this._element,popup_settings)}setDateLimits(){if(this._element.hasAttribute("data-startdate")&&(this.settings.startdate=this._element.getAttribute("data-startdate")),this._element.hasAttribute("data-enddate")&&(this.settings.enddate=this._element.getAttribute("data-enddate")),this._element.hasAttribute("data-startdate_difference")&&(this.settings.startdate_difference=parseInt(this._element.getAttribute("data-startdate_difference")),this._element.hasAttribute("data-startdate_difference_unit"))){let diff_unit=parseInt(this._element.getAttribute("data-startdate_difference_unit"));this.settings.startdate_difference=this.settings.startdate_difference*diff_unit}if(this.settings.startdate&&(this.settings.startdate=new Date(this.settings.startdate.trim().replace(" ","T")),this.settings.startdate_difference)){let endseconds=this.settings.startdate.getSeconds();this.settings.startdate.setSeconds(endseconds+this.settings.startdate_difference)}this.settings.enddate&&(this.settings.enddate=new Date(this.settings.enddate.trim().replace(" ","T")))}close(){this.popup.hide()}format(date,format_string){var format=format_string;return format=(format=(format=(format=(format=(format=format.replace("YYYY",date.getFullYear())).replace("MM",("00"+(date.getMonth()+1)).slice(-2))).replace("DD",("00"+date.getDate()).slice(-2))).replace("HH",("00"+date.getHours()).slice(-2))).replace("mm",("00"+date.getMinutes()).slice(-2))).replace("ss",("00"+date.getSeconds()).slice(-2))}saveSelection(){let date=new Date(this.selected.year,this.selected.month,this.selected.day,this.selected.hour,this.selected.minute,this.selected.second);if(this.sinput&&(this.sinput.value=this.format(date,this.settings.sformat),this.sinput.setAttribute("data-value",this.format(date,"YYYY-MM-DD HH:mm:ss"))),this.input.value=this.format(date,this.settings.format),this.input.setAttribute("data-date",date),this.input.dispatchEvent(new Event("change",{bubbles:!0})),this._element.hasAttribute("data-enddate-field")){let name=this._element.getAttribute("data-enddate-field");document.querySelector('input[type="hidden"][name="'+name+'"]')&&(document.querySelector('input[type="hidden"][name="'+name+'"]').value="",document.querySelector('input[type="text"][name="'+name+'"]').value="")}}setupContent(){if(this._element.hasAttribute("data-startdate-field")){let name=this._element.getAttribute("data-startdate-field");if(document.querySelector('input[type="hidden"][name="'+name+'"]')&&document.querySelector('input[type="hidden"][name="'+name+'"]').hasAttribute("data-value")&&(this.settings.startdate=new Date(document.querySelector('input[type="hidden"][name="'+name+'"]').getAttribute("data-value").replace(" ","T")),this.settings.startdate_difference)){let endseconds=this.settings.startdate.getSeconds();this.settings.startdate.setSeconds(endseconds+this.settings.startdate_difference)}}"day"==this.mode?(this.calendar.innerHTML=this.buildMonthView(),[...this.calendar.querySelectorAll(".link[data-year]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.month=parseInt(selection.dataset.month),this.selected.year=parseInt(selection.dataset.year),this.saveSelection(),this.setupContent()})}),[...this.calendar.querySelectorAll(".link[data-day]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.day=parseInt(selection.dataset.day),this.saveSelection(),"date"==this.settings.type?this.close():(this.mode="time",this.setupContent())})}),this.calendar.querySelector(".link.month-year").addEventListener("click",e=>{this.mode="month-year",this.setupContent()})):"month-year"==this.mode?(this.calendar.innerHTML=this.buildMonthYearView(),[...this.calendar.querySelectorAll(".link[data-year]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.year=parseInt(selection.getAttribute("data-year")),this.saveSelection(),this.setupContent()})}),[...this.calendar.querySelectorAll(".link[data-month]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.month=parseInt(selection.dataset.month),this.saveSelection(),this.mode="day",this.setupContent()})}),this.calendar.querySelector(".menu.years").scrollTop=this.calendar.querySelector(".menu.years").querySelector(".item.selected").offsetTop-10,this.calendar.querySelector(".menu.months").scrollTop=this.calendar.querySelector(".menu.months").querySelector(".item.selected").offsetTop-10):"time"==this.mode&&(this.calendar.innerHTML=this.buildTimeView(),[...this.calendar.querySelectorAll(".link[data-day]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.year=parseInt(selection.dataset.year),this.selected.month=parseInt(selection.dataset.month),this.selected.day=parseInt(selection.dataset.day),this.saveSelection(),this.setupContent()})}),[...this.calendar.querySelectorAll(".link[data-hour]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.hour=parseInt(selection.getAttribute("data-hour")),this.saveSelection(),this.setupContent()})}),[...this.calendar.querySelectorAll(".link[data-minute]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.minute=parseInt(selection.dataset.minute),this.saveSelection(),this.calendar.querySelector(".menu.seconds")?this.setupContent():this.close()})}),[...this.calendar.querySelectorAll(".link[data-second]:not(.disabled)")].forEach(selection=>{selection.addEventListener("click",e=>{this.selected.second=parseInt(selection.dataset.second),this.saveSelection(),this.close()})}),this.calendar.querySelector(".link.day").addEventListener("click",e=>{this.mode="day",this.setupContent()}),this.calendar.querySelector(".menu.hours").scrollTop=this.calendar.querySelector(".menu.hours").querySelector(".item.selected").offsetTop-10,this.calendar.querySelector(".menu.minutes").querySelector(".item.selected")&&(this.calendar.querySelector(".menu.minutes").scrollTop=this.calendar.querySelector(".menu.minutes").querySelector(".item.selected").offsetTop-10),this.calendar.querySelector(".menu.seconds")&&this.calendar.querySelector(".menu.seconds").querySelector(".item.selected")&&(this.calendar.querySelector(".menu.seconds").scrollTop=this.calendar.querySelector(".menu.seconds").querySelector(".item.selected").offsetTop-10))}buildDaysRows(){let rows="",dclass="",day=0,odate=new Date(this.selected.year,this.selected.month,1),date,startDay=new Date(this.selected.year,this.selected.month,1).getDay(),ws=0;startDay<this.settings.startday&&(ws=-1);for(let w=ws;w<=ws+5;w++)for(let d=0;d<=6;d++){0==d&&(rows+="<tr>");let date=new Date(this.selected.year,this.selected.month,1);if(day=d+7*w-startDay+1+this.settings.startday,date.setDate(day),dclass="",date.getMonth()==odate.getMonth()&&date.getFullYear()==odate.getFullYear()||(dclass+=" adjacent disabled"),this.settings.opendays.includes(d)||(dclass+=" disabled"),this.settings.startdate){let startdate=new Date(this.settings.startdate);startdate.setHours(0),startdate.setMinutes(0),startdate.setSeconds(0),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);enddate.setHours(23),enddate.setMinutes(59),enddate.setSeconds(59),enddate<date&&(dclass+=" disabled")}this.selected.day==date.getDate()&&date.getMonth()==this.selected.month&&(dclass+=" selected"),rows+=`<td class="nui justify-center link${dclass}" data-day="${date.getDate()}" data-month="${date.getMonth()}">\n\t\t\t\t${date.getDate()}\n\t\t\t\t</td>`,6==d&&(rows+="</tr>")}return rows}buildMonthView(){let date=new Date(this.selected.year,this.selected.month,1),datePrev=new Date(this.selected.year,this.selected.month-1,1),dateNext=new Date(this.selected.year,this.selected.month+1,1),dayslist="",html;for(let d=0;d<=6;d++)dayslist+='<th class="nui justify-center">'+this.settings.text.days[(this.settings.startday+d)%7]+"</th>";return`\n\t\t<table class="nui celled cellable text-center rounded unstackable table rounded">\n\t\t\t<thead>\n\t\t\t\t<tr class="nui white">\n\t\t\t\t\t<th colspan="7">\n\t\t\t\t\t\t<div class="nui flex">\n\t\t\t\t\t\t\t<span class="prev nui flex link align-center" data-month="${datePrev.getMonth()}" data-year="${datePrev.getFullYear()}"><i class="prev icon"></i></span>\n\t\t\t\t\t\t\t<span class="month-year nui flex link grow justify-center">${this.settings.text.months[date.getMonth()]} ${date.getFullYear()}</span>\n\t\t\t\t\t\t\t<span class="next nui flex link align-center" data-month="${dateNext.getMonth()}" data-year="${dateNext.getFullYear()}"><i class="next icon"></i></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t${dayslist}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t${this.buildDaysRows()}\n\t\t\t</tbody>\n\t\t</table>\n\t\t`}buildMonthYearView(){let date=new Date(this.selected.year,this.selected.month,this.selected.day),html;return`\n\t\t<div class="nui flex vertical divided">\n\t\t\t<div class="item nui flex spaced equal items divided align-center bold p1">\n\t\t\t\t<div class="item">\n\t\t\t\t\t${this.settings.text.units.year}\n\t\t\t\t</div>\n\t\t\t\t<div class="item">\n\t\t\t\t\t${this.settings.text.units.month}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="item nui flex spaced equal items divided align-center">\n\t\t\t\t<div class="item nui flex vertical menu years">\n\t\t\t\t\t${this.buildYearsRows2()}\n\t\t\t\t</div>\n\t\t\t\t<div class="item nui flex vertical menu months">\n\t\t\t\t\t${this.buildMonthsRows2()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t`}buildMonthsRows2(){let rows="",dclass="";for(let r=0;r<=11;r++){let date=new Date(this.selected.year,r,1);if(dclass="",this.selected.month==date.getMonth()&&(dclass+=" selected"),this.settings.startdate){let startdate=new Date(this.settings.startdate);startdate.setDate(0),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);enddate.setDate(28),enddate<date&&(dclass+=" disabled")}rows+=`<div class="item nui link justify-center${dclass}" data-month="${r}">${this.settings.text.months[r]}</div>`}return rows}buildYearsRows2(){let rows="",dclass="",start_year=this.settings.startyear,end_year=this.settings.endyear;if(this.settings.startdate){let startdate;start_year=new Date(this.settings.startdate).getFullYear()}if(this.settings.enddate){let enddate;end_year=new Date(this.settings.enddate).getFullYear()}for(let r=start_year;r<=end_year;r++){let date=new Date;if(date.setFullYear(r),dclass="",this.selected.year==date.getFullYear()&&(dclass+=" selected"),this.settings.startdate){let startdate=new Date(this.settings.startdate);startdate.setMonth(0),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);enddate.setMonth(11),enddate<date&&(dclass+=" disabled")}rows+=`<div class="item nui link justify-center ${dclass}" data-year="${r}">${r}</div>`}return rows}buildTimeView(){let date=new Date(this.selected.year,this.selected.month,this.selected.day),datePrev=new Date(this.selected.year,this.selected.month,this.selected.day-1),dateNext=new Date(this.selected.year,this.selected.month,this.selected.day+1),seconds_title="",seconds="",html;return this.settings.format.includes("ss")&&(seconds=`<div class="item nui flex vertical menu seconds">\n\t\t\t\t${this.buildSecondsList()}\n\t\t\t</div>`,seconds_title=`<div class="item">\n\t\t\t\t${this.settings.text.units.second}\n\t\t\t</div>`),`\n\t\t<div class="nui flex vertical divided">\n\t\t\t<div class="item nui flex spaced equal items divided text-center bold p1">\n\t\t\t\t<span class="prev nui flex link align-center" data-day="${datePrev.getDate()}" data-month="${datePrev.getMonth()}" data-year="${datePrev.getFullYear()}"><i class="prev icon"></i></span>\n\t\t\t\t<span class="day nui flex link grow justify-center">${this.settings.text.months[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}</span>\n\t\t\t\t<span class="next nui flex link align-center" data-day="${dateNext.getDate()}" data-month="${dateNext.getMonth()}" data-year="${dateNext.getFullYear()}"><i class="next icon"></i></span>\n\t\t\t</div>\n\t\t\t<div class="item nui flex spaced equal items justify-center bold p1">\n\t\t\t\t<div class="item">\n\t\t\t\t\t${this.settings.text.units.hour}\n\t\t\t\t</div>\n\t\t\t\t<div class="item">\n\t\t\t\t\t${this.settings.text.units.minute}\n\t\t\t\t</div>\n\t\t\t\t${seconds_title}\n\t\t\t</div>\n\t\t\t<div class="item nui flex spaced equal items divided justify-center">\n\t\t\t\t<div class="item nui flex vertical menu hours">\n\t\t\t\t\t${this.buildHoursRows2()}\n\t\t\t\t</div>\n\t\t\t\t<div class="item nui flex vertical menu minutes">\n\t\t\t\t\t${this.buildMinutesRows2()}\n\t\t\t\t</div>\n\t\t\t\t${seconds}\n\t\t\t</div>\n\t\t</div>\n\t\t`}buildHoursRows2(){let rows="",dclass="",date=new Date(this.selected.year,this.selected.month,this.selected.day);for(let r=0;r<=23;r++){if(dclass="",this.selected.hour==r&&(dclass+=" selected"),this.settings.startdate){let startdate=new Date(this.settings.startdate);startdate.setMinutes(0),startdate.setSeconds(0),date.setHours(r),date.setMinutes(0),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);enddate.setMinutes(59),date.setHours(r),date.setMinutes(0),enddate<date&&(dclass+=" disabled")}rows+=`<div class="item nui link justify-center${dclass}" data-hour="${r}">${("0"+r).slice(-2)}</div>`}return rows}buildMinutesRows2(){let rows="",dclass="",date=new Date(this.selected.year,this.selected.month,this.selected.day);date.setHours(this.selected.hour);for(let r=0;r<=59;r+=this.settings.minutestep){if(dclass="",this.selected.minute==r&&(dclass+=" selected"),this.settings.startdate){let startdate=new Date(this.settings.startdate);date.setMinutes(r),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);date.setMinutes(r),enddate<date&&(dclass+=" disabled")}rows+=`<div class="item nui link justify-center ${dclass}" data-minute="${r}">${("0"+r).slice(-2)}</div>`}return rows}buildSecondsList(){let rows="",dclass="",date=new Date(this.selected.year,this.selected.month,this.selected.day);date.setHours(this.selected.hour),date.setMinutes(this.selected.minute);for(let r=0;r<=59;r+=1){if(dclass="",this.selected.second==r&&(dclass+=" selected"),this.settings.startdate){let startdate=new Date(this.settings.startdate);date.setSeconds(r),startdate>date&&(dclass+=" disabled")}if(this.settings.enddate){let enddate=new Date(this.settings.enddate);date.setSeconds(r),enddate<date&&(dclass+=" disabled")}rows+=`<div class="item nui link justify-center ${dclass}" data-second="${r}">${("0"+r).slice(-2)}</div>`}return rows}},Nui.Accordion=class extends Nui.Component{constructor(node,params){super(node),this.settings={name:"Accordion",on:"click",collapsible:!0,exclusive:!0,transition:"slide down",scrollOnOpen:!1,onOpen:()=>{}},Object.assign(this.settings,params),this.init()}init(){[...this._element.children].filter(elem=>elem.matches(".item")).forEach(item=>{"1"!=item.dataset.nui_accordion&&(item.dataset.nui_accordion="1",item.querySelector(".title").addEventListener("click",e=>{item.classList.contains("active")?this.close(item):this.open(item)}))})}open(item){this.closeAll(),item.classList.add("active"),this.settings.scrollOnOpen&&Nui.Core.scrollToTargetwithOffset(item,100)}close(item){item.classList.remove("active")}closeAll(){[...this._element.querySelectorAll(".item")].forEach(item=>{this.close(item)})}},Nui.Demo=class extends Nui.Component{constructor(params){super(),this.settings={group:"1",popupcolor:"slate inverted",order:[],validate:function(item,id,group){console.log("no function...",id,group)}},Object.assign(this.settings,params),this.init()}init(){this.button='<div class="nui divider block invisible"></div><span class="nui blue button">Next</span>',this.popups={}}run(){for(const item of Array.from(document.querySelectorAll("[data-demo]")).sort((a,b)=>this.settings.order.indexOf(a.getAttribute("data-demo"))-this.settings.order.indexOf(b.getAttribute("data-demo")))){let id=item.getAttribute("data-demo"),result=this.settings.validate(item,id,this.settings.group);if(!0!==result){if(null==item["demopop"+id]){let pop=new Nui.Popup(item,{show_on:"",hide_on:"",color:this.settings.popupcolor,content:result+this.button});item["demopop"+id]=pop}item["demopop"+id].show(),Nui.Core.scrollToTargetwithOffset(item["demopop"+id].popup,100),item["demopop"+id].popup.querySelector(".button").addEventListener("click",e=>{this.run()});break}null!=item["demopop"+id]&&item["demopop"+id].hide()}}},Nui.Clonable=class extends Nui.Component{constructor(node,params){super(node),this.settings={},Object.assign(this.settings,params),this.init()}init(){this.selector=this._element.getAttribute("data-selector");let key=this._element.hasAttribute("data-rkey")?this._element.getAttribute("data-rkey"):"n";if(this._element.matches("[data-key='"+key+"']")&&(this._element.classList.add("hidden"),this._element.querySelectorAll("*[name]").forEach(input=>{input.setAttribute("name2",input.getAttribute("name")),input.setAttribute("oname",input.getAttribute("name")),input.removeAttribute("name")})),this._element.hasAttribute("data-cloner")&&document.querySelector(this.selector)===this._element&&document.querySelector(this._element.getAttribute("data-cloner")).addEventListener("click",e=>{this.Clone(this._element,document.querySelectorAll(this.selector)[document.querySelectorAll(this.selector).length-1])}),null!=this._element.querySelector(".add-clone")&&this._element.querySelector(".add-clone").addEventListener("click",e=>{this.Clone(this._element)}),null!=this._element.querySelector(".remove-clone")&&this._element.querySelector(".remove-clone").addEventListener("click",e=>{this._element.dispatchEvent(new CustomEvent("cloneRemoved",{detail:this._element,bubbles:!0})),this._element.remove()}),this._element.hasAttribute("data-startcount")){let startcount=parseInt(this._element.getAttribute("data-startcount"));for(let i=1;i<=startcount;i++)this.Clone(this._element,document.querySelectorAll(this.selector)[document.querySelectorAll(this.selector).length-1])}}Clone(node,after){let selector=node.getAttribute("data-selector"),clone=node.cloneNode(!0),count=0;document.querySelectorAll(selector).forEach(clonable=>{parseInt(clonable.getAttribute("data-key"))>count&&(count=parseInt(clonable.getAttribute("data-key")))}),count+=1;let key=node.getAttribute("data-key");if(this._element.hasAttribute("data-maxcount")){let maxcount=parseInt(this._element.getAttribute("data-maxcount"));if(maxcount>0&&document.querySelectorAll(selector).length-1>=maxcount)return!1}clone.querySelectorAll("*[name]").forEach(element=>{let name=element.getAttribute("name"),index=name.lastIndexOf("["+key+"]");index>-1?element.setAttribute("name",name.substring(0,index)+"["+count+"]"+name.substring(index+("["+key+"]").length)):element.setAttribute("name",name),index=name.lastIndexOf("."+key+"."),index>-1?element.setAttribute("name",name.substring(0,index)+"."+count+"."+name.substring(index+("."+key+".").length)):element.hasAttribute("name")||element.setAttribute("name",name)}),clone.querySelectorAll("*[name2]").forEach(element=>{let name=element.getAttribute("name2"),index=name.lastIndexOf("["+key+"]");index>-1?(element.setAttribute("name",name.substring(0,index)+"["+count+"]"+name.substring(index+("["+key+"]").length)),element.removeAttribute("name2")):(element.setAttribute("name",name),element.removeAttribute("name2")),index=name.lastIndexOf("."+key+"."),index>-1?(element.setAttribute("name",name.substring(0,index)+"."+count+"."+name.substring(index+("."+key+".").length)),element.removeAttribute("name2")):element.hasAttribute("name")||(element.setAttribute("name",name),element.removeAttribute("name2"))}),clone.querySelectorAll("*[id]").forEach(element=>{let name=element.getAttribute("id"),index=name.lastIndexOf("_"+key);element.setAttribute("id",name+"-"+count)}),clone.querySelectorAll("*[for]").forEach(element=>{let name=element.getAttribute("for"),index=name.lastIndexOf("_"+key);element.setAttribute("for",name+"-"+count)}),null!=clone.querySelector(".remove-clone")&&clone.querySelector(".remove-clone").addEventListener("click",e=>{clone.remove()}),null==after?node.after(clone):after.after(clone),clone.setAttribute("data-key",count),clone.classList.remove("hidden"),Nui_boot(clone),this._element.dispatchEvent(new CustomEvent("cloneAdded",{detail:clone,bubbles:!0}))}},Nui.Image=class extends Nui.Component{constructor(node){super(node),this.init()}init(){this._element.matches(".natural")&&this._element.addEventListener("load",e=>{this._element.setAttribute("width",this._element.naturalWidth),this._element.setAttribute("height",this._element.naturalHeight)})}};</script><script>function Nui_boot(...nodes){Array.from(nodes).forEach(node=>{Nui.Checkbox.getInstance(".nui.checkbox",node),Nui.Tabs.getInstance(".nui.menu.tabular",node),Nui.Dropdown.getInstance("select.nui.select",node),Nui.Sidebar.getInstance(".nui.sidebar",node),Nui.Accordion.getInstance(".nui.accordion",node),Nui.Form.getInstance("form.nui.form:not(.novalidation)",node),Nui.Dynamic.getInstance(".dynamic",node),Nui.BBEditor.getInstance(".nui.bbeditor",node),Nui.Popup.getInstance("[data-popup]",node),Nui.Calendar.getInstance("[data-calendar]",node),Nui.Modal.getInstance("[data-modal]",node),Nui.Image.getInstance("img.nui.image.natural",node),Nui.Clonable.getInstance(".nui.clonable",node),node.querySelectorAll("input.nui.file").forEach(input=>{input.addEventListener("change",e=>{let names=[];for(file of input.files)names.push(file.name);0==names.length&&(input.hasAttribute("placeholder")?names.push(input.getAttribute("placeholder")):names.push("---")),input.closest(".field").querySelector("label.nui.button").innerText=names.join(", ")})}),node.querySelectorAll("[data-imask]").forEach(input=>{let maskOptions=null;try{maskOptions=JSON.parse(input.getAttribute("data-imask"))}catch(e){maskOptions=window[input.getAttribute("data-imask")]}let mask=IMask(input,maskOptions)}),node.querySelectorAll(".nui.checkbox.selector").forEach(selector=>{selector.querySelector("input[type=checkbox]").addEventListener("change",function(e){selector.closest("tr").classList.toggle("nui"),selector.closest("tr").classList.toggle("colored"),selector.closest("tr").classList.toggle("blue")}.bind(this))}),node.querySelectorAll(".nui.checkbox.select_all").forEach(selectAll=>{selectAll.querySelector("input[type=checkbox]").addEventListener("change",function(e){selectAll.closest("form").querySelectorAll(".nui.checkbox.selector").forEach(selector=>{Nui.Checkbox.getInstance(selector).toggle()})}.bind(this))}),node.querySelectorAll(".check-selector").forEach(input=>{input.addEventListener("input",function(e){Nui.Checkbox.getInstance(input.closest("tr").querySelector(".nui.selector.checkbox")).check()}.bind(this))}),"undefined"!=typeof ace&&(Nui.Extensions.ace={},Nui.Extensions.ace.textarea={},Nui.Extensions.ace.remove=function(node,textarea){("string"==typeof textarea||textarea instanceof String)&&(textarea=node.querySelector(textarea));let editor=Nui.Extensions.ace.textarea[textarea.getAttribute("name")];null!=editor&&(textarea.style.display="",editor.remove())},Nui.Extensions.ace.init=function(node,textarea){("string"==typeof textarea||textarea instanceof String)&&(textarea=node.querySelector(textarea)),Nui.Extensions.ace.remove(node,textarea);let aceeditor=null;null!=textarea.nextElementSibling&&textarea.nextElementSibling.matches(".code-editor")?aceeditor=textarea.nextElementSibling:(aceeditor=Nui.Core.create_element('<div class="nui code-editor"></div>'),aceeditor.style.height=25*parseInt(textarea.getAttribute("rows"))+"px",aceeditor.style.width="100%",aceeditor.style.fontSize="14px",textarea.after(aceeditor)),textarea.style.display="none",Nui.Extensions.ace.textarea[textarea.getAttribute("name")]=aceeditor;var editor=ace.edit(aceeditor);editor.setValue(textarea.value,1),editor.getSession().on("change",(function(e){textarea.value=editor.getValue()}))},node.querySelectorAll('textarea[data-codeeditor="1"]').forEach((function(textarea){Nui.Extensions.ace.init(node,textarea)}))),null!=Nui.Extensions.tinymce&&Nui.Extensions.tinymce.init(node,'textarea[data-editor="1"], [data-editable]'),null!=Nui.Extensions.signature_pad&&Nui.Extensions.signature_pad.init(node),node.dispatchEvent(new CustomEvent("Nui_boot",{bubbles:!0}))})}document.addEventListener("DOMContentLoaded",(function(event){Nui_boot(document)}));</script><script>function HideField(form, selector){
let field = form.querySelector(selector)
if(field.closest(".field.holder")){
field.closest(".field.holder").classList.add("hidden");