var AuthorFormControlElement=function(){"use strict";window.hasOwnProperty("AuthorBaseElement")||(console.error('[ERROR] <author-control> Required dependency "AuthorBaseElement" not found.'),console.info("AuthorBaseElement is available at https://github.com/author-elements/base"));class t extends(AuthorBaseElement(HTMLElement)){constructor(){super('<template><style>@charset "UTF-8"; :host{display:block;contain:style;max-width:100%}:host *,:host :after,:host :before{box-sizing:border-box}author-control{display:block;contain:style;max-width:100%}author-control *,author-control :after,author-control :before{box-sizing:border-box}</style><slot></slot></template>'),this.UTIL.defineAttributes({type:""}),this.UTIL.defineProperties({initialized:{private:!0,default:!1},initialValue:{default:null},labels:{readonly:!0,get:()=>this.PRIVATE.labelElements},labelElements:{private:!0,default:[]},datalist:{readonly:!0,get:()=>this.PRIVATE.datalistElement},datalistElement:{private:!0,default:null},datalistSourceElement:{private:!0,default:null},input:{readonly:!0,get:()=>this.PRIVATE.inputElement},inputElement:{private:!0,default:null},inputSourceElement:{private:!0,default:null},fieldInputTypes:{readonly:!0,private:!0,default:["color","date","datetime-local","email","file","hidden","image","month","number","password","range","reset","search","submit","tel","text","time","url","week","textarea"]},toggleInputTypes:{readonly:!0,private:!0,default:["checkbox","radio"]},supportedTypes:{readonly:!0,private:!0,default:["field","toggle","select"]}}),this.UTIL.definePrivateMethods({catalogChild:t=>{switch(t.nodeName){case"LABEL":return t.htmlFor=this.PRIVATE.guid,void this.PRIVATE.labelElements.push(t);case"INPUT":case"TEXTAREA":return t.id=this.PRIVATE.guid,void(this.PRIVATE.inputSourceElement=t);case"SELECT":return void(this.PRIVATE.inputSourceElement=t);case"DATALIST":return void(this.PRIVATE.datalistSourceElement=t);default:t.children.length>0&&Array.from(t.children).forEach(t=>this.PRIVATE.catalogChild(t))}},init:()=>{switch(this.initialValue=this.PRIVATE.inputSourceElement.value,this.PRIVATE.inputSourceElement.nodeName){case"INPUT":if(this.PRIVATE.inputElement=this.PRIVATE.inputSourceElement,this.PRIVATE.datalistSourceElement){if(this.type="datalist",!customElements.get("author-datalist")){this.PRIVATE.initDefaultDatalist();break}this.PRIVATE.initAuthorDatalist();break}if(this.PRIVATE.fieldInputTypes.indexOf(this.PRIVATE.inputElement.type)>=0){this.type="field";break}if(this.PRIVATE.toggleInputTypes.indexOf(this.PRIVATE.inputElement.type)>=0){this.type="toggle";break}break;case"TEXTAREA":this.PRIVATE.inputElement=this.PRIVATE.inputSourceElement,this.type="textarea";break;case"SELECT":if(this.type="select",!customElements.get("author-select")){this.PRIVATE.initDefaultSelect();break}this.PRIVATE.initAuthorSelect()}switch(this.UTIL.registerListener(this.input,"invalid",t=>this.emit("invalid",{})),this.type){case"input":case"textarea":break;case"select":case"datalist":this.UTIL.defineProperties({length:{readonly:!0,get:()=>this.input.length},selectedIndex:{set:t=>this.input.selectedIndex=t,get:()=>this.input.selectedIndex}}),["add","deselectAll","addFilter","hasFilter","removeAllFilters","removeFilter","item","namedItem","remove","reportValidity","setCustomValidity"].forEach(t=>this[t]=((...e)=>this.input[t](...e)))}this.PRIVATE.initialized=!0,this.emit("initialized")},initAuthorDatalist:()=>{let{datalistSourceElement:t,inputElement:e,guid:i}=this.PRIVATE,l=document.createElement("author-datalist");Array.from(t.attributes).forEach(e=>{e.specified&&(l.setAttribute(e.name,e.value),"autofocus"===e.name&&t.removeAttribute(e.name))}),this.removeChild(e);let s=document.createElement("select");Array.from(t.children).forEach(t=>s.add(t)),s.selectedIndex=-1,l.inject(e,s,i),this.replaceChild(l,t),this.PRIVATE.inputElement=l},initDefaultDatalist:()=>{let{datalistSourceElement:t,inputElement:e,guid:i}=this.PRIVATE;t.id=`${i}_datalist`,e.setAttribute("list",t.id),this.PRIVATE.datalistElement=t},initDefaultSelect:()=>{let{inputSourceElement:t}=this.PRIVATE;t.id=this.PRIVATE.guid,t.setAttribute("role","menu"),this.PRIVATE.inputElement=t},initAuthorSelect:()=>{let{inputSourceElement:t}=this.PRIVATE,e=document.createElement("author-select");e.id=this.PRIVATE.guid,Array.from(t.attributes).forEach(i=>{i.specified&&(e.setAttribute(i.name,i.value),"autofocus"===i.name&&t.removeAttribute(i.name))}),e.inject(t,this.labels),this.replaceChild(e,t),this.PRIVATE.inputElement=e,this.labels.forEach(t=>{this.UTIL.registerListener(t,"click",t=>this.PRIVATE.inputElement.focus())})}}),this.UTIL.registerListeners(this,{connected:()=>this.PRIVATE.guid=this.UTIL.generateGuid("control_"),rendered:()=>{Array.from(this.children).forEach(t=>this.PRIVATE.catalogChild(t)),this.PRIVATE.init()}})}static get observedAttributes(){return["disabled"]}get value(){return this.input.value}set value(t){this.input.value=t}blur(){this.input.blur()}checkValidity(){this.input.checkValidity()}clear(){if("clear"in this.input)return this.input.clear();this.input.value=""}focus(){this.input.focus()}}return customElements.define("author-control",t),t}();
//# sourceMappingURL=author-control.min.js.map
