@mescius/wijmo.input 5.20232.939

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es2015-esm.js ADDED
@@ -0,0 +1,14 @@
1
+ /*!
2
+ *
3
+ * Wijmo Library 5.20232.939
4
+ * https://developer.mescius.com/wijmo
5
+ *
6
+ * Copyright(c) MESCIUS inc. All rights reserved.
7
+ *
8
+ * Licensed under the End-User License Agreement For MESCIUS Wijmo Software.
9
+ * us.sales@mescius.com
10
+ * https://developer.mescius.com/wijmo/licensing
11
+ *
12
+ */
13
+
14
+ import{_addCultureInfo,culture,setAriaLabel,disableAutoComplete,isIE,isIE9,asBoolean,asString,asEnum,setSelectionRange,contains,getActiveElement,setAttribute,showPopup,hidePopup,hasClass,addClass,removeClass,toggleClass,removeChild,Control,Key,Event,EventArgs,CancelEventArgs,tryCast,createElement,hasItems,isObject,isString,asArray,asFunction,asNumber,asType,asCollectionView,closest,escapeHtml,toPlainText,setCss,Binding,Rect,DateTime,assert,isFirefox,getUniqueId,isNumber,enable,isFunction,escapeRegExp,setText,isDate,isBoolean,asDate,asInt,Globalize,_ClickRepeater,CollectionView,format,clamp,Color,_MaskProvider,isEdge,setChecked,Point,isArray,getElementRect,PopupPosition,moveFocus,getElement,isUndefined,_registerModule}from"@mescius/wijmo";import*as selfModule from"@mescius/wijmo.input";_addCultureInfo("InputNumber",{ariaLabels:{incVal:"Increase Value",decVal:"Decrease Value"}});export class InputNumber extends Control{constructor(e,t){super(e);this._value=null;this._min=null;this._max=null;this._format="";this._step=null;this._showBtn=!0;this._readOnly=!1;this._handleWheel=!0;this._oldText="";this._fromKb=!0;this.textChanged=new Event;this.valueChanged=new Event;let s=this.hostElement;setAttribute(s,"role","spinbutton",!0);let i=this.getTemplate();this.applyTemplate("wj-control wj-content wj-inputnumber",i,{_tbx:"input",_btnUp:"btn-inc",_btnDn:"btn-dec"},"input");let h=culture.InputNumber.ariaLabels;setAriaLabel(this._btnUp.querySelector("button"),h.incVal);setAriaLabel(this._btnDn.querySelector("button"),h.decVal);this._tbx.type.match(/number/i)&&(this.inputType="");let n=this._tbx;n.autocomplete="off";n.spellcheck=!1;this._updateSymbols();let l=this.addEventListener.bind(this);l(n,"keypress",this._keypress.bind(this));l(n,"keydown",this._keydown.bind(this));l(n,"input",this._input.bind(this));l(n,"blur",()=>{this.text!=this._oldText&&this._setText(this.text)});l(n,"paste",()=>{this._fromKb=!1});l(n,"compositionstart",()=>{this._composing=!0});l(n,"compositionend",()=>{this._composing=!1;setTimeout(()=>{let e=this.text,t=this._oldText,s=this._chrPct;t&&t.indexOf(s)>-1&&e.indexOf(s)<0&&(e+=s);this._setText(e)})});let a=this._clickSpinner.bind(this);l(this._btnUp,"click",a);l(this._btnDn,"click",a);this._rptUp=new _ClickRepeater(this._btnUp.querySelector("button"));this._rptDn=new _ClickRepeater(this._btnDn.querySelector("button"));l(n,"wheel",e=>{if(this.handleWheel&&!e.defaultPrevented&&!e.ctrlKey&&this._isEditable()&&this.containsFocus()){let t=clamp(-e.deltaY,-1,1);this._increment((this.step||1)*t);setTimeout(()=>this.selectAll());e.preventDefault()}});this.value=0;this.isRequired=!0;this.initialize(t)}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(e){this._tbx.type=asString(e)}get value(){return this._value}set value(e){if(e!=this._value)if(null==(e=asNumber(e,!this.isRequired||null==e&&null==this._value)))this._setText("");else if(!isNaN(e)){let t=Globalize.format(e,this.format);this._setText(t)}}get isRequired(){return this._tbx.required}set isRequired(e){this._tbx.required=asBoolean(e)}get isReadOnly(){return this._readOnly}set isReadOnly(e){this._readOnly=asBoolean(e);this.inputElement.readOnly=this._readOnly;toggleClass(this.hostElement,"wj-state-readonly",this.isReadOnly)}get handleWheel(){return this._handleWheel}set handleWheel(e){this._handleWheel=asBoolean(e)}get min(){return this._min}set min(e){if(e!=this._min){this._min=asNumber(e,!0);this._updateAria()}}get max(){return this._max}set max(e){if(e!=this._max){this._max=asNumber(e,!0);this._updateAria()}}get step(){return this._step}set step(e){this._step=asNumber(e,!0);this._updateBtn()}get format(){return this._format}set format(e){if(e!=this.format){this._format=asString(e);this.refresh()}}get text(){return this._tbx.value}set text(e){if(e!=this.text){this._oldText=null;this._setText(e)}}get placeholder(){return this._tbx.placeholder}set placeholder(e){this._tbx.placeholder=e}get showSpinner(){return this._showBtn}set showSpinner(e){this._showBtn=asBoolean(e);this._updateBtn()}get repeatButtons(){return!this._rptUp.disabled}set repeatButtons(e){this._rptUp.disabled=this._rptDn.disabled=!asBoolean(e)}selectAll(){let e=this._tbx;setSelectionRange(e,0,e.value.length)}clamp(e){return clamp(e,this.min,this.max)}onTextChanged(e){this.textChanged.raise(this,e);this._updateState()}onValueChanged(e){this._updateAria();this.valueChanged.raise(this,e)}dispose(){this._rptUp.element=null;this._rptDn.element=null;super.dispose()}onGotFocus(e){this._oldValue=this.value;if(!this.isTouching){this._tbx.focus();this.selectAll()}super.onGotFocus(e)}onLostFocus(e){if(this._composing){this._composing=!1;this._setText(this.text)}if(this._isEditable()){let e=this.clamp(this.value);if(e==this.value||this.onInvalidInput(new CancelEventArgs)){let t=Globalize.format(e,this.format);this._setText(t)}}super.onLostFocus(e)}refresh(e=!0){super.refresh(e);if(this.hostElement){this._updateSymbols();let e=Globalize.format(this.value,this.format);this._setText(e)}}_isEditable(){return!this.isReadOnly&&!this.isDisabled}_updateSymbols(){let e=culture.Globalize.numberFormat,t=Globalize._parseNumericFormat(this.format);this._chrDec=e["."]||".";this._chrTho=e[","]||",";this._chrNeg=e["-"]||"-";this._chrPls=e["+"]||"+";this._chrPct=e["%"]||"%";this._chrCur=t.curr||e.currency.symbol||"$";this._fmtSpc=t.spec;this._fmtPrc=t.prec;this._rxSym=new RegExp("^[%+\\-() \\"+this._chrDec+"\\"+this._chrCur+"\\"+this._chrNeg+"\\"+this._chrPls+"\\"+this._chrPct+"]*$");this._rxNeg=new RegExp("^\\s*(\\-|\\"+this._chrNeg+")|([^e](\\-|\\"+this._chrNeg+")|\\()")}_isNumeric(e,t){let s=e==this._chrDec||e>="0"&&e<="9",i="x"==this._fmtSpc;!s&&i&&(s=e>="a"&&e<="f"||e>="A"&&e<="F");s||t||i||(s=e==this._chrPls||e==this._chrNeg||"("==e||")"==e);return s}_getInputRange(e){let t=[0,0],s=this.text,i=!1;for(let h=0;h<s.length;h++)if(this._isNumeric(s[h],e)){if(!i){t[0]=h;i=!0}t[1]=h+1}return t}_flipSign(){let e=this._getSelStartDigits();this.value*=-1;this._setSelStartDigits(e)}_getSelStartDigits(){let e=0,t=this._tbx.selectionStart,s=this._tbx.value;for(let i=0;i<s.length&&i<t;i++)this._isNumeric(s[i],!0)&&e++;return e}_setSelStartDigits(e){let t=this._tbx.value;for(let s=0;s<t.length&&e>=0;s++)if(this._isNumeric(t[s],!0)){if(!e){setSelectionRange(this._tbx,s);break}e--}else if(!e){setSelectionRange(this._tbx,s);break}}_increment(e){if(e){let t=this.clamp(isNumber(this.value)?this.value+e:0),s=Globalize.format(t,this.format,!1,!1);this._setText(s)}}_updateBtn(){let e=this.showSpinner&&!!this.step,t=e;setCss([this._btnUp,this._btnDn],{display:e?"":"none"});toggleClass(this.hostElement,"wj-input-show-spinner",e);enable(this._btnUp,t);enable(this._btnDn,t);this._updateAria()}_setText(e,t=!1,s=!1){if(this._composing)return;let i=this._tbx,h=this._chrDec,n=this._rxNeg.test(e),l=this._delKey,a=this.containsFocus();e&&this._rxSym.test(e)&&a&&(e=this.isRequired||!l?(n?"-0":"0")+(e.indexOf(h)>-1?h:""):"");this._delKey=!1;l&&0==this.value&&!this.isRequired&&(e="");if(!e){if(!this.isRequired||s){i.value="";if(null!=this._value){this._value=null;this.onValueChanged()}if(this._oldText){this._oldText=e;this.onTextChanged()}this._updateBtn();return}e="0"}let r=e.indexOf(h),o=this._format||(r>-1?"n2":"n0"),d=Globalize.parseFloat(e,o);isFinite(d)||(d=this.clamp(d));if(isNaN(d)){this.onInvalidInput(new CancelEventArgs)?i.value=this._oldText:this.focus();return}let c=a&&r>-1?2:null,u=Globalize.format(d,o,!1,t,c);n&&d>=0&&!l&&(u=this._chrNeg+u);a&&r>-1&&"g"==this._fmtSpc&&0!=this._fmtPrc&&(u=e).indexOf(h)<0&&(u+=h);if(i.value!=u){i.value=u;d=Globalize.parseFloat(u,o)}if(d!=this._value){this._value=d;this.onValueChanged()}if(this.text!=this._oldText){this._oldText=this.text;this.onTextChanged()}this._updateBtn();this._updateState()}_keypress(e){if(!e.defaultPrevented&&!this._composing&&this._isEditable()&&e.charCode&&!e.ctrlKey&&!e.metaKey&&e.keyCode!=Key.Enter){let t=this._tbx,s=String.fromCharCode(e.charCode);if(this._isNumeric(s,!1)){let s=t.maxLength;if(s>-1&&t.value.length>=s&&t.selectionEnd==t.selectionStart){e.preventDefault();return}let i=this._getInputRange(!0),h=t.selectionStart,n=t.selectionEnd;if(h<i[0]&&n<t.value.length){n=Math.max(n,i[0]);setSelectionRange(t,i[0],n)}if(h>=i[1]){let s=null!=this._fmtPrc?this._fmtPrc:2,i=t.value.indexOf(this._chrDec);i>-1&&h-i>s&&e.preventDefault()}}else e.preventDefault();switch(s){case"-":case this._chrNeg:if(this.clamp(-1)>=0)this.value<0&&this._flipSign();else if(this.value&&t.selectionStart==t.selectionEnd)this._flipSign();else if(this.clamp(-1)<0){t.value=this._chrNeg;setSelectionRange(t,1)}e.preventDefault();break;case"+":case this._chrPls:this.value<0&&this._flipSign();e.preventDefault();break;case".":case this._chrDec:if(0==this._fmtPrc)e.preventDefault();else{let s=t.value.indexOf(this._chrDec);if(s>-1){t.selectionStart<=s&&s++;setSelectionRange(t,s);e.preventDefault()}}}if(!e.defaultPrevented&&isIE()){let i=t.value,h=t.selectionStart,n=t.selectionEnd;if(h==n){t.value=i.substr(0,h)+s+i.substr(n);setSelectionRange(t,h+1);e.preventDefault();this._input()}}}}_keydown(e){this._delKey=!1;if(e.defaultPrevented||this._composing)return;var t=hasClass(this._tbx,"wj-grid-ime");if(t&&e.keyCode!=Key.Back&&e.keyCode!=Key.Delete)return;let s=this._tbx,i=s.value,h=s.selectionStart,n=s.selectionEnd;switch(e.keyCode){case 65:if(e.ctrlKey){setTimeout(()=>{this.selectAll()});e.preventDefault()}break;case Key.Up:case Key.Down:if(this.step&&this._isEditable()){this._increment(this.step*(e.keyCode==Key.Up?1:-1));setTimeout(()=>{this.selectAll()});e.preventDefault()}break;case Key.Back:this._delKey=!0;if(n-h<2&&this._isEditable()){let t=i[n-1];if(t==this._chrDec||t==this._chrPct||t==this._chrTho||")"==t){setTimeout(()=>{n=t==this._chrPct?this._getInputRange(!0)[1]:n-1;setSelectionRange(s,n)});e.preventDefault()}}break;case Key.Delete:this._delKey=!0;if(n-h<2&&this._isEditable())if("0"==i&&1==h)setSelectionRange(s,0);else{let t=i[h];if(t==this._chrDec||t==this._chrPct){setTimeout(()=>{setSelectionRange(s,h+1)});e.preventDefault()}}break;case Key.Escape:this.value=this._oldValue;this.selectAll()}t&&this._delKey&&this._isEditable()&&this._setText(null,!1,!0)}_input(){this._composing?this._fromKb=!0:setTimeout(()=>{let e=this._tbx,t=e.value,s=t.indexOf(this._chrDec),i=e.selectionStart,h=this._getSelStartDigits();"p"==this._fmtSpc&&t.length&&t.indexOf(this._chrPct)<0&&(t+=this._chrPct);this._setText(t,this._fromKb);this._fromKb=!0;if(this.containsFocus()){let n=e.value,l=n.indexOf(this._chrDec),a=this._getInputRange(!0);if(t==this._chrNeg+this._chrDec&&l>-1){setSelectionRange(e,l+1);return}if(t[0]==this._chrNeg&&n[0]!=this._chrNeg){1==n.length?setSelectionRange(e,1):this._setSelStartDigits(h);return}t?t==this._chrDec&&l>-1?i=l+1:i<=s&&l>-1||s<0&&l<0?i+=n.length-t.length:s<0&&l>-1&&(i=l):i=l>-1?l:a[1];i=clamp(i,a[0],a[1]);setSelectionRange(e,i)}})}_clickSpinner(e){if(!e.defaultPrevented&&this._isEditable()&&this.step){this._increment(this.step*(contains(this._btnUp,e.target)?1:-1));if(!this.isTouching){Control.sharedState.InvalidScroll=isEdge();setTimeout(()=>this.selectAll())}}}_updateAria(){let e=this.hostElement;if(e){setAttribute(e,"aria-valuemin",this.min);setAttribute(e,"aria-valuemax",this.max);setAttribute(e,"aria-valuenow",this.value);enable(this._btnDn,null==this.min||this.value>this.min);enable(this._btnUp,null==this.max||this.value<this.max)}}}InputNumber.controlTemplate='<div class="wj-template"><div class="wj-input"><div class="wj-input-group"><span wj-part="btn-dec" class="wj-input-group-btn" tabindex="-1"><button class="wj-btn wj-btn-default" tabindex="-1">-</button></span><input type="tel" wj-part="input" class="wj-form-control wj-numeric"/><span wj-part="btn-inc" class="wj-input-group-btn" tabindex="-1"><button class="wj-btn wj-btn-default" tabindex="-1">+</button></span></div></div></div>';export class InputMask extends Control{constructor(e,t){super(e);this._fullEdit=!1;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate("wj-control wj-content wj-inputmask",s,{_tbx:"input"},"input");if("INPUT"==this._orgTag){let e=this._tbx.getAttribute("value");e&&(this.value=e)}this._msk=new _MaskProvider(this._tbx);this.isRequired=!0;this.initialize(t);this.addEventListener(this._tbx,"input",()=>{this.onValueChanged()});this.addEventListener(this._tbx,"blur",this._commitText.bind(this));this.addEventListener(this._tbx,"keydown",e=>{e.keyCode==Key.Enter&&this._commitText()})}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(e){this._tbx.type=asString(e)}get value(){return this._tbx.value}set value(e){if(e!=this.value){this._tbx.value=asString(e);e=this._msk._applyMask();this._tbx.value=e;this.onValueChanged()}}get rawValue(){return this._msk.getRawValue()}set rawValue(e){e!=this.rawValue&&(this.value=asString(e))}get mask(){return this._msk.mask||""}set mask(e){let t=this.value;this._msk.mask=asString(e);this.value!=t&&this.onValueChanged()}get promptChar(){return this._msk.promptChar}set promptChar(e){let t=this.value;this._msk.promptChar=e;this.value!=t&&this.onValueChanged()}get overwriteMode(){return this._msk.overwriteMode}set overwriteMode(e){this._msk.overwriteMode=asBoolean(e)}get placeholder(){return this._tbx.placeholder}set placeholder(e){this._tbx.placeholder=e}get maskFull(){return this._msk.maskFull}get isRequired(){return this._tbx.required}set isRequired(e){this._tbx.required=asBoolean(e)}get isReadOnly(){return this._tbx.readOnly}set isReadOnly(e){this._tbx.readOnly=asBoolean(e);toggleClass(this.hostElement,"wj-state-readonly",this.isReadOnly)}selectAll(){let e=this._msk.getMaskRange();setSelectionRange(this._tbx,e[0],e[1]+1)}onValueChanged(e){if(this.value!=this._oldValue){this._oldValue=this.value;this.valueChanged.raise(this,e)}this._updateState()}_commitText(){(this.rawValue||this.isRequired)&&(this.maskFull||this.onInvalidInput(new CancelEventArgs));this._updateState()}dispose(){this._msk.input=null;super.dispose()}refresh(e=!0){super.refresh(e);this.hostElement&&this._msk.refresh()}_isGridImeEnabled(){const e=this._tbx.closest(".wj-flexgrid");return!(!e||!e["$WJ-CTRL"]._imeHdl)}onGotFocus(e){super.onGotFocus(e);this._isGridImeEnabled()&&!this._fullEdit||this.selectAll()}}InputMask.controlTemplate='<div class="wj-input"><div class="wj-input-group"><input wj-part="input" class="wj-form-control"/></div></div>';export class ColorPicker extends Control{constructor(e,t){super(e);this._hsb=[.5,1,1];this._alpha=1;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate("wj-control wj-content wj-colorpicker",s,{_eSB:"div-sb",_eHue:"div-hue",_eAlpha:"div-alpha",_ePreview:"div-pv",_ePal:"div-pal",_eText:"div-text"});this._palette="#FFF,#000,#F00,#FFC000,#FFFF00,#92D050,#00B050,#00B0F0,#0070C0,#7030A0".split(",");this._updatePalette();this._eHue.style.backgroundImage="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAD4CAIAAACi6hsPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAGvSURBVDhPXdBPaM9xHMfxz4pWaxcmtoOhpdXSVpiyHWxqmVpDjaU5rK34XfypjTJ/p+ZPay6jhsOsRrKwaJElf9IQq03WIkv4FeMwMq221tfje1ByeFzfvd7PEKWGEKWTQRZLySWfVRRTQjmVbKWGOhLsZT+HaeY0bbTTQSfdXOcWffTzmAFeMcwoYyT5ygS/mA5hNgphip98J8kHRnnNSwZ4yH1uc4OrdHGR87RximYO0cgedlLLdqqoYAPrWMtKVrCcJSxiPmnMJUQp/Bsyk2xyyKOAQooopYwKtlDNDur5G7SBJo7RQiv/B+2hl3s84CkvGGKEOOYnxolj/mYmhBmDJ5ngCx95xxsGecYj4pB3iENeoZMO2mmlhaMcpIE4ZII6aqhmM3HMMkooopB88sghm0wySCeVlCjMCVFIYx4LWUwOeRSwhmLWU84mqqihll3sppEmjnOSs5zjEl1c4yZ99POE5wwxwns+840fTDFLFKaZZIJxkozxlmEGGSC+GF++Sy89dHOZC8Rr4lVnOMERDrCPBPXEX22jko2UEn+/mnxyWUYWC0gnNUQh/AEc0HJs6cex0gAAAABJRU5ErkJggg==)";this._eHue.style.backgroundSize="contain";if(navigator.appVersion.indexOf("MSIE 9")>-1){this._eSB.children[0].style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff,endColorstr=#00ffffff,GradientType=1)";this._eSB.children[1].style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr=#ff000000,GradientType=0)"}s=ColorPicker._tplCursor;this._cSB=createElement(s);this._cHue=createElement(s);this._cHue.style.width="100%";this._cAlpha=createElement(s);this._cAlpha.style.height="100%";this._eSB.appendChild(this._cSB);this._eHue.appendChild(this._cHue);this._eAlpha.appendChild(this._cAlpha);let i=this.addEventListener.bind(this),h=this.removeEventListener.bind(this),n=document;i(this.hostElement,"mousedown",e=>{i(n,"mousemove",mouseMove);i(n,"mouseup",mouseUp);this._mouseDown(e)});i(this.hostElement,"touchstart",e=>{i(n,"touchmove",mouseMove);i(n,"touchend",mouseUp);this._mouseDown(e)});let mouseMove=e=>{this._mouseMove(e)},mouseUp=e=>{h(n,"mousemove",mouseMove);h(n,"mouseup",mouseUp);h(n,"touchmove",mouseMove);h(n,"touchend",mouseUp);this._mouseUp(e)};i(this.hostElement,"click",e=>{let t=e.target;if(t&&"DIV"==t.tagName&&contains(this._ePal,t)){let e=t.style.backgroundColor;e&&(this.value=new Color(e).toString())}});this.value="#ffffff";this.initialize(t);this._updatePanels()}get showAlphaChannel(){return"none"!=this._eAlpha.parentElement.style.display}set showAlphaChannel(e){this._eAlpha.parentElement.style.display=asBoolean(e)?"":"none"}get showColorString(){return"none"!=this._eText.style.display}set showColorString(e){this._eText.style.display=asBoolean(e)?"":"none"}get value(){return this._value}set value(e){if(e!=this.value){e=(e=asString(e)).trim();let t=Color.fromString(e);if(t){this._value=e;this._eText.innerText=e;let s=t.getHsb();if(this._hsb[0]!=s[0]||this._hsb[1]!=s[1]||this._hsb[2]!=s[2]||this._alpha!=t.a){if(0==s[2]){s[0]=this._hsb[0];s[1]=this._hsb[1]}else 0==s[1]&&(s[0]=this._hsb[0]);this._hsb=s;this._alpha=t.a;this._updatePanels();this.onValueChanged()}}}}get palette(){return this._palette}set palette(e){if((e=(e=asArray(e)).slice(0,10)).every(e=>null!=Color.fromString(e))){this._palette=e;this._updatePalette()}}onValueChanged(e){this._updatePanels();this.valueChanged.raise(this,e)}_mouseDown(e){this._htDown=this._getTargetPanel(e);if(this._htDown){e.preventDefault();this.focus();this._mouseMove(e)}}_mouseMove(e){var t=e.touches?e.touches[0]:e,s=this._htDown;if(s){let e=s.getBoundingClientRect(),i=this._hsb;if(s==this._eHue)i[0]=clamp((t.clientY-e.top)/e.height,0,.99);else if(s==this._eSB){i[1]=clamp((t.clientX-e.left)/e.width,0,1);i[2]=clamp(1-(t.clientY-e.top)/e.height,0,1)}else s==this._eAlpha&&(this._alpha=clamp((t.clientX-e.left)/e.width,0,1));this._updateColor()}}_mouseUp(e){this._htDown=null}_updateColor(){let e=Color.fromHsb(this._hsb[0],this._hsb[1],this._hsb[2],this._alpha);this.value=e.toString();this._updatePanels()}_updatePalette(){let e=new Color("#fff"),t=new Color("#000");this._ePal.innerHTML="";for(let s=0;s<this._palette.length;s++){let i=createElement('<div style="float:left;width:10%;box-sizing:border-box;padding:1px">'),h=new Color(this._palette[s]),n=h.getHsb();i.appendChild(this._makePalEntry(h,4));for(let s=0;s<5;s++){if(0==n[1]){let i=.1*s+(n[2]>.5?.05:.55);h=Color.interpolate(e,t,i)}else h=Color.fromHsb(n[0],.1+.2*s,1-.1*s);i.appendChild(this._makePalEntry(h,0))}this._ePal.appendChild(i)}}_makePalEntry(e,t){let s=document.createElement("div");setCss(s,{cursor:"pointer",backgroundColor:e.toString(),marginBottom:t||""});s.innerHTML="&nbsp";return s}_updatePanels(){let e=Color.fromHsb(this._hsb[0],1,1,1),t=Color.fromHsb(this._hsb[0],this._hsb[1],this._hsb[2],1);this._eSB.style.backgroundColor=e.toString();this._eAlpha.style.background="linear-gradient(to right, transparent 0%, "+t.toString()+" 100%)";navigator.appVersion.indexOf("MSIE 9")>-1&&(this._eAlpha.style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr="+t.toString()+", GradientType = 1)");this._ePreview.style.backgroundColor=this.value;this._cHue.style.top=(100*this._hsb[0]).toFixed(0)+"%";this._cSB.style.left=(100*this._hsb[1]).toFixed(0)+"%";this._cSB.style.top=(100-100*this._hsb[2]).toFixed(0)+"%";this._cAlpha.style.left=(100*this._alpha).toFixed(0)+"%"}_getTargetPanel(e){let t=e.target;return contains(this._eSB,t)?this._eSB:contains(this._eHue,t)?this._eHue:contains(this._eAlpha,t)?this._eAlpha:null}}ColorPicker.controlTemplate='<div style="position:relative;width:100%;height:100%"><div style="float:left;width:50%;height:100%;box-sizing:border-box;padding:2px"><div wj-part="div-pal"><div style="float:left;width:10%;box-sizing:border-box;padding:2px"><div style="background-color:black;width:100%">&nbsp;</div><div style="height:6px"></div></div></div><div wj-part="div-text" style="position:absolute;bottom:0px;display:none"></div></div><div style="float:left;width:50%;height:100%;box-sizing:border-box;padding:2px"><div wj-part="div-sb" class="wj-colorbox" style="float:left;width:89%;height:89%"><div style="position:absolute;width:100%;height:100%;background:linear-gradient(to right, white 0%,transparent 100%)"></div><div style="position:absolute;width:100%;height:100%;background:linear-gradient(to top, black 0%,transparent 100%)"></div></div><div style="float:left;width:1%;height:89%"></div><div style="float:left;width:10%;height:89%"><div wj-part="div-hue" class="wj-colorbox"></div></div><div style="float:left;width:89%;height:1%"></div><div style="float:left;width:89%;height:10%"><div style="width:100%;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAAcSURBVBhXY/iPBBYgAWpKQGkwgMqDAdUk/v8HAM7Mm6GatDUYAAAAAElFTkSuQmCC)"><div wj-part="div-alpha" class="wj-colorbox"></div></div></div><div style="float:left;width:1%;height:10%"></div><div style="float:left;width:10%;height:10%"><div wj-part="div-pv" class="wj-colorbox" style="position:static"></div></div></div></div>';ColorPicker._tplCursor='<div style="position:absolute;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);border:2px solid #f0f0f0;border-radius:50px;box-shadow:0px 0px 4px 2px #0f0f0f"></div>';export class CollectionViewNavigator extends Control{constructor(e,t){super(e);this._view=null;this._byPage=!1;this._fmt="{current:n0} / {count:n0}";let s=this.getTemplate();this.applyTemplate("wj-control wj-content wj-pager wj-collectionview-navigator",s,{_btnFirst:"btn-first",_btnPrev:"btn-prev",_txtCurr:"txt-curr",_btnNext:"btn-next",_btnLast:"btn-last"},"input");this._rptNext=new _ClickRepeater(this._btnNext.querySelector("button"));this._rptPrev=new _ClickRepeater(this._btnPrev.querySelector("button"));this.addEventListener(this.hostElement,"click",this._click.bind(this));this.initialize(t);this._update()}get cv(){return this._view}set cv(e){if(e!=this._view){let t=this._view;if(t){t.collectionChanged.removeHandler(this._collectionChanged);t.currentChanged.removeHandler(this._currentChanged)}t=this._view=asType(e,"ICollectionView",!0);this._update();if(t){t.collectionChanged.addHandler(this._collectionChanged,this);t.currentChanged.addHandler(this._currentChanged,this)}}}get byPage(){return this._byPage}set byPage(e){if(e!=this._byPage){this._byPage=asBoolean(e);this._update()}}get headerFormat(){return this._fmt}set headerFormat(e){if(e!=this._fmt){this._fmt=asString(e);this._update()}}get repeatButtons(){return!this._rptNext.disabled}set repeatButtons(e){this._rptNext.disabled=this._rptPrev.disabled=!asBoolean(e)}_update(){let e=this._view,t=this._byPage,s=e?t?e.pageIndex:e.currentPosition:0,i=e?t?e.pageCount:e.itemCount:0;enable(this._btnFirst,e&&s>0);enable(this._btnPrev,e&&s>0);enable(this._txtCurr,null!=e);enable(this._btnNext,e&&s<i-1);enable(this._btnLast,e&&s<i-1);this._txtCurr.value=format(this._fmt,{current:e?s+1:0,count:e?i:0,currentItem:e?e.currentPosition+1:0,itemCount:e?e.itemCount:0,currentPage:e?e.pageIndex+1:0,pageCount:e?e.pageCount:0})}_currentChanged(){this._update()}_collectionChanged(){this._update()}_click(e){let t=e.target,s=this._view,i=this._byPage;if(s){contains(this._btnFirst,t)?i?s.moveToFirstPage():s.moveCurrentToFirst():contains(this._btnPrev,t)?i?s.moveToPreviousPage():s.moveCurrentToPrevious():contains(this._btnNext,t)?i?s.moveToNextPage():s.moveCurrentToNext():contains(this._btnLast,t)&&(i?s.moveToLastPage():s.moveCurrentToLast());e.preventDefault()}}}CollectionViewNavigator.controlTemplate='<div class="wj-input-group"><span wj-part="btn-first" class="wj-input-group-btn"><button class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-step-backward"></span></button></span><span wj-part="btn-prev" class="wj-input-group-btn"> <button class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-left"></span> </button></span><input wj-part="txt-curr" class="wj-form-control" readonly><span wj-part="btn-next" class="wj-input-group-btn"><button class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-right"></span></button></span><span wj-part="btn-last" class="wj-input-group-btn"><button class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-step-forward"></span></button></span></div>';export class ListBox extends Control{constructor(e,t){super(e,null,!0);this._cv=null;this._itemFormatter=null;this._pathDisplay=new Binding("");this._pathValue=new Binding("");this._pathChecked=new Binding("");this._html=!1;this._shGroups=!1;this._checkedItems=[];this._itemRole="option";this._caseSensitive=!1;this._addMode=!1;this._vThreshold=ListBox._VTHRESH;this._isVirtual=!1;this._children=[];this._clientHeight=-1;this._itemHeight=30;this._itemsAbove=-1;this._itemsBelow=-1;this._eSizer=document.createElement("div");this._ePadTop=document.createElement("div");this._ePadBot=document.createElement("div");this._checking=!1;this._ignoredItemChangedEvents=!1;this._search="";this._fmtItemHandlers=0;this._itemCount=0;this._oldSel=null;this._container=null;this._oldSelectedIndex=-1;this.selectedIndexChanged=new Event;this.itemsChanged=new Event;this.loadingItems=new Event;this.loadedItems=new Event;this.itemChecked=new Event;this.checkedItemsChanged=new Event;this.formatItem=new Event(()=>{this.invalidate()});this.applyTemplate("wj-control wj-content wj-listbox",null,null);let s=this.hostElement;setAttribute(s,"role","listbox",!0);"SELECT"==this._orgTag&&this._initFromSelect(this.hostElement);this.addEventListener(s,"click",this._click.bind(this));this.addEventListener(s,"keydown",this._keydown.bind(this));this.addEventListener(s,"keypress",this._keypress.bind(this));this.addEventListener(s,"wheel",e=>{if(s.scrollHeight>s.offsetHeight&&(e.deltaY<0&&0==s.scrollTop||e.deltaY>0&&s.scrollTop+s.offsetHeight>=s.scrollHeight)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation()}});[this._eSizer,this._ePadTop,this._ePadBot].forEach(e=>{e.tabIndex=-1;setAttribute(e,"aria-hidden",!0);setCss(e,{pointerEvents:"none",opacity:"0"})});this.initialize(t);this._updateViewRange();this.hostElement.addEventListener("scroll",e=>{this._updateViewRange()})}get itemsSource(){return this._items}set itemsSource(e){if(this._items!=e){if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=e;this._cv=asCollectionView(e);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._populateList();this.onItemsChanged();this.onSelectedIndexChanged()}}get collectionView(){return this._cv}get virtualizationThreshold(){return this._vThreshold}set virtualizationThreshold(e){if(e!=this._vThreshold){let t=this._getVirtual();this._vThreshold=asNumber(e,!1,!0);t!=this._getVirtual()&&this._populateList()}}get showGroups(){return this._shGroups}set showGroups(e){if(e!=this._shGroups){this._shGroups=asBoolean(e);this._populateList()}}get isContentHtml(){return this._html}set isContentHtml(e){if(e!=this._html){this._html=asBoolean(e);this._populateList()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(e){if(e!=this._itemFormatter){this._itemFormatter=asFunction(e);this._populateList()}}get displayMemberPath(){return this._pathDisplay.path}set displayMemberPath(e){if(e!=this.displayMemberPath){this._pathDisplay.path=asString(e);this._populateList()}}get selectedValuePath(){return this._pathValue.path}set selectedValuePath(e){this._pathValue.path=asString(e)}get checkedMemberPath(){return this._pathChecked.path}set checkedMemberPath(e){if(e!=this.checkedMemberPath){this._pathChecked.path=asString(e);this._populateList()}}get caseSensitiveSearch(){return this._caseSensitive}set caseSensitiveSearch(e){this._caseSensitive=asBoolean(e)}get itemRole(){return this._itemRole}set itemRole(e){if(e!=this.itemRole){this._itemRole=asString(e);this._populateList()}}getDisplayValue(e){let t=null;if(e>-1&&hasItems(this._cv)){t=this._cv.items[e];this.displayMemberPath&&(t=this._pathDisplay.getValue(t))}let s=null!=t?t.toString():"";this._itemFormatter&&(s=this._itemFormatter(e,s));return s}getDisplayText(e){let t=this._getChild(e);return null!=t?t.textContent:""}isItemEnabled(e){var t=this._getChild(e);return null!=t&&!t.hasAttribute("disabled")&&!hasClass(t,"wj-state-disabled")&&!hasClass(t,"wj-separator")}get selectedIndex(){return this._cv?this._cv.currentPosition:-1}set selectedIndex(e){if(this._cv){this._oldSelectedIndex=this._cv.currentPosition;this._cv.moveCurrentToPosition(asNumber(e))}}get selectedItem(){return this._cv?this._cv.currentItem:null}set selectedItem(e){this._cv&&this._cv.moveCurrentTo(e)}get selectedValue(){let e=this.selectedItem;e&&this.selectedValuePath&&(e=this._pathValue.getValue(e));return e}set selectedValue(e){let t=this._cv,s=t?t.items:null,i=this.selectedValuePath,h=-1;if(s){for(let t=0;t<s.length;t++){let n=s[t],l=i?this._pathValue.getValue(n):n;if(l===e||DateTime.equals(l,e)){h=t;break}if(this.isContentHtml&&isString(l)&&l.indexOf("<")>-1&&toPlainText(l)===e){h=t;break}}this.selectedIndex=h}}get maxHeight(){let e=this.hostElement,t=e?parseFloat(e.style.maxHeight):null;return isNaN(t)?null:t}set maxHeight(e){let t=this.hostElement;if(t){e=asNumber(e,!0);t.style.maxHeight=null==e?"":e+"px"}}showSelection(e=this.containsFocus()){let t=this.hostElement,s=this._children,i=this._getSelectedElement(!1),h=new Rect(0,0,0,0);if(i!=this._oldSel){this._updateItemAttributes(i,!0);this._updateItemAttributes(this._oldSel,!1);this._oldSel=i}i instanceof HTMLElement?h=this._getBoundingClientRect(i):this._children.length>0&&(h=this._getBoundingClientRect(this._getChild(0)));let n=this._getBoundingClientRect(t),l=0;if(this._shGroups){l=this._itemHeight;if(!this._isVirtual){let e=s[0];e.offsetHeight&&hasClass(e,"wj-header")&&(l=e.offsetHeight)}}h.bottom>n.bottom?t.scrollTop+=h.bottom-n.bottom:h.top<n.top+l&&(t.scrollTop-=n.top+l-h.top);this._updateViewRange();i=this._getSelectedElement(!0);if(e){(i&&!contains(i,getActiveElement())?i:t).focus()}t.tabIndex=i?-1:this._orgTabIndex}loadList(){this._populateList()}getItemChecked(e){let t=this._cv.items[e],s=this._pathChecked;if(isObject(t)&&s.path)return s.getValue(t);let i=this._getCheckbox(e);return!!i&&i.checked}setItemChecked(e,t){this._setItemChecked(e,t,!0)}toggleItemChecked(e){this.setItemChecked(e,!this.getItemChecked(e))}get checkedItems(){return this._checkedItems}set checkedItems(e){e=Array.from(new Set(e));let t=asArray(e,!1);if(!this._arrayEquals(t,this._checkedItems)){this._updateCheckedList(t);if(!this._arrayEquals(t,this._checkedItems)){this._checkedItems=t;this.onCheckedItemsChanged()}}}indexOf(e){return(e=closest(e,".wj-listbox-item"))?e[ListBox._DIDX_KEY]:-1}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}onItemsChanged(e){this.itemsChanged.raise(this,e)}onLoadingItems(e){this.loadingItems.raise(this,e)}onLoadedItems(e){this.loadedItems.raise(this,e)}onItemChecked(e){this.itemChecked.raise(this,e)}onCheckedItemsChanged(e){this.checkedItemsChanged.raise(this,e)}onFormatItem(e){this.formatItem.raise(this,e)}refresh(e=!0){super.refresh(e);if(this.hostElement){let e=this._cv?this._cv.items.length:0,t=this.formatItem.handlerCount;if(e!=this._itemCount||t!=this._fmtItemHandlers){this._fmtItemHandlers=t;this._populateList()}else this._updateViewRange()}}_updateCheckedList(e){let t=this._cv,s=this._pathChecked,i=new Map;if(s&&t){let h=t.sourceCollection;if(h&&h.length){isObject(h[0])||(s=null);e.forEach(e=>i.set(e,!0));this._checking=!0;let t=[];h.forEach(e=>{let h=i.has(e);h&&t.push(e);s&&s.setValue(e,h)});this._checking=!1;e=t}t.items.forEach((e,t)=>{this._setItemChecked(t,i.has(e),!1)})}}_getBoundingClientRect(e){if(!e.offsetHeight){let t=this.indexOf(e),s=this.hostElement;if(t>-1&&s){t=this._getElementIndex(t);let e=s.getBoundingClientRect();return new Rect(0,e.top-s.scrollTop+t*this._itemHeight,e.width,this._itemHeight)}}return Rect.fromBoundingRect(e.getBoundingClientRect())}_updateItemAttributes(e,t){if(e){let s=this.checkedMemberPath?this._getCheckbox(this.indexOf(e)):null,i=s?s.checked:null;toggleClass(e,"wj-state-selected",t);setAttribute(e,"aria-selected",this._getAriaSelected(t,i));e.tabIndex=t?this._orgTabIndex:-1}}_getCheckedItems(){let e=this._cv,t=this._pathChecked,s=[];e&&t&&t.path&&(s=e.sourceCollection.filter((s,i)=>{if(e.filter&&!e.filter(s))return!!this._addMode&&t.getValue(s);if(isObject(s))return t.getValue(s);{let t=e.items[i]==s?i:e.items.indexOf(s);return this.getItemChecked(t)}}));return s}_arrayEquals(e,t){if(e==t)return!0;if(!e||!t||e.length!=t.length)return!1;for(let s=0;s<e.length;s++)if(e[s]!==t[s])return!1;return!0}_getChild(e){e=this._getElementIndex(e);return this._children[e]}_getElementIndex(e){if(this._shGroups){let t=this._children;for(let s=0;s<=e&&s<t.length;s++){let i=t[s];hasClass(i,"wj-header")&&e++}}return e}_setItemChecked(e,t,s=!0){let i=this._cv.items[e],h=this._pathChecked,n=!1,l=this.selectedIndex,a=this._checking;if(isObject(i)&&h.path){if(!!h.getValue(i)!=t){let e=tryCast(this._cv,"IEditableCollectionView");n=!0;this._checking=!0;if(e){e.editItem(i);h.setValue(i,t);e.commitEdit()}else{h.setValue(i,t);e.refresh()}this._checking=a}}else if(s){let e=this._checkedItems.indexOf(i);(t&&e<0||!t&&e>=0)&&(n=!0)}let r=this._getCheckbox(e);if(r){r.checked=t;let e=closest(r,".wj-listbox-item");if(e){toggleClass(e,"wj-state-checked",t);setAttribute(e,"aria-selected",!!t||null)}}if(s){if(n){this._checkedItems=this._checkedItemsUpdate(i,t);this.onItemChecked();this.onCheckedItemsChanged()}l!=this.selectedIndex&&this.onSelectedIndexChanged()}return n}_checkedItemsUpdate(e,t){let s=this._cv.sourceCollection,i=this._checkedItems,h=0;if(t){for(var n=0;n<s.length;n++){let t=s[n];if(t===i[h]&&h<i.length)h++;else if(t===e)return i.slice(0,h).concat([e]).concat(i.slice(h))}return i}{let t=i.indexOf(e);return i.slice(0,t).concat(i.slice(t+1))}}_cvCollectionChanged(){if(!this._checking){this._populateList();this.onItemsChanged()}}_cvCurrentChanged(){if(!this._checking){this.showSelection();this._ignoredItemChangedEvents||this.onSelectedIndexChanged()}}_populateList(){let e=this.hostElement,t=this._cv;this._itemCount=t?t.items.length:0;this._isVirtual=this._getVirtual();this._oldSel=null;this._itemsAbove=-1;this._itemsBelow=-1;if(e){let s,i=this.containsFocus();this.onLoadingItems();let h=this._children=[];e.textContent="";if(t){let i,n=0,l=[];if(this._shGroups&&t.groups&&t.groups.length){s={};for(let e=0;e<t.groups.length;e++){let h=t.groups[e];s[n]=h;i=this._createHeaderItem(h);l.push(i);for(let e=0;e<h.items.length;e++,n++){i=this._createItem(n);l.push(i)}}}else for(let e=0;e<t.items.length;e++,n++){i=this._createItem(n);l.push(i)}let a=this._isVirtual?document.createElement("div"):e,r=0;a.innerHTML=l.join("");for(let e=0;e<a.children.length;e++){let s=a.children[e];r==t.currentPosition&&(this._oldSel=s);s[ListBox._DIDX_KEY]=s.className.indexOf("wj-header")<0?r++:-1;h.push(s)}}if(this.formatItem.hasHandlers&&t){let e=0,i=t.items,n=new FormatItemEventArgs(0,null,null);for(let t=0;t<h.length;t++){n._item=h[t];if(this._shGroups&&hasClass(n._item,"wj-header")){n._index=-1;n._data=s[e]}else{n._index=e;n._data=i[e++]}this.onFormatItem(n)}}if(this._isVirtual){let t=this._getCanvasContext(),s=null,i=0;for(let e=0;e<h.length;e++){let n=h[e],l=t.measureText(n.textContent);if(l.width>i){s=n;i=l.width}}if(s){let t=!1,i=e.style.display,n=e.style.position;if(!e.parentElement){t=!0;(this._container||document.body).appendChild(e);setCss(e,{display:"",position:"absolute"})}e.appendChild(s);let l=s.style.whiteSpace;s.style.whiteSpace="nowrap";this._ePadTop.style.width=s.offsetWidth+"px";this._itemHeight=s.offsetHeight||this._itemHeight;s.style.whiteSpace=l;this._eSizer.style.height=h.length*this._itemHeight+"px";e.appendChild(this._eSizer);this._clientHeight=e.clientHeight;removeChild(this._eSizer);if(t){removeChild(e);setCss(e,{display:i,position:n})}removeChild(s)}else this._ePadTop.style.width="";this._updateViewRange()}this.checkedItems=this._getCheckedItems();let n=this._getSelectedElement(!0);if(i){(n||e).focus()}else n&&this.showSelection();e.tabIndex=n?-1:this._orgTabIndex;this.onLoadedItems()}}_getCanvasContext(){let e=document.createElement("canvas").getContext("2d"),t=getComputedStyle(this.hostElement);t.fontSize&&t.fontFamily&&(e.font=t.fontSize+" "+t.fontFamily.split(",")[0]);return e}_getVirtual(){if(this._itemCount<=this._vThreshold)return!1;let e=this.hostElement;if(e){let t=getComputedStyle(e);if(parseInt(t.columnCount)>1||t.display.indexOf("flex")>-1||t.display.indexOf("grid")>-1)return!1}return!0}_getMaxSupportedCssHeight(){let e=265e5;isIE()?e=15e5:isFirefox()&&(e=175e5);return e}_updateViewRange(){let e=this.hostElement,t=this._itemHeight,s=this._children;if(!(e&&e.parentElement&&this._isVirtual&&s))return!1;let i=e.scrollTop;assert(t*s.length<this._getMaxSupportedCssHeight(),`The number of items (${s.length}) exceeds the maximum number of items (${Math.floor(this._getMaxSupportedCssHeight()/t)}) allowed for this browser.`);let h=Math.max(e.clientHeight,this._clientHeight),n=Math.floor(i/t),l=Math.min(s.length,Math.ceil((i+h)/t)-n),a=Math.max(0,s.length-n-l);if(n==this._itemsAbove&&a==this._itemsBelow)return!1;this._itemsAbove=n;this._itemsBelow=a;let r=document.createDocumentFragment(),o=this.containsFocus();this._ePadTop.style.height=n*t+"px";r.appendChild(this._ePadTop);if(this.showGroups&&!hasClass(s[n],"wj-header"))for(let e=n;e>=0;e--)if(hasClass(s[e],"wj-header")){r.appendChild(s[e]);break}for(let e=n;e<=n+l&&e<s.length;e++)r.appendChild(s[e]);this._ePadBot.style.height=a*t+"px";r.appendChild(this._ePadBot);e.textContent="";e.appendChild(r);let d=(n+l+a)*t-e.scrollHeight;this._ePadBot.style.height=this._ePadBot.offsetHeight-d+"px";let c=this._getSelectedElement(!0);if(o){(c||e).focus({preventScroll:!0})}e.tabIndex=c?-1:this._orgTabIndex;return!0}_getSelectedElement(e){let t=this.selectedIndex,s=this._getElementIndex(t),i=s>-1?this._children[s]:null;e&&i&&!i.offsetHeight&&(i=null);return i}_handleResize(){this._updateViewRange()}_createItem(e){let t=this._cv.items[e],s=e==this._cv.currentPosition,i=this.getDisplayValue(e);1!=this._html&&(i=escapeHtml(i));let h=null;if(this.checkedMemberPath){h=!1;isObject(t)?h=!!this._pathChecked.getValue(t):this._checkedItems&&(h=this._checkedItems.indexOf(t)>-1);i='<label><input type="checkbox" tabindex="-1"'+(h?" checked":"")+"><span></span> "+i+"</label>"}let n="wj-listbox-item";s&&(n+=" wj-state-selected");h&&(n+=" wj-state-checked");if(this._html){let e=["wj-separator","wj-state-disabled"];if(i.indexOf(e[0])>-1||i.indexOf(e[1])>-1){let t=createElement(i);e.forEach(e=>{hasClass(t,e)&&(n+=" "+e)})}}return'<div class="'+n+'" role="'+this.itemRole+'" '+(this._getAriaSelected(s,h)?'aria-selected="true" ':"")+'tabindex="'+(s&&!this.isDisabled?this._orgTabIndex:-1)+'">'+i+"</div>"}_getAriaSelected(e,t){return!!(null!=t?t:e)||null}_createHeaderItem(e){return'<div class="wj-listbox-item wj-header wj-state-disabled" role="presentation" tabindex="-1">'+escapeHtml(e.name)+"</div>"}_click(e){if(0==e.button&&!e.defaultPrevented){let t=this.indexOf(e.target);if(t>-1){this.selectedIndex=t;if(this.checkedMemberPath){let s=this._getCheckbox(t),i=closest(s,".wj-listbox-item");if(e.target==s||e.target==i){i.focus({preventScroll:!0});this.setItemChecked(t,s.checked)}}else{closest(e.target,".wj-listbox-item").focus({preventScroll:!0})}}}}_keydown(e){let t=this.selectedIndex;if(!e.defaultPrevented){if(65==e.keyCode&&(e.ctrlKey||e.metaKey)){let t=this.collectionView;if(this.checkedMemberPath&&hasItems(t)){this.checkedItems=this.checkedItems.length!=t.items.length?t.items:[];e.preventDefault();return}}if(!(e.ctrlKey||e.shiftKey||e.altKey||e.metaKey))switch(e.keyCode){case Key.Down:e.preventDefault();this._selectNext();break;case Key.Up:e.preventDefault();this._selectPrev();break;case Key.Home:e.preventDefault();this._selectFirst();break;case Key.End:e.preventDefault();this._selectLast();break;case Key.PageDown:e.preventDefault();this._selectNextPage();break;case Key.PageUp:e.preventDefault();this._selectPrevPage();break;case Key.Space:if(this.checkedMemberPath&&t>-1){let s=this._getCheckbox(t);if(s&&this.isItemEnabled(t)){this.setItemChecked(t,!s.checked);e.preventDefault()}}}}}_keypress(e){if(!e.defaultPrevented&&!(e.target instanceof HTMLInputElement)&&(e.charCode>32||32==e.charCode&&this._search)){e.preventDefault();this._search+=String.fromCharCode(e.charCode);this._toSearch&&clearTimeout(this._toSearch);this._toSearch=setTimeout(()=>{this._toSearch=null;this._search=""},Control._SEARCH_DELAY);let t=this._findNext();if(t<0&&this._search.length>1){this._search=this._search[this._search.length-1];t=this._findNext()}t>-1&&(this.selectedIndex=t)}}_selectNext(){for(let e=this.selectedIndex+1;e<this._children.length;e++)if(this.isItemEnabled(e)){this.selectedIndex=e;return!0}return!1}_selectPrev(){for(let e=this.selectedIndex-1;e>=0;e--)if(this.isItemEnabled(e)){this.selectedIndex=e;return!0}return!1}_selectFirst(){for(let e=0;e<this._children.length;e++)if(this.isItemEnabled(e)){this.selectedIndex=e;return!0}return!1}_selectLast(){for(let e=this._children.length-1;e>=0;e--)if(this.isItemEnabled(e)){this.selectedIndex=e;return!0}return!1}_selectNextPage(){let e=this.hostElement.offsetHeight,t=this._children,s=this._cv?this._cv.items.length:0,i=0;if(e>0)for(let h=this.selectedIndex+1;h<s;h++){let s=t[h].scrollHeight||this._itemHeight;if(i+s>e&&this.isItemEnabled(h)){this.selectedIndex=h;return!0}i+=s}return this._selectLast()}_selectPrevPage(){let e=this.hostElement.offsetHeight,t=this._children,s=0;if(e>0)for(let i=this.selectedIndex-1;i>0;i--){let h=t[i].scrollHeight||this._itemHeight;if(s+h>e&&this.isItemEnabled(i)){this.selectedIndex=i;return!0}s+=h}return this._selectFirst()}_findNext(){if(this.hostElement){let e=this._children.length,t=this.selectedIndex;(t<0||1==this._search.length)&&t++;let s=this._search,i=this.caseSensitiveSearch;i||(s=s.toLowerCase());for(let h=0;h<e;h++){let n=(t+h)%e;if(this.isItemEnabled(n)){let e=this.getDisplayText(n).trim();i||(e=e.toLowerCase());if(0==e.indexOf(s))return n}}}return-1}_getCheckbox(e){let t=this._children;e=this._getElementIndex(e);return this.hostElement&&e>-1&&e<t.length?t[e].querySelector("input[type=checkbox]"):null}_initFromSelect(e){let t=e.children,s=[],i=-1;for(let h=0;h<t.length;h++){let n=t[h];if("OPTION"==n.tagName){n.hasAttribute("selected")&&(i=s.length);n.innerHTML?s.push({hdr:n.innerHTML,val:n.getAttribute("value"),cmdParam:n.getAttribute("cmd-param")}):s.push({hdr:'<div class="wj-separator"></div>'});e.removeChild(n);h--}}if(s){this.displayMemberPath="hdr";this.selectedValuePath="val";this.itemsSource=s;this.selectedIndex=i}}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){super._setTabOrder(e);this.isDisabled||this._updateTabIndex()}_updateTabIndex(){let e=this.hostElement,t=this._getSelectedElement(!0);if(t){t.tabIndex=this.isDisabled?-1:this._orgTabIndex;e.tabIndex=-1}else e.tabIndex=this.isDisabled?-1:this._orgTabIndex}}ListBox._DIDX_KEY="$WJ-DIDX";ListBox._VTHRESH=Number.MAX_VALUE/2;export class FormatItemEventArgs extends EventArgs{constructor(e,t,s){super();this._index=asNumber(e);this._data=t;this._item=asType(s,HTMLElement,!0)}get index(){return this._index}get data(){return this._data}get item(){return this._item}}_addCultureInfo("MultiSelectListBox",{filterPlaceholder:"Filter",selectAll:"Select All"});export class MultiSelectListBox extends Control{constructor(e,t){super(e);this._selectAllLabel=null;this._filterPlaceholder=null;this._filterText="";this._checkOnFilter=!0;this._delay=Control._SEARCH_DELAY;this.checkedItemsChanged=new Event;this.selectedIndexChanged=new Event;let s=this.getTemplate();this.applyTemplate("wj-control wj-content wj-multiselectlistbox",s,{_selectAll:"select-all",_filter:"filter",_lbHost:"list-box"});this._selectAll.style.display="none";this._filter.style.display="none";this._lbx=new ListBox(this._lbHost,{checkedMemberPath:MultiSelectListBox._DEF_CHECKED_PATH,loadedItems:()=>this._updateCheckAllCheckbox(),checkedItemsChanged:e=>this.onCheckedItemsChanged(e),selectedIndexChanged:()=>this.onSelectedIndexChanged()});this._cbSelectAll=this._selectAll.querySelector("input[type=checkbox]");this._spSelectAll=this._selectAll.querySelector("label>span");let i=culture.MultiSelectListBox;setText(this._spSelectAll,i.selectAll);this._filter.placeholder=i.filterPlaceholder;this.initialize(t);this.addEventListener(this._filter,"input",()=>{if(this._filter.value!=this._filterText){this._filterText=this._filter.value;this._toSearch&&clearTimeout(this._toSearch);this._toSearch=setTimeout(()=>{this._toSearch=null;this._applyFilter()},this.delay)}});this.addEventListener(this._cbSelectAll,"click",e=>{let t=this._lbx.collectionView;hasItems(t)&&(this.checkedItems=e.target.checked?t.items:[])});this.addEventListener(this.hostElement,"keydown",e=>{let t=this.showFilterInput?this._filter:null,s=this._lbx;if(t&&e.keyCode==Key.F3){setSelectionRange(t,0,t.value.length);e.preventDefault()}if(getActiveElement()==t){let t=!e.altKey;switch(e.keyCode){case Key.Escape:case Key.F4:t=!1}t&&e.stopPropagation()}if(!s.containsFocus())switch(e.keyCode){case Key.Up:case Key.Down:this._lbx.focus();let t=s.selectedIndex+(e.keyCode==Key.Up?-1:1);s.selectedIndex=Math.max(0,t);e.preventDefault()}},!0);this.hostElement.tabIndex=-1;this._lbx.tabOrder=this._orgTabIndex}get itemsSource(){return this._lbx.itemsSource}set itemsSource(e){this._lbx.itemsSource=e}get collectionView(){return this._lbx.collectionView}get virtualizationThreshold(){return this._lbx.virtualizationThreshold}set virtualizationThreshold(e){this._lbx.virtualizationThreshold=e}get displayMemberPath(){return this._lbx.displayMemberPath}set displayMemberPath(e){this._lbx.displayMemberPath=e}get isContentHtml(){return this._lbx.isContentHtml}set isContentHtml(e){this._lbx.isContentHtml=e}get caseSensitiveSearch(){return this._lbx.caseSensitiveSearch}set caseSensitiveSearch(e){this._lbx.caseSensitiveSearch=e}get delay(){return this._delay}set delay(e){this._delay=asNumber(e,!1,!0)}get showGroups(){return this._lbx.showGroups}set showGroups(e){this._lbx.showGroups=e}get checkOnFilter(){return this._checkOnFilter}set checkOnFilter(e){if(e!=this.checkOnFilter){this._checkOnFilter=asBoolean(e);this.checkedItems=[]}}get selectedIndex(){return this._lbx.selectedIndex}set selectedIndex(e){this._lbx.selectedIndex=e}get listBox(){return this._lbx}get showFilterInput(){return""==this._filter.style.display}set showFilterInput(e){if(e!=this.showFilterInput){this._filter.style.display=asBoolean(e)?"":"none";if(!this.showFilterInput){this._filter.value="";this._applyFilter()}}}get filterInputPlaceholder(){return this._filterPlaceholder}set filterInputPlaceholder(e){if(e!=this._filterPlaceholder){this._filterPlaceholder=asString(e);this.refresh()}}get showSelectAllCheckbox(){return""==this._selectAll.style.display}set showSelectAllCheckbox(e){this._selectAll.style.display=asBoolean(e)?"":"none"}get selectAllLabel(){return this._selectAllLabel}set selectAllLabel(e){if(e!=this._selectAllLabel){this._selectAllLabel=asString(e);this.refresh()}}get checkedMemberPath(){let e=this.listBox.checkedMemberPath;return e!=MultiSelectListBox._DEF_CHECKED_PATH?e:null}set checkedMemberPath(e){e=asString(e);this.listBox.checkedMemberPath=e||MultiSelectListBox._DEF_CHECKED_PATH}get checkedItems(){return this.listBox.checkedItems}set checkedItems(e){this.listBox.checkedItems=asArray(e)}onCheckedItemsChanged(e){this._updateCheckAllCheckbox();this.checkedItemsChanged.raise(this,e);"object"==typeof e._items[0]&&(this.checkedMemberPath||MultiSelectListBox._DEF_CHECKED_PATH)in e._items[0]&&setTimeout(()=>{this._lbx._updateCheckedList(this.checkedItems)},0)}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}refresh(e=!0){super.refresh(e);if(this.hostElement){let e=culture.MultiSelectListBox;this._filter.placeholder=null!=this._filterPlaceholder?this._filterPlaceholder:e.filterPlaceholder;this._spSelectAll&&setText(this._spSelectAll,null!=this._selectAllLabel?this._selectAllLabel:e.selectAll);this._updateCheckAllCheckbox()}}dispose(){this.listBox.dispose();super.dispose()}_applyFilter(){let e=this._lbx,t=e.collectionView,s=this._filter.value,i=s?new RegExp(escapeRegExp(s),e.caseSensitiveSearch?"":"i"):null,h=this.displayMemberPath,n=h?new Binding(h):null,l=this.checkOnFilter?null:this.checkedItems;t.filter=e=>{if(null!=i){if(l&&l.indexOf(e)>-1)return!0;n&&(e=n.getValue(e));this.isContentHtml&&(e=toPlainText(e));return null!=e&&i.test(e.toString())}return!0};e.selectedIndex=Math.max(0,e.selectedIndex);this._checkOnFilter&&(this.checkedItems=i?t.items:[])}_updateCheckAllCheckbox(){let e=this._lbx.collectionView,t=this._cbSelectAll;if(hasItems(e)){let s=e.items.length,i=this.checkedItems.length;setChecked(t,i==s||0!=i&&null);t.disabled=!1}else{setChecked(t,!1);t.checked=!1;t.disabled=!0}}_setIsDisabled(e){super._setIsDisabled(e);this.hostElement.tabIndex=-1;this.isDisabled?this._lbx.tabOrder=-1:this._lbx.tabOrder=this._orgTabIndex}_setTabOrder(e){this._orgTabIndex=e;this._lbx.tabOrder=e}tryForceClearDelayAndFilter(){if(this._toSearch){let e=this._delay;this._filterText=this._filter.value;this._toSearch&&clearTimeout(this._toSearch);this._toSearch=setTimeout(()=>{this._toSearch=null;this._applyFilter()},0);this._delay=e}}onLostFocus(){this.tryForceClearDelayAndFilter();super.onLostFocus()}}MultiSelectListBox._DEF_CHECKED_PATH="$checked";MultiSelectListBox.controlTemplate='<div class="wj-template wj-listbox"><input wj-part="filter" class="wj-form-control" tabindex="-1"><div wj-part="select-all" class="wj-header wj-select-all wj-listbox-item"><label><input type="checkbox" tabindex="-1"> <span></span></label></div><div wj-part="list-box"/></div>';_addCultureInfo("Calendar",{ariaLabels:{calendar:"Calendar",monthView:"Month View",yearView:"Year View",prvMo:"Previous Month",today:"Select Today",nxtMo:"Next Month",prvYr:"Previous Year",currMo:"Current Month",nxtYr:"Next Year"}});export var DateSelectionMode;!function(e){e[e.None=0]="None";e[e.Day=1]="Day";e[e.Month=2]="Month";e[e.Range=3]="Range"}(DateSelectionMode||(DateSelectionMode={}));export var ShowMonthPicker;!function(e){e[e.None=0]="None";e[e.FirstMonth=1]="FirstMonth";e[e.LastMonth=2]="LastMonth";e[e.FirstAndLastMonths=3]="FirstAndLastMonths";e[e.AllMonths=4]="AllMonths";e[e.Outside=5]="Outside"}(ShowMonthPicker||(ShowMonthPicker={}));export class Calendar extends Control{constructor(e,t){super(e);this._yrPicker=!0;this._mtPicker=ShowMonthPicker.FirstMonth;this._wksBefore=0;this._wksAfter=0;this._rngMin=0;this._rngMax=0;this._min=null;this._max=null;this._readOnly=!1;this._handleWheel=!0;this._fdw=null;this._selMode=DateSelectionMode.Day;this._tmYrHidden=0;this._fmtYrMo="y";this._fmtYr="yyyy";this._fmtDayHdr="ddd";this._fmtDay="d ";this._fmtMonths="MMM";this.valueChanged=new Event;this.rangeEndChanged=new Event;this.rangeChanged=new Event;this.displayMonthChanged=new Event;this.formatItem=new Event(()=>{this.invalidate()});this._value=this._rngEnd=DateTime.newDate();this._month=this._getMonth(this._value);this._cals=[this];this._createChildren();this._createYearPicker();let s=this.hostElement,i=this.addEventListener.bind(this);i(s,"keydown",this._keydown.bind(this));i(s,"click",this._click.bind(this));this._rptUp=new _ClickRepeater(this._btnPrv);this._rptDn=new _ClickRepeater(this._btnNxt);this.addEventListener(s,"wheel",e=>{if(this.handleWheel&&!e.defaultPrevented&&!this.isReadOnly&&this.containsFocus()){e.deltaY<0?this._btnPrv.click():this._btnNxt.click();e.preventDefault()}});this.initialize(t);this.refresh(!0)}get value(){return this._value}set value(e){if(e!==this._value){this._clearingRangeEnd=!DateTime.equals(this._value,e);this.rangeEnd=null;this._clearingRangeEnd=!1;e=asDate(e,!0);e=this._clamp(e);if(this._valid(e)||null==e){this.ensureVisible(e||new Date);if(!DateTime.equals(this._value,e)){this._value=e;this.invalidate(!1);this.onValueChanged()}}if(!this.value){let e=this.min,t=this.max,s=this.displayMonth;t&&t<s?this.ensureVisible(t):e&&e>s&&this.ensureVisible(e)}}}get rangeEnd(){return this._rngEnd}set rangeEnd(e){e=asDate(e,!0);if((e=this._clamp(e))&&this._value&&this._rngMode()){e<this._value&&(e=this._value);let t=this._rngMin,s=this._rngMax;if(t&&t>0||s&&s>0){let i=this._value,h=Math.ceil((e.getTime()-i.getTime())/864e5)+1;t&&t>0&&h<t&&(e=DateTime.addDays(i,t-1));s&&s>0&&h>s&&(e=DateTime.addDays(i,s-1))}}if((this._valid(e)||null==e)&&!DateTime.equals(this._rngEnd,e)){this._rngEnd=e;this.ensureVisible(e);this.invalidate(!1);this._clearingRangeEnd||this.onRangeEndChanged()}}get rangeMin(){return this._rngMin}set rangeMin(e){if((e=asNumber(e,!0,!0))!=this._rngMin){this._rngMin=e;this._syncProp(this,"rangeMin");this._rngMode()&&this._rngEnd&&(this.rangeEnd=this._rngEnd)}}get rangeMax(){return this._rngMax}set rangeMax(e){if((e=asNumber(e,!0,!0))!=this._rngMax){this._rngMax=e;this._syncProp(this,"rangeMax");this._rngMode()&&this._rngEnd&&(this.rangeEnd=this._rngEnd)}}get min(){return this._min}set min(e){if((e=asDate(e,!0))!=this.min){this._min=e;this._syncProp(this,"min");this.refresh();!this.value&&e&&e>this.displayMonth&&this.ensureVisible(e)}}get max(){return this._max}set max(e){if((e=asDate(e,!0))!=this.max){this._max=e;this._syncProp(this,"max");this.refresh();!this.value&&e&&e<this.displayMonth&&this.ensureVisible(e)}}get selectionMode(){return this._selMode}set selectionMode(e){let t=DateSelectionMode;if((e=asEnum(e,t))!=this._selMode){this._selMode=e;this._mthMode()&&(this.monthView=!1);this._rngEnd=e==t.Range?this._value:null;this.refresh();this._syncProp(this,"selectionMode")}}get isReadOnly(){return this._readOnly}set isReadOnly(e){this._readOnly=asBoolean(e);toggleClass(this.hostElement,"wj-state-readonly",this.isReadOnly);this._syncProp(this,"isReadOnly")}get handleWheel(){return this._handleWheel}set handleWheel(e){this._handleWheel=asBoolean(e);this._syncProp(this,"handleWheel")}get repeatButtons(){return!this._rptUp.disabled}set repeatButtons(e){this._rptUp.disabled=this._rptDn.disabled=!asBoolean(e);this._syncProp(this,"repeatButtons")}get showYearPicker(){return this._yrPicker}set showYearPicker(e){if(e!=this._yrPicker){this._yrPicker=asBoolean(e);this._syncProp(this,"showYearPicker")}}get showMonthPicker(){return this._mtPicker}set showMonthPicker(e){if(e!=this._mtPicker){let t=ShowMonthPicker;isBoolean(e)&&(e=e?t.FirstMonth:t.None);this._mtPicker=asEnum(e,t);toggleClass(this.hostElement,"wj-btns-outside",this._getShowMonthPicker()==t.Outside);this.refresh();this._syncProp(this,"showMonthPicker")}}get firstDayOfWeek(){return this._fdw}set firstDayOfWeek(e){if(e!=this._fdw){if((e=asNumber(e,!0))&&(e>6||e<0))throw"firstDayOfWeek must be between 0 and 6 (Sunday to Saturday).";this._fdw=e;this.refresh();this._syncProp(this,"firstDayOfWeek")}}get displayMonth(){return this._month}set displayMonth(e){e=asDate(e);e=this._getMonth(e);let t=this._getDisplayMonthRange();t.to&&e>t.to&&(e=t.to);t.from&&e<t.from&&(e=t.from);if(!DateTime.equals(this.displayMonth,e)){this._month=e;this.invalidate(!0);this.onDisplayMonthChanged()}}get monthCount(){let e=this.hostElement;return e?e.querySelectorAll(".wj-calendar").length+1:0}set monthCount(e){let t=this.hostElement;if(e!=this.monthCount&&t){let s=t.querySelectorAll(".wj-calendar");e=asInt(e,!1);assert(e>0,"monthCount must be >= 1.");assert(1==e||!closest(t.parentElement,".wj-calendar"),"Only top-level calendars can set monthCount.");for(let e=0;e<s.length;e++){let t=s[e];removeChild(t);this._getCalendar(t).dispose()}this._cals=[this];for(let s=1;s<e;s++){let e=new Calendar(document.createElement("div"),{itemFormatter:this.itemFormatter,itemValidator:this.itemValidator,formatItem:(e,t)=>this.onFormatItem(t)});e._selMode=this._selMode;e._value=this._value;e._rngEnd=this._rngEnd;for(let t in this)if(!/^(_.*|constructor|displayMonth|monthCount|hostElement|rightToLeft|isUpdating|isTouching)$/.test(t)){let s=this[t];isFunction(s)||s instanceof Event||(e[t]=s)}this._cals.push(e);t.appendChild(e.hostElement)}toggleClass(t,"wj-calendar-multimonth",e>1);this._syncProp(this,"displayMonth")}}get formatYearMonth(){return this._fmtYrMo}set formatYearMonth(e){if(e!=this._fmtYrMo){this._fmtYrMo=asString(e);this._syncProp(this,"formatYearMonth");this.invalidate()}}get formatDayHeaders(){return this._fmtDayHdr}set formatDayHeaders(e){if(e!=this._fmtDayHdr){this._fmtDayHdr=asString(e);this._syncProp(this,"formatDayHeaders");this.invalidate()}}get formatDays(){return this._fmtDay}set formatDays(e){if(e!=this._fmtDay){this._fmtDay=asString(e);this._syncProp(this,"formatDays");this.invalidate()}}get formatYear(){return this._fmtYr}set formatYear(e){if(e!=this._fmtYr){this._fmtYr=asString(e);this._syncProp(this,"formatYear");this.invalidate()}}get formatMonths(){return this._fmtMonths}set formatMonths(e){if(e!=this._fmtMonths){this._fmtMonths=asString(e);this._syncProp(this,"formatMonths");this.invalidate()}}get showHeader(){return"none"!=this._tbHdr.style.display}set showHeader(e){if(e!=this.showHeader){this._tbHdr.style.display=asBoolean(e)?"":"none";this._syncProp(this,"showHeader")}}get monthView(){return"none"!=this._tbMth.style.display}set monthView(e){if(e!=this.monthView){this._tbMth.style.display=e?"":"none";this._tbYr.style.display=e?"none":"";this.refresh();let t=culture.Calendar.ariaLabels;setAriaLabel(this._btnPrv,e?t.prvMo:t.prvYr);setAriaLabel(this._btnTdy,e?t.today:t.currMo);setAriaLabel(this._btnNxt,e?t.nxtMo:t.nxtYr);setAriaLabel(this._btnMth,e?t.monthView:t.yearView);this._syncProp(this,"monthView")}}get weeksBefore(){return this._wksBefore}set weeksBefore(e){if(e!=this._wksBefore){this._wksBefore=Math.floor(asNumber(e,!1,!0));this._syncProp(this,"weeksBefore");this.invalidate()}}get weeksAfter(){return this._wksAfter}set weeksAfter(e){if(e!=this._wksAfter){this._wksAfter=Math.floor(asNumber(e,!1,!0));this._syncProp(this,"weeksAfter");this.invalidate()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(e){if(e!=this._itemFormatter){this._itemFormatter=asFunction(e);this._syncProp(this,"itemFormatter");this.invalidate()}}get itemValidator(){return this._itemValidator}set itemValidator(e){if(e!=this._itemValidator){this._itemValidator=asFunction(e);this._syncProp(this,"itemValidator");this.invalidate()}}hitTest(e){let t=e instanceof MouseEvent?e.target:e instanceof Element?e:null;assert(null!=t,"MouseEvent or Element expected");return t?t[Calendar._DATE_KEY]:null}ensureVisible(e){if(null!=e){let t=this._getCalendars(),s=t.indexOf(this),i=t[0],h=t[t.length-1];e<i.displayMonth?this.displayMonth=DateTime.addMonths(this._getMonth(e),s):e>h.displayMonth&&(this.displayMonth=DateTime.addMonths(this._getMonth(e),s-t.length+1))}}onValueChanged(e){this.valueChanged.raise(this,e);this._syncProp(this,"value")}onRangeEndChanged(e){this.rangeEndChanged.raise(this,e);this._syncProp(this,"rangeEnd");this._value&&this._rngEnd&&this.onRangeChanged(e)}onRangeChanged(e){this.rangeChanged.raise(this,e)}onDisplayMonthChanged(e){this.displayMonthChanged.raise(this,e);this._syncProp(this,"displayMonth")}onFormatItem(e){this.formatItem.raise(this,e)}_containsFocusImpl(e){return super._containsFocusImpl(e)||this._lbYears._containsFocusImpl(e)}dispose(){this._rptUp.element=null;this._rptDn.element=null;this._lbYears.dispose();super.dispose()}refresh(e=!0){let t=this.hostElement,s=this.containsFocus();if(!t)return;super.refresh(e);e&&this._updateContent();this._updateSelection();let i=this._getDisplayMonthRange(),h=this.displayMonth;enable(this._btnPrv,null==i.from||h>i.from);enable(this._btnNxt,null==i.to||h<i.to);if(s){let e=(this.monthView?this._tbMth:this._tbYr).querySelector("td.wj-state-selected")||t;e&&e.focus()}let n=this._getCalendars();n.length>1&&this==n[0]&&n.forEach((t,s)=>{s>0&&t.refresh(e)})}_getShowMonthPicker(){let e=ShowMonthPicker,t=this._getCalendars(),s=t.indexOf(this),i=this.showMonthPicker;switch(i){case e.FirstMonth:case e.Outside:return 0==s?i:0;case e.LastMonth:return s==t.length-1?i:0;case e.FirstAndLastMonths:return 0==s||s==t.length-1?i:0;case e.AllMonths:return i}return 0}_getDisplayMonthRange(){let e={from:null,to:null};if(this.min||this.max){let t=this._getCalendars(),s=t.indexOf(this),i=this._mthMode()?DateTime.addYears:DateTime.addMonths;this.min&&(e.from=i(this._getMonth(this.min),s));this.max&&(e.to=i(this._getMonth(this.max),s-t.length+1))}return e}_getCalendar(e){return Control.getControl(e)}_getCalendars(){let e=closest(this.hostElement,".wj-calendar-multimonth");return(e?this._getCalendar(e):this)._cals}_syncProp(e,t){if(!this._syncing){let s=this._getCalendars();if(s&&s.length>1){let i=e[t],h=this._mthMode()?DateTime.addYears:DateTime.addMonths;"displayMonth"==t&&(i=h(i,-s.indexOf(e)));s[0].deferUpdate(()=>{this._syncing=!0;s.forEach((s,n)=>{if(s!=e){let e=s.displayMonth;s[t]="displayMonth"==t?h(i,n):i;if("value"==t){s.displayMonth=e;this._rngMode()&&(s.rangeEnd=null)}}});this._syncing=!1})}}}_updateContent(){let e=this.displayMonth,t=Globalize.format,s=DateTime,i=this._getShowMonthPicker();setText(this._spMth,t(e,this._fmtYrMo));let h=this._btnMth.querySelector(".wj-glyph-down");h&&(h.style.display=this._mthMode()||!i?"none":"");let n=closest(this._btnTdy,".wj-btn-group");n&&(n.style.display=i?"":"none");let l=null!=this._fdw?this._fdw:Globalize.getFirstDayOfWeek(),a=s.addDays(e,-(e.getDay()-l+7)%7),r=s.monthLast(e),o=this._tbMth.querySelectorAll("td");for(let e=0;e<7&&e<o.length;e++){let i=s.addDays(a,e);setText(o[e],t(i,this._fmtDayHdr))}let d=this._tbMth.querySelectorAll("tr");for(let e=1;e<d.length;e++)removeChild(d[e]);let c=s.addDays(a,-7*this._wksBefore);for(let e=0;e<this._wksBefore;e++)c=this._addWeek(c,"wj-week-before");for(;c<=r;)c=this._addWeek(c);for(let e=0;e<this._wksAfter;e++)c=this._addWeek(c,"wj-week-after");(o=this._tbYr.querySelectorAll("td")).length&&setText(o[0],t(e,this._fmtYr));for(let i=1;i<o.length;i++){c=s.newDate(e.getFullYear(),i-1,1);let h=o[i],n=!this._monthInValidRange(c);h[Calendar._DATE_KEY]=c;setText(h,t(c,this._fmtMonths));toggleClass(h,"wj-state-disabled",n);setAriaLabel(h,Globalize.format(c,"MMMM yyyy"))}}_updateSelection(){let e=Calendar._DATE_KEY,t=DateTime,s=this._tbMth.querySelectorAll("td");for(let i=7;i<s.length;i++){let h=s[i],n=h[e],l=this.value,a=this.rangeEnd,r=this._selMode&&null!=l&&t.sameDate(n,l),o=this._selMode&&null!=l&&t.sameDate(n,a),d=this._selMode&&null!=l&&n>l&&null!=a&&n<=a;toggleClass(h,"wj-state-selected",r);toggleClass(h,"wj-state-multi-selected",d);toggleClass(h,"wj-state-last-selected",o);setAttribute(h,"aria-selected",!!r||null);this._customizeCell(i,n,h)}s=this._tbYr.querySelectorAll("td");for(let t=0;t<s.length;t++){let i=s[t],h=i[e],n=this._sameMonth(h,this.value);toggleClass(i,"wj-state-selected",n);setAttribute(i,"aria-selected",!!n||null)}}_addWeek(e,t){let s=this._createElement("tr",this._tbMth,t),i=DateTime;for(let t=0;t<7;t++){let h=this._createElement("td",s),n=i.addDays(e,t);h[Calendar._DATE_KEY]=n;setText(h,Globalize.format(n,this._fmtDay));setAriaLabel(h,Globalize.format(n,"D"));let l=!1,a=!1,r=n.getDay(),o=n.getMonth()!=this.displayMonth.getMonth();isDate(n)&&DateTime.sameDate(n,this._clamp(n))||(a=!0);isFunction(this.itemValidator)&&(l=!this.itemValidator(n));toggleClass(h,"wj-day-today",i.sameDate(n,i.newDate()));toggleClass(h,"wj-day-weekend",0==r||6==r);toggleClass(h,"wj-day-othermonth",o||!this._inValidRange(n)||a);toggleClass(h,"wj-state-invalid",l)}return i.addDays(e,7)}_customizeCell(e,t,s){isFunction(this.itemFormatter)&&this.itemFormatter(t,s);if(this.formatItem.hasHandlers){let i=new FormatItemEventArgs(e,t,s);this.onFormatItem(i)}}_canChangeValue(){return!this._readOnly&&this._selMode!=DateSelectionMode.None}_valid(e){return!(!isDate(e)||!DateTime.sameDate(e,this._clamp(e)))&&(!isFunction(this.itemValidator)||this.itemValidator(e))}_inValidRange(e){let t=DateTime.fromDateTime;return!(this.min&&e<t(this.min,e))&&!(this.max&&e>t(this.max,e))}_monthInValidRange(e){if(this.min||this.max){let t=e.getFullYear(),s=e.getMonth(),i=DateTime,h=i.newDate(t,s,1),n=i.newDate(t,s+1,0);if(this.min&&this.min>n)return!1;if(this.max&&this.max<h)return!1}return!0}_sameMonth(e,t){return isDate(e)&&isDate(t)&&e.getMonth()==t.getMonth()&&e.getFullYear()==t.getFullYear()}_getValidDate(e,t){if(isDate(e)){let s=e.getFullYear(),i=e.getMonth()+(t?0:1),h=t?1:0,n=DateTime,l=n.newDate(s,i,h),a=t?1:-1;for(let e=0;e<31;e++){if(this._valid(l))return l;l=n.addDays(l,a)}}return null}_clamp(e){if(e){let t=DateTime.fromDateTime;if(this.min){let s=t(this.min,e);e<s&&(e=s)}if(this.max){let s=t(this.max,e);e>s&&(e=s)}}return e}_createChildren(){let e=this.getTemplate();this.applyTemplate("wj-control wj-calendar",e,{_tbHdr:"tbl-header",_btnMth:"btn-month",_spMth:"span-month",_btnPrv:"btn-prev",_btnTdy:"btn-today",_btnNxt:"btn-next",_tbMth:"tbl-month",_tbYr:"tbl-year"});this._tbYr.style.display="none";let t=culture.Calendar.ariaLabels;setAriaLabel(this._tbMth,t.calendar);setAriaLabel(this._tbYr,t.calendar);setAriaLabel(this._btnPrv,t.calendar);setAriaLabel(this._btnMth,t.monthView);setAriaLabel(this._btnPrv,t.prvMo);setAriaLabel(this._btnTdy,t.today);setAriaLabel(this._btnNxt,t.nxtMo);let s=this._createElement("tr",this._tbMth,"wj-header");for(let e=0;e<7;e++)this._createElement("td",s);s=this._createElement("tr",this._tbYr,"wj-header");this._createElement("td",s).setAttribute("colspan","4");for(let e=0;e<3;e++){s=this._createElement("tr",this._tbYr);for(let e=0;e<4;e++)this._createElement("td",s)}}_createYearPicker(){let e=this.hostElement,t=this._createElement("div",null,"wj-dropdown-panel wj-yearpicker");t.tabIndex=this._orgTabIndex;this._lbYears=new ListBox(t,{lostFocus:e=>{hidePopup(t);this._tmYrHidden=Date.now();this.removeEventListener(window,"touchstart");if(e.selectedIndex>-1){let t=DateTime.clone(this.displayMonth);t.setFullYear(e.selectedIndex+e.itemsSource[0]);this.displayMonth=t}}});this.addEventListener(t,"keydown",t=>{switch(t.keyCode){case Key.Enter:e.focus();break;case Key.Escape:this._lbYears.selectedIndex=-1;e.focus()}t.defaultPrevented&&t.stopPropagation()});this.addEventListener(t,"click",t=>{e.focus()})}_createElement(e,t,s){let i=document.createElement(e);s&&addClass(i,s);t&&t.appendChild(i);return i}_click(e){if(!e.defaultPrevented&&0==e.button){let l=!1,a=e.target;if(contains(this._btnMth,a)&&!this._mthMode()&&this._getShowMonthPicker()){this.monthView=!this.monthView;l=!0}else if(contains(this._btnPrv,a)){this._navigate(-1);l=!0}else if(contains(this._btnNxt,a)){this._navigate(1);l=!0}else if(contains(this._btnTdy,a)){this._navigate(0);l=!0}if(a&&!l&&this._yrPicker&&contains(this._tbYr,a)&&closest(a,".wj-header")){if(Date.now()-this._tmYrHidden<600){e.preventDefault();return}for(var t=this.displayMonth.getFullYear(),s=this.min?this.min.getFullYear():t-100,i=this.max?this.max.getFullYear():t+100,h=[],n=s;n<=i;n++)h.push(n);let l=this._lbYears,r=l.hostElement,o=closest(a,".wj-header"),d=this.hostElement,c=closest(d,".wj-inputdate-dropdown")||d;l.itemsSource=h;l.selectedIndex=t-h[0];setAttribute(r,"dir",this.rightToLeft?"rtl":null);setCss(r,{minWidth:"",width:o.offsetWidth});showPopup(r,o,!1,!1,c);requestAnimationFrame(()=>{l.showSelection(!0)});this.addEventListener(window,"touchstart",e=>{if(!contains(r,e.target)){hidePopup(r);this._tmYrHidden=Date.now();this.removeEventListener(window,"touchstart")}});e.preventDefault();return}if(a&&!l){let e=closest(a,"td");if(e){let t=this.hitTest(e),s=DateTime.fromDateTime;if(this.monthView){if(t&&this._canChangeValue()){let e=s(t,this._value);this._inValidRange(e)&&this._valid(e)&&(this._rngMode()&&this.value&&!this.rangeEnd&&e>=this.value?this.rangeEnd=e:this.value=e);l=!0}}else if(t){this.displayMonth=t;if(this._mthMode()){if(this._canChangeValue()){let e=s(this.displayMonth,this.value);this._inValidRange(e)&&(this.value=e)}}else this.monthView=!0;l=!0}}}if(l){e.preventDefault();this.focus()}}}_keydown(e){if(e.defaultPrevented)return;if(e.altKey)switch(e.keyCode){case Key.Up:case Key.Down:return;case Key.End:this._navigate(0);e.preventDefault();return}if(e.ctrlKey||e.metaKey||e.shiftKey&&!this._rngMode())return;let t=this._getKeyCode(e),s=0,i=0,h=!0;if(this.monthView)switch(t){case Key.Left:s=-1;break;case Key.Right:s=1;break;case Key.Up:s=-7;break;case Key.Down:s=7;break;case Key.PageDown:i=e.altKey?12:1;break;case Key.PageUp:i=e.altKey?-12:-1;break;case Key.Home:case Key.End:if(this._canChangeValue()&&!e.shiftKey){let e=this.value||this.displayMonth,s=this._getValidDate(e,t==Key.Home);if(s){this.value=DateTime.fromDateTime(s,this.value);this._rngEnd=null}}break;default:h=!1}else switch(t){case Key.Left:i=-1;break;case Key.Right:i=1;break;case Key.Up:i=-4;break;case Key.Down:i=4;break;case Key.PageDown:i=e.altKey?120:12;break;case Key.PageUp:i=e.altKey?-120:-12;break;case Key.Home:i=this.value?-this.value.getMonth():0;break;case Key.End:i=this.value?11-this.value.getMonth():0;break;case Key.Enter:this._mthMode()?h=!1:this.monthView=!0;break;default:h=!1}if(this._canChangeValue()&&(s||i)){let t=e.shiftKey&&null!=this.rangeEnd?this.rangeEnd:this.value,h=DateTime;if(t){t=h.addDays(t,s);t=h.addMonths(t,i)}else t=this._getValidDate(new Date,!0);if(i&&!this._valid(t)){let e=t.getMonth();for(let s=1;s<31&&!this._valid(t);s++){let i=h.addDays(t,+s),n=h.addDays(t,-s);this._valid(i)&&i.getMonth()==e?t=i:this._valid(n)&&n.getMonth()==e&&(t=n)}}for(let e=0;e<31&&!this._valid(t);e++)t=h.addDays(t,s>0||i>0?1:-1);e.shiftKey&&t>this.value?this.rangeEnd=t:this.value=t}h&&e.preventDefault()}_getMonth(e){let t=DateTime;e=e||t.newDate();return t.newDate(e.getFullYear(),e.getMonth(),1)}_mthMode(){return this.selectionMode==DateSelectionMode.Month}_rngMode(){return this.selectionMode==DateSelectionMode.Range}_navigate(e){let t=this.monthView,s=this.displayMonth,i=DateTime;switch(e){case 0:let e=i.newDate();this._canChangeValue()&&(this.value=t?i.fromDateTime(e,this.value):this._getMonth(e));s=this._getMonth(e);break;case 1:s=i.addMonths(s,t?1:12);break;case-1:s=i.addMonths(s,t?-1:-12)}this.displayMonth=s}_setTabOrder(e){super._setTabOrder(e);this._lbYears.tabOrder=this._orgTabIndex}}Calendar._DATE_KEY="$WJ-DATE";Calendar.controlTemplate='<div class="wj-content wj-calendar-outer"><div wj-part="tbl-header" class="wj-calendar-header"><div wj-part="btn-month" class="wj-month-select" role="button"><span wj-part="span-month"></span> <span class="wj-glyph-down"></span></div><div class="wj-btn-group"><button wj-part="btn-prev" class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-left"></span></button><button wj-part="btn-today" class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-circle"></span></button><button wj-part="btn-next" class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-right"></span></button></div></div><table wj-part="tbl-month" class="wj-calendar-month" role="grid"></table><table wj-part="tbl-year" class="wj-calendar-year" role="grid"></table></div>';_addCultureInfo("DropDown",{ariaLabels:{tgl:"Toggle Dropdown"}});export var ClickAction;!function(e){e[e.Select=0]="Select";e[e.Open=1]="Open";e[e.Toggle=2]="Toggle"}(ClickAction||(ClickAction={}));export class DropDown extends Control{constructor(e,t){super(e);this._clickAction=ClickAction.Select;this._showBtn=!0;this._autoExpand=!0;this._animate=!1;this._internalSettingText=!1;this._oldText="";this.textChanged=new Event;this.isDroppedDownChanging=new Event;this.isDroppedDownChanged=new Event;let s,i=this.getTemplate();this.applyTemplate("wj-control wj-content wj-dropdown",i,{_tbx:"input",_btn:"btn",_dropDown:"dropdown"},"input");this.hostElement&&this.hostElement.id&&(s=this.hostElement.id);s&&this._dropDown&&this._dropDown.setAttribute("dropdown-id",s);this._dropDown.style.display="none";let h=culture.DropDown.ariaLabels;setAriaLabel(this._btn.querySelector("button"),h.tgl);let n=this._elRef=this._tbx;disableAutoComplete(n);this._createDropDown();this._updateBtn();let l=this.hostElement;addClass(l,"wj-state-collapsed");this.addEventListener(window,"resize",()=>{this.isDroppedDown&&this.invalidate()});let a=this.dropDown,r=this.addEventListener.bind(this),o=this._updateFocusState.bind(this);r(a,"blur",o,!0);r(a,"focus",o);let d=this._keydown.bind(this);r(l,"keydown",d);r(a,"keydown",d);let c=this._keypress.bind(this);r(l,"keypress",c,!0);r(a,"keypress",c,!0);r(n,"input",this._input.bind(this));r(n,"blur",()=>{this._commitText(!0)},!0);r(n,"click",()=>{this._autoExpand&&this._expandSelection()});r(n,"mousedown",e=>{switch(this._clickAction){case ClickAction.Open:if(!this.isDroppedDown){e.preventDefault();this.focus();this.isDroppedDown=!0}break;case ClickAction.Toggle:e.preventDefault();this.focus();this.isDroppedDown=!this.isDroppedDown}});r(this._btn,"mousedown",e=>{this._btnclick(e)});removeChild(a);isIE()&&this._elRef==this._tbx&&r(l,"mouseup",e=>{if(!e.defaultPrevented&&0==e.button&&hasClass(e.target,"wj-btn")){let t=getActiveElement();t&&t!=e.target&&setTimeout(()=>{t.focus()})}});isIE9()&&r(n,"keyup",()=>{this._setText(this.text,!1)});r(a,"click",this._dropDownClick.bind(this))}get text(){return this._tbx.value}set text(e){if(e!=this.text){this._setText(e,!0);this._commitText()}}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(e){this._tbx.type=asString(e)}get isReadOnly(){return this._tbx.readOnly}set isReadOnly(e){this._tbx.readOnly=asBoolean(e);toggleClass(this.hostElement,"wj-state-readonly",this.isReadOnly);this.isReadOnly&&this._toogleDropDown(!1)}get isRequired(){return this._tbx.required}set isRequired(e){this._tbx.required=asBoolean("boolean"==typeof e?e:this.isRequired)}get placeholder(){return this._tbx.placeholder}set placeholder(e){this._tbx.placeholder=e}get clickAction(){return this._clickAction}set clickAction(e){this._clickAction=asEnum(e,ClickAction)}get isDroppedDown(){let e=this._dropDown;return e&&"none"!=e.style.display}set isDroppedDown(e){let t=this.hostElement,s=this._dropDown,i=this.containsFocus();if(t&&s){e=asBoolean(e)&&!this.isDisabled&&!this.isReadOnly&&t.offsetWidth>0;this.isDroppedDown&&!e&&this.isDisabled&&(e=this.isDroppedDown);if(e!=this.isDroppedDown&&this.onIsDroppedDownChanging(new CancelEventArgs)){this._toogleDropDown(e);i&&(this.isTouching&&this.showDropDownButton?t.focus():this.selectAll());this._updateFocusState();toggleClass(t,"wj-state-collapsed",!this.isDroppedDown);this.onIsDroppedDownChanged()}}}_toogleDropDown(e){let t=this.hostElement,s=this._dropDown;if(e){this._minWidthDropdown=s.style.minWidth;s.style.display="";this._updateDropDown();this.addEventListener(window,"touchstart",e=>{let s=Control._touching;for(let s=e.target;s;){if(s==t)return;s=s[Control._OWNR_KEY]||s.parentNode}Control._touching=!0;this.isDroppedDown=!1;Control._touching=s})}else{this.removeEventListener(window,"touchstart");hidePopup(s);s.style.minWidth=this._minWidthDropdown}}get dropDown(){return this._dropDown}get dropDownCssClass(){return this._cssClass}set dropDownCssClass(e){if(e!=this._cssClass){removeClass(this._dropDown,this._cssClass);this._cssClass=asString(e);addClass(this._dropDown,this._cssClass)}}get showDropDownButton(){return this._showBtn}set showDropDownButton(e){this._showBtn=asBoolean(e);this._updateBtn()}get autoExpandSelection(){return this._autoExpand}set autoExpandSelection(e){this._autoExpand=asBoolean(e)}get isAnimated(){return this._animate}set isAnimated(e){this._animate=asBoolean(e)}selectAll(){let e=this._tbx;this._elRef==e&&setSelectionRange(e,0,this.text.length);this.containsFocus()||this.focus()}onTextChanged(e){this.textChanged.raise(this,e);this._updateState()}onIsDroppedDownChanging(e){this.isDroppedDownChanging.raise(this,e);return!e.cancel}onIsDroppedDownChanged(e){this.isDroppedDownChanged.raise(this,e)}onGotFocus(e){this.isTouching||contains(this._dropDown,getActiveElement())||this.selectAll();super.onGotFocus(e)}onLostFocus(e){this._commitText();this.isDroppedDown=!1;super.onLostFocus(e)}_containsFocusImpl(e){return super._containsFocusImpl(e)||this.isDroppedDown&&contains(this._dropDown,e)}dispose(){this.isDroppedDown=!1;let e=this._dropDown;if(e){this._dropDown=null;removeChild(e);let t=Control.getControl(e);t&&t.dispose()}super.dispose()}refresh(e=!0){super.refresh(e);let t=this.hostElement;if(t&&t.offsetHeight&&this.isDroppedDown){let e=getActiveElement();this.isAnimated&&""!=this._dropDown.style.opacity||showPopup(this._dropDown,t,!1,!1,null==this.dropDownCssClass);e instanceof HTMLElement&&e!=getActiveElement()&&e.focus()}}_handleResize(){this.isDroppedDown&&this.refresh()}_dropDownClick(e){e.stopPropagation()}_expandSelection(){let e=this._tbx,t=e.value,s=e.selectionStart,i=e.selectionEnd;if(t&&s==i){let h=this._getCharType(t,s);if(h>-1){for(;i<t.length&&this._getCharType(t,i)==h;i++);for(;s>0&&this._getCharType(t,s-1)==h;s--);s!=i&&setSelectionRange(e,s,i)}}}_getCharType(e,t){let s=e[t];return s>="0"&&s<="9"?0:s>="a"&&s<="z"||s>="A"&&s<="Z"?1:-1}_keydown(e){if(!e.defaultPrevented&&!this._isHiddenEditor()){switch(e.keyCode){case Key.Tab:case Key.Escape:case Key.Enter:if(this.isDroppedDown){this.isDroppedDown=!1;e.keyCode==Key.Tab||this.containsFocus()||this.focus();e.preventDefault()}break;case Key.F4:case Key.Up:case Key.Down:if(e.keyCode==Key.F4||e.altKey){let t=this.hostElement;if(t&&t.offsetHeight){this.isDroppedDown=!this.isDroppedDown;e.preventDefault()}}}if(!e.defaultPrevented&&e.keyCode==Key.Escape&&isIE()){let t=this._tbx;if(e.target==t){let e=t.value;t.value=e+" ";t.value=e}}}}_isHiddenEditor(){return hasClass(this._tbx,"wj-grid-ime")}_keypress(e){"AltLeft"!=e.code&&"AltRight"!=e.code||e.preventDefault()}_input(e){this._setText(this.text,!1)}_btnclick(e){if(!e.defaultPrevented&&0==e.button){e.preventDefault();this.isTouching?this._containsFocus()||this.hostElement.focus():this.focus();this.isDroppedDown=!this.isDroppedDown}}_setText(e,t,s,i){let h=!1;if((e=(e||"").toString())!=this._tbx.value){this._tbx.value=e;if(s||!e){this.onTextChanged();h=!0}}if(e!=this._oldText){this._oldText=e;this._internalSettingText||h||this.onTextChanged()}i&&(this._tbx.value=this._tbx.value.trim());this._updateState()}_updateBtn(){this._btn.style.display=this._showBtn?"":"none"}_createDropDown(){}_commitText(e){}_updateDropDown(){if(this.isDroppedDown){this._commitText();let e=this.dropDown;setAttribute(e,"dir",this.rightToLeft?"rtl":null);showPopup(e,this.hostElement,!1,this._animate,null==this.dropDownCssClass)}}}DropDown.controlTemplate='<div class="wj-template"><div class="wj-input"><div class="wj-input-group wj-input-btn-visible"><input wj-part="input" type="text" class="wj-form-control"><span wj-part="btn" class="wj-input-group-btn"><button class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-down"></span></button></span></div></div><div wj-part="dropdown" class="wj-content wj-dropdown-panel"></div></div>';export var PopupTrigger;!function(e){e[e.None=0]="None";e[e.ClickOwner=1]="ClickOwner";e[e.ClickPopup=2]="ClickPopup";e[e.Click=3]="Click";e[e.BlurOwner=4]="BlurOwner";e[e.BlurPopup=8]="BlurPopup";e[e.Blur=12]="Blur";e[e.ClickOrBlur=15]="ClickOrBlur";e[e.DownOwner=16]="DownOwner";e[e.DownPopup=32]="DownPopup";e[e.Down=48]="Down";e[e.EnterOwner=64]="EnterOwner";e[e.EnterPopup=128]="EnterPopup";e[e.Enter=192]="Enter";e[e.LeaveOwner=256]="LeaveOwner";e[e.LeavePopup=512]="LeavePopup";e[e.Leave=768]="Leave"}(PopupTrigger||(PopupTrigger={}));var _Edges;!function(e){e[e.None=0]="None";e[e.Left=1]="Left";e[e.Top=2]="Top";e[e.Right=4]="Right";e[e.Bottom=8]="Bottom";e[e.LeftTop=3]="LeftTop";e[e.RightTop=6]="RightTop";e[e.RightBottom=12]="RightBottom";e[e.LeftBottom=9]="LeftBottom"}(_Edges||(_Edges={}));export class Popup extends Control{constructor(e,t){super(e);this._owner=null;this._modal=!1;this._position=PopupPosition.BelowLeft;this._showTrigger=PopupTrigger.ClickOwner;this._hideTrigger=PopupTrigger.Blur;this._hideAnim=[];this._fadeIn=!0;this._fadeOut=!0;this._removeOnHide=!0;this._draggable=!1;this._resizable=!1;this._result=null;this._resultEnter=null;this._resultSubmit=null;this._callback=null;this._visible=!1;this._ownerClickBnd=this._ownerClick.bind(this);this._ownerDownBnd=this._ownerDown.bind(this);this._ownerBlurBnd=this._ownerBlur.bind(this);this._ownerEnterBnd=this._ownerEnter.bind(this);this._ownerLeaveBnd=this._ownerLeave.bind(this);this._mousedownBnd=this._mousedown.bind(this);this._mousemoveBnd=this._mousemove.bind(this);this._mousedragBnd=this._mousedrag.bind(this);this._mouseupBnd=this._mouseup.bind(this);this._hideBnd=this.hide.bind(this);this._lastShow=0;this.showing=new Event;this.shown=new Event;this.hiding=new Event;this.hidden=new Event;this.resizing=new Event;this.resized=new Event;this.dragging=new Event;this.dragged=new Event;this.sizeChanging=new Event;this.sizeChanged=new Event;this.positionChanging=new Event;this.positionChanged=new Event;let s=this.hostElement;addClass(s,"wj-control wj-content wj-popup");s.getAttribute("tabindex")||(s.tabIndex=0);hidePopup(s,!1);let i=this.addEventListener.bind(this);i(s,"compositionstart",()=>{this._composing=!0});i(s,"compositionend",()=>{this._composing=!1});i(window,"resize",()=>{!this.isVisible||this._dragged||this.isTouching||this.invalidate()});i(s,"keydown",e=>{if(!e.defaultPrevented){if(e.keyCode==Key.Escape&&!this._composing){e.preventDefault();this.hide()}if(e.keyCode==Key.Enter&&!this._composing){let t=this.dialogResultEnter;if(t){e.preventDefault();this._validateAndHide(t)}}if(e.keyCode==Key.Tab&&this.modal){e.preventDefault();moveFocus(s,e.shiftKey?-1:1)}}});i(s,"click",e=>{let t=e.target;if(t instanceof HTMLElement){if(t instanceof HTMLButtonElement&&"submit"==t.type){let t=this.hostElement,s=this.dialogResultSubmit;if(t instanceof HTMLFormElement&&s&&t.reportValidity()){e.preventDefault();this.hide(s)}}let s=t.className.match(/\bwj-hide[\S]*\b/);if(s&&s.length>0){e.preventDefault();e.stopPropagation();this.hide(s[0])}}});let h=this._toggle.bind(this),n=PopupTrigger;this.addEventListener(s,"click",e=>{this._ignoreClick||h(e,n.ClickPopup)},!0);this.addEventListener(s,"mousedown",e=>{this._ignoreClick=!1;h(e,n.DownPopup)},!0);this.addEventListener(s,"mouseenter",e=>{e.target==s&&h(e,n.EnterPopup)},!0);this.addEventListener(s,"mouseleave",e=>{e.target==s&&h(e,n.LeavePopup)},!0);this.addEventListener(s,"blur",e=>{this.containsFocus()||h(e,n.BlurPopup)},!0);i(document,"wheel",e=>{if(this.isVisible&&this._modal){for(let t=e.target;t&&t!=document.body;t=t.parentElement)if(t.scrollHeight>t.clientHeight)return;e.preventDefault()}});this.initialize(t)}get owner(){return this._owner}set owner(e){let t=this._owner;if(t){this.removeEventListener(t,"click");this.removeEventListener(t,"mousedown");this.removeEventListener(t,"mouseenter");this.removeEventListener(t,"mouseleave");this.removeEventListener(t,"blur")}if(t=this._owner=null!=e?getElement(e):null){this.addEventListener(t,"click",this._ownerClickBnd,!0);this.addEventListener(t,"mousedown",this._ownerDownBnd,!0);this.addEventListener(t,"mouseenter",this._ownerEnterBnd,!0);this.addEventListener(t,"mouseleave",this._ownerLeaveBnd,!0);this.addEventListener(t,"blur",this._ownerBlurBnd,!0)}}get position(){return this._position}set position(e){this._position=asEnum(e,PopupPosition)}get content(){return this.hostElement.firstElementChild}set content(e){if(e!=this.content){this.hostElement.innerHTML="";e instanceof HTMLElement&&this.hostElement.appendChild(e)}}get showTrigger(){return this._showTrigger}set showTrigger(e){this._showTrigger=asEnum(e,PopupTrigger)}get hideTrigger(){return this._hideTrigger}set hideTrigger(e){this._hideTrigger=asEnum(e,PopupTrigger)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=asBoolean(e)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=asBoolean(e)}get removeOnHide(){return this._removeOnHide}set removeOnHide(e){if((e=asBoolean(e))!=this.removeOnHide){this._removeOnHide=e;if(!this.isVisible){let t=this.hostElement;if(e)removeChild(t);else if(t&&document.body){t.style.display="none";document.body.appendChild(t)}}}}get modal(){return this._modal}set modal(e){this._modal=asBoolean(e)}get isDraggable(){return this._draggable}set isDraggable(e){this._draggable=asBoolean(e)}get isResizable(){return this._resizable}set isResizable(e){this._resizable=asBoolean(e)}get dialogResult(){return this._result}set dialogResult(e){this._result=e}get dialogResultEnter(){return this._resultEnter}set dialogResultEnter(e){this._resultEnter=e}get dialogResultSubmit(){return this._resultSubmit}set dialogResultSubmit(e){this._resultSubmit=asString(e)}get isVisible(){let e=this.hostElement;return this._visible&&null!=e&&e.offsetHeight>0}show(e,t){this._lastShow=Date.now();if(!this.isVisible){let s=this.hostElement;this.dialogResult=null;this._callback=null;this._oldFocus=null;this._myFocus=null;this._hideAnim.forEach(e=>{clearInterval(e)});if(this._hideAnim.length>0){this._hideAnim.length=0;if(this._bkDrop){hidePopup(this._bkDrop,this.removeOnHide);this._bkDrop.style.opacity=""}hidePopup(s,this.removeOnHide);s.style.opacity=""}let i=new CancelEventArgs;if(this.onShowing(i)){null!=e&&(this.modal=asBoolean(e));null!=t&&(this._callback=asFunction(t));this._oldFocus=getActiveElement();showPopup(s,this._owner,this._position,this._fadeIn,!1,this._hideBnd);this._modal&&this._showBackdrop();this._composing=!1;this._visible=!0;this.onShown(i);this._clearTimeouts();if(this.modal){this.addEventListener(window,"focus",()=>{if(!this.containsFocus()){let e=this._myFocus;e&&e.offsetHeight?e.focus():moveFocus(s,0)}});this.addEventListener(s,"focusin",()=>{let e=getActiveElement();e&&contains(s,e)&&(e.tabIndex>-1||!this._myFocus)&&(this._myFocus=e)})}this._resized=this._dragged=this._ignoreClick=!1;this._handleDragResize(!0);this.addEventListener(window,"touchstart",e=>{this._hideTrigger&PopupTrigger.Blur&&!contains(s,e.target,!0)&&this.hide()});setTimeout(()=>{this.addEventListener(window,"click",e=>{this._hideTrigger&PopupTrigger.BlurPopup&&this.isDisabled&&!contains(s,e.target,!0)&&this.hide()})});setTimeout(()=>{if(!this.isDisabled&&!this.containsFocus()&&!this.isTouching){let e=s.querySelector("[autofocus]");if(e&&e.clientHeight>0&&!e.disabled&&e.tabIndex>-1&&!closest(e,"[disabled],.wj-state-disabled")){e.focus();isFunction(e.select)&&e.select()}else moveFocus(s,0)}if(!this.isDisabled&&!this.containsFocus()){s.tabIndex=0;s.focus()}},100)}}}hide(e){this.removeEventListener(window,"touchstart");this.removeEventListener(window,"click");if(this.isVisible){isUndefined(e)||(this.dialogResult=e);let t=new CancelEventArgs,s=this.hostElement;if(this.onHiding(t)){this._handleDragResize(!1);let e=this.containsFocus()?this._oldFocus:null,i=s.querySelectorAll(".wj-control.wj-dropdown");for(let e=0;e<i.length;e++){let t=Control.getControl(i[e]);t instanceof DropDown&&(t.isDroppedDown=!1)}let h=this.removeOnHide,n=this.fadeOut;setTimeout(()=>{this._updateState();this.onHidden(t);this._callback&&this._callback(this);if(this.hideTrigger&PopupTrigger.LeavePopup){let e=Control.getControl(closest(this.owner,".wj-popup"));if(e instanceof Popup&&0!=(e.hideTrigger&PopupTrigger.Leave)){let t=Popup._evtHover,s=t?document.elementFromPoint(t.clientX,t.clientY):null,i=Control.getControl(closest(s,".wj-popup"));i instanceof Popup&&!i.isVisible&&(s=null);s&&contains(e.hostElement,s,!0)||e.hide()}}},Control._FOCUS_INTERVAL+50);this._bkDrop&&this._hideAnim.push(hidePopup(this._bkDrop,h,n));this._hideAnim.push(hidePopup(s,h,n));this._visible=!1;this._oldFocus=null;this._myFocus=null;this.removeEventListener(window,"focus");this.removeEventListener(s,"focusin");this.containsFocus()&&getActiveElement().blur();this._clearTimeouts();!this.isVisible&&e&&e.offsetHeight&&e.focus()}}}onShowing(e){this.showing.raise(this,e);return!e.cancel}onShown(e){this.shown.raise(this,e)}onHiding(e){this.hiding.raise(this,e);return!e.cancel}onHidden(e){this._wasVisible=!1;this.hidden.raise(this,e)}onResizing(e){this.resizing.raise(this,e);return!e.cancel}onResized(e){this.resized.raise(this,e)}onDragging(e){this.dragging.raise(this,e);return!e.cancel}onDragged(e){this.dragged.raise(this,e)}onSizeChanging(e){this.sizeChanging.raise(this,e);return!e.cancel}onSizeChanged(e){this.sizeChanged.raise(this,e)}onPositionChanging(e){this.positionChanging.raise(this,e);return!e.cancel}onPositionChanged(e){this.positionChanged.raise(this,e)}onLostFocus(e){super.onLostFocus(e);if(this._hideTrigger&PopupTrigger.BlurPopup&&!this.containsFocus()){let e=document.createEvent("Event");e.initEvent("blur",!0,!0);this._toggle(e,PopupTrigger.BlurPopup)}}dispose(){this.owner=null;super.dispose()}refresh(e=!0){let t=this.hostElement;super.refresh(e);if(this.isVisible&&!this._refreshing&&t){this._refreshing=!0;let e=getActiveElement(),s=this._owner?this._owner.getBoundingClientRect():null,i=[],h=t.querySelectorAll(".wj-dropdown");for(let e=0;e<h.length;e++){let t=Control.getControl(h[e]);if(t instanceof DropDown&&t.isDroppedDown){i.push(t);t.dropDown.style.display="none"}}showPopup(t,s,this._position);i.forEach(e=>{e.dropDown.style.display="";e._updateDropDown()});this._modal&&e instanceof HTMLElement&&e!=getActiveElement()&&e.focus();this._refreshing=!1}}_clearTimeouts(){if(this._toShow){clearTimeout(this._toShow);this._toShow=null}if(this._toHideLeave){clearTimeout(this._toHideLeave);this._toHideLeave=null}if(this._toHideBlur){clearTimeout(this._toHideBlur);this._toHideBlur=null}}_handleDragResize(e){let t=this.hostElement,s=this._draggable?this._getHeaderElement():null,i=this.addEventListener.bind(this),h=this.removeEventListener.bind(this),n=this._mousemoveBnd,l=this._mousedownBnd;if(e){i(t,"mousemove",n);i(t,"mousedown",l);i(t,"touchstart",l);s&&(s.style.touchAction="none")}else{this._mousedownEvt=null;this._rcBounds=null;h(t,"mousemove",n);h(t,"mousedown",l);h(t,"touchstart",l);h(document,"mousemove",this._mousedragBnd);h(document,"mouseup",this._mouseupBnd);s&&(s.style.touchAction="")}}_mousemove(e){if(!this._mousedownEvt){let t=this.hostElement,s=this._getEdges(t,e),i="",h=_Edges;this._edges=s;this._resizable&&(s==h.LeftTop||s==h.RightBottom?i="nwse-resize":s==h.LeftBottom||s==h.RightTop?i="nesw-resize":s==h.Left||s==h.Right?i="ew-resize":s!=h.Top&&s!=h.Bottom||(i="ns-resize"));this._draggable&&!i&&this._getClosestHeader(e.target)&&(i="move");t.style.cursor=i}}_mousedown(e){if(!e.defaultPrevented){let t=e.touches&&e.touches.length>0?e.touches[0]:e;this._edges=this._getEdges(this.hostElement,t);if(this._edges||this._draggable&&this._getClosestHeader(e.target)){let e=new CancelEventArgs;if(this._edges?this.onResizing(e):this.onDragging(e)){this._mousedownEvt=t;this._rcBounds=this.hostElement.getBoundingClientRect();let e=this.addEventListener.bind(this),s=document,i=this._mousedragBnd,h=this._mouseupBnd;e(s,"mousemove",i);e(s,"touchmove",i);e(s,"mouseup",h);e(s,"touchend",h)}}this._ignoreClick=!1}}_mouseup(){this._mousedownEvt=null;this._rcBounds=null;let e=this.removeEventListener.bind(this),t=document,s=this._mousedragBnd,i=this._mouseupBnd;e(t,"mousemove",s);e(t,"touchmove",s);e(t,"mouseup",i);e(t,"touchend",i);this._resized?this.onResized():this._dragged&&this.onDragged();this._resized=this._dragged=this._ignoreClick=!1}_mousedrag(e){if(!e.defaultPrevented){let t=this.hostElement,s=this._mousedownEvt,i=e.touches&&e.touches.length>0?e.touches[0]:e,h=i.clientX-s.clientX,n=i.clientY-s.clientY,l=this._rcBounds,a=this._edges,r=Popup._SZ_MIN,o=Rect.fromBoundingRect(l);if(a){const e=window.getComputedStyle(t),s=parseInt(e.getPropertyValue("min-width"))||r,i=parseInt(e.getPropertyValue("min-height"))||r;if(a&_Edges.Left){const e=o.right-s;o.left=Math.min(o.left+h,e);o.width=Math.max(o.width-h,s)}else a&_Edges.Right&&(o.width=Math.max(o.width+h,s));if(a&_Edges.Top){const e=o.bottom-i;o.top=Math.min(o.top+n,e);o.height=Math.max(o.height-n,i)}else a&_Edges.Bottom&&(o.height=Math.max(o.height+n,i));if(this.onSizeChanging(new PopupBoundsChangingEventArgs(o))){setCss(t,{left:o.left+window.scrollX,top:o.top+window.scrollY,width:o.width,height:o.height,transform:"none"});this._resized=this._dragged=this._ignoreClick=!0;this.onSizeChanged()}if(!window.ResizeObserver){let e=this.hostElement.children;for(let t=0;t<e.length;t++)Control.invalidateAll(e[t])}}else if(this._draggable&&(this._dragged||Math.abs(h)+Math.abs(n)>Popup._DRAG_THRESHOLD)){o.left=Math.max(l.left+h+(i.pageX-i.clientX),50-l.width);o.top=Math.max(l.top+n+(i.pageY-i.clientY),0);if(this.onPositionChanging(new PopupBoundsChangingEventArgs(o))){setCss(t,{left:o.left,top:o.top});this._dragged=this._ignoreClick=!0;this.onPositionChanged()}}}}_getEdges(e,t){let s=0;if(this._resizable){let i=e.getBoundingClientRect(),h=Popup._SZ_EDGE;t.clientX-i.left<h&&(s|=_Edges.Left);t.clientY-i.top<h&&(s|=_Edges.Top);i.right-t.clientX<h&&(s|=_Edges.Right);i.bottom-t.clientY<h&&(s|=_Edges.Bottom)}return s}_ownerClick(e){this._toggle(e,PopupTrigger.ClickOwner)}_ownerDown(e){this._wasVisible=this.isVisible;this._toggle(e,PopupTrigger.DownOwner)}_ownerBlur(e){contains(this._owner,getActiveElement())||this._toggle(e,PopupTrigger.BlurOwner)}_ownerEnter(e){e.target==this._owner&&this._toggle(e,PopupTrigger.EnterOwner)}_ownerLeave(e){e.target==this._owner&&this._toggle(e,PopupTrigger.LeaveOwner)}_toggle(e,t){e instanceof MouseEvent&&(Popup._evtHover=e);if(!("mouseenter"==e.type&&Date.now()-this._lastShow<300||e.defaultPrevented)){let e=0!=(this._hideTrigger&t),s=0!=(this._showTrigger&t),i=PopupTrigger;(e||s)&&this._clearTimeouts();e&&this.isVisible&&(t&i.Leave?this._toHideLeave=setTimeout(()=>{let e=Popup._evtHover,t=e?document.elementFromPoint(e.clientX,e.clientY):null;t&&contains(this.hostElement,t,!0)||this.hide()},Control._LEAVE_DELAY):t&i.Blur?this._toHideBlur=setTimeout(()=>{this.containsFocus()||contains(this._owner,getActiveElement())||this.hide()},Control._FOCUS_INTERVAL+50):this.hide());s&&t!=i.ClickPopup&&(this._wasVisible||(t&i.Enter?this._toShow=setTimeout(()=>{this.show()},Control._HOVER_DELAY):this.show()))}}_getHeaderElement(){let e=this.hostElement;return e.querySelector(".wj-dialog-header")||e.querySelector(".modal-header")}_getClosestHeader(e){return closest(e,".wj-dialog-header")||closest(e,".modal-header")}_showBackdrop(){if(!this._bkDrop){this._bkDrop=document.createElement("div");this._bkDrop.tabIndex=-1;addClass(this._bkDrop,"wj-popup-backdrop");this.addEventListener(this._bkDrop,"mousedown",e=>{e.preventDefault();e.stopPropagation();this.hostElement.focus();this.hideTrigger&PopupTrigger.Blur&&this.hide()})}setCss(this._bkDrop,{zIndex:Control._POPUP_ZINDEX,display:""});let e=this.hostElement;e.parentElement.insertBefore(this._bkDrop,e)}_validateAndHide(e){let t=this.hostElement;if(t instanceof HTMLFormElement)t.reportValidity()&&this.hide(e);else{let t=this.hostElement.querySelector(":invalid");t?t.focus():this.hide(e)}}}Popup._DRAG_THRESHOLD=6;Popup._SZ_EDGE=10;Popup._SZ_MIN=40;export class PopupBoundsChangingEventArgs extends CancelEventArgs{constructor(e){super();this._rc=e}get bounds(){return this._rc}}export class InputDate extends DropDown{constructor(e,t){super(e);this._fmt="d";this._sep=" - ";this._rngs=null;this._showCal=!1;this._clsOnSel=!0;this._handleWheel=!0;this._clicked=!1;this._rangeChanged=!1;this._textInitialized=!1;this.valueChanged=new Event;this.rangeEndChanged=new Event;this.rangeChanged=new Event;addClass(this.hostElement,"wj-inputdate");this._msk=new _MaskProvider(this._tbx);isIE9()||(this.inputType="tel");this._tbx.type.match(/^(tel|text|)$/i)||(this.inputType="text");this.addEventListener(this.hostElement,"wheel",e=>{if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.containsFocus()&&null!=this.value&&this._canChangeValue()){let t=clamp(-e.deltaY,-1,1),s=this.value;this.value=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(s,t):DateTime.addDays(s,t);this.selectAll();e.preventDefault()}});let s=this._lbx=new ListBox(document.createElement("div"),{displayMemberPath:"name",selectedIndexChanged:e=>{let t=e.selectedItem,s=DateTime.fromDateTime,i=DateTime.sameDate;if(t&&t.from&&t.to){if(!i(t.from,this.value)||!i(t.to,this.rangeEnd)){let e=this.value;this.value=s(t.from,e);this.rangeEnd=s(t.to,e)}this._selectAll()}else this._cal.hostElement.style.display=""}}),i=this._cal=new Calendar(document.createElement("div")),h=this._dropDown;addClass(h,"wj-inputdate-dropdown");h.appendChild(s.hostElement);h.appendChild(i.hostElement);this.addEventListener(h,"click",()=>{this._clicked=!0;setTimeout(()=>{this._clicked=!1},50)},!0);if("INPUT"==this._orgTag){let e=this._tbx.getAttribute("value");e&&(i.value=i.rangeEnd=Globalize.parseDate(e,"yyyy-MM-dd"))}this.isRequired=!0;this._tbx.value=this._oldText=this._getText();this.initialize(t);if(this._textInitialized&&this._tbx.value!==this._oldText){this._oldText=this._tbx.value;this._commitText();this.onTextChanged();this._textInitialized=!1}this._updateState();i.valueChanged.addHandler((e,t)=>{this._refreshText();this.onValueChanged(t);this._closeOnChange()});i.rangeEndChanged.addHandler((e,t)=>{if(i._rngMode()){this.onRangeEndChanged(t);this._closeOnChange();i._clearingRangeEnd||this._refreshText()}});i.hostElement.addEventListener("click",e=>{if(i.selectionMode&&!i._rngMode()){let t=e.target,s=i.hitTest(t);if(DateTime.sameDate(this.value,s)||closest(t,"[wj-part=btn-today]")){this._closeOnChange();this._refreshText()}}})}get value(){return this._cal.value}set value(e){this._cal.value=e;(this.text||this.isRequired)&&this._refreshText()}get rangeEnd(){return this._cal.rangeEnd}set rangeEnd(e){this._cal.rangeEnd=e;(this.text||this.isRequired)&&this._refreshText()}get rangeMin(){return this._cal.rangeMin}set rangeMin(e){this._cal.rangeMin=e}get rangeMax(){return this._cal.rangeMax}set rangeMax(e){this._cal.rangeMax=e}get text(){return this._tbx.value}set text(e){let t=(e||"").toString();if(t!=this.text){t!=this._tbx.value&&(this._tbx.value=t);t!=this._oldText&&(this._oldText=t);this._commitText();this.onTextChanged()}}get format(){return this._fmt}set format(e){if(e!=this.format){this._fmt=asString(e);this._refreshText()}}get separator(){return this._sep}set separator(e){if(e!=this._sep){this._sep=asString(e,!1);this.invalidate()}}get mask(){return this._msk.mask}set mask(e){this._msk.mask=asString(e)}get closeOnSelection(){return this._clsOnSel}set closeOnSelection(e){this._clsOnSel=asBoolean(e)}get handleWheel(){return this._handleWheel}set handleWheel(e){e=asBoolean(e);this._handleWheel=e;e||(this.calendar.handleWheel=e)}get predefinedRanges(){return this._rngs}set predefinedRanges(e){if(this._rngs!=e){assert(null==e||isObject(e),"Object expected");this._rngs=e;this._lbx.itemsSource=this._getRanges(e);this.invalidate()}}get alwaysShowCalendar(){return this._showCal}set alwaysShowCalendar(e){this._showCal=asBoolean(e)}get min(){return this._cal.min}set min(e){this._cal.min=asDate(e,!0)}get max(){return this._cal.max}set max(e){this._cal.max=asDate(e,!0)}get repeatButtons(){return this._cal.repeatButtons}set repeatButtons(e){this._cal.repeatButtons=asBoolean(e)}get showYearPicker(){return this._cal.showYearPicker}set showYearPicker(e){this._cal.showYearPicker=asBoolean(e)}get showMonthPicker(){return this._cal.showMonthPicker}set showMonthPicker(e){this._cal.showMonthPicker=e}get showHeader(){return this._cal.showHeader}set showHeader(e){this._cal.showHeader=e}get weeksBefore(){return this._cal.weeksBefore}set weeksBefore(e){this._cal.weeksBefore=e}get weeksAfter(){return this._cal.weeksAfter}set weeksAfter(e){this._cal.weeksAfter=e}get selectionMode(){return this._cal.selectionMode}set selectionMode(e){if(e!=this.selectionMode){this._cal.selectionMode=e;this._refreshText()}}get monthCount(){return this._cal.monthCount}set monthCount(e){this._cal.monthCount=e}get calendar(){return this._cal}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(e){e.match(/^(tel|text|)$/i)?this._tbx.type=asString(e):console.warn(`invalid input type '${e}', don't use any input types other than 'tel' or 'text'`)}get itemValidator(){return this._cal.itemValidator}set itemValidator(e){if(e!=this.itemValidator){this._cal.itemValidator=asFunction(e);this.invalidate()}}get itemFormatter(){return this._cal.itemFormatter}set itemFormatter(e){this._cal.itemFormatter=asFunction(e)}onValueChanged(e){this.valueChanged.raise(this,e)}onRangeEndChanged(e){this.rangeEndChanged.raise(this,e);this.rangeEnd&&(this.isDroppedDown?this._rangeChanged=!0:this.onRangeChanged(e))}onRangeChanged(e){this._rangeChanged=!1;this.rangeChanged.raise(this,e)}refresh(e=!0){super.refresh(e);if(this.hostElement){this._msk&&this._msk.refresh();this._cal&&this._cal.refresh();this._refreshText()}}onIsDroppedDownChanging(e){if(this.isDroppedDown){let e=this._cal;e._rngMode()&&e.value&&!e.rangeEnd&&(e.rangeEnd=e.value)}else{let e=this._lbx,t=this._cal,s=e.collectionView,i=e.hostElement.style,h=t.hostElement.style;if(t._rngMode()&&hasItems(s)){let e=this._updateRangeSelection();i.display="";h.display=!this._showCal&&e&&e.from&&s.items.some(e=>!e.to)?"none":""}else{i.display="none";h.display=""}t._mthMode()||(t.monthView=!0)}return super.onIsDroppedDownChanging(e)}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);let t=this.containsFocus();if(this.isDroppedDown){t&&(this._tryFocus(this._cal)||this._tryFocus(this._lbx)||this.dropDown.focus());this._lbx.showSelection();this._cal.refresh()}else{this._commitText();this._rangeChanged&&this.onRangeChanged()}}_updateDropDown(){this._commitText();let e=getComputedStyle(this.hostElement);this._dropDown.style.minWidth=18*parseFloat(e.fontSize)+"px";this._cal.refresh();super._updateDropDown()}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){case Key.Enter:this.isDroppedDown?this._refreshText():this._commitText();break;case Key.Escape:this.text=this._getText();this.selectAll();break;case Key.Tab:if(this._cal._rngMode()){let t=this._tbx,s=this._sep,i=t.value,h=i.indexOf(s);if(h>-1){let n=i.length,l=t.selectionStart,a=t.selectionEnd,r=null;t.selectionEnd<=h&&!e.shiftKey?r=0==l&&0==a:e.shiftKey&&t.selectionStart>=h+s.length&&(r=l<n||a<n);if(null!=r){r?setSelectionRange(t,0,h):setSelectionRange(t,h+s.length,n);e.preventDefault()}}}break;case Key.Up:case Key.Down:if(!this.isDroppedDown&&this.value&&this._canChangeValue()){let t=e.keyCode==Key.Up?1:-1,s=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,t):DateTime.addDays(this.value,t);this.value=this._fromDateTime(s);this.selectAll();e.preventDefault()}}}super._keydown(e)}_expandSelection(){if(this._cal._rngMode()){let e=this._tbx,t=e.value,s=e.selectionStart,i=e.selectionEnd,h=this._sep,n=t.indexOf(h);n>-1&&s==i&&(i<=n?setSelectionRange(e,0,n):s>=n+h.length&&setSelectionRange(e,n+h.length,e.value.length))}else super._expandSelection()}_refreshText(){let e=this._getText();if(e!=this.text||e!==this._oldText){this._tbx.value=this._oldText=e;this.onTextChanged()}}_selectAll(){this.isDroppedDown||!this.containsFocus()||this.isTouching||this.selectAll()}_closeOnChange(){if(this._clsOnSel&&this._clicked){let e=this._cal;(!e._rngMode()||e.value&&e.rangeEnd)&&setTimeout(()=>{this.isDroppedDown=!1})}}_tryFocus(e){let t=e.hostElement;if(t&&t.offsetHeight){t.focus();return!0}return!1}_clamp(e){return this._cal._clamp(e)}_getText(){let e=Globalize.format,t=this._fmt,s=e(this.value,t);this._cal._rngMode()&&s&&(s+=this._sep+e(this.rangeEnd,t));return s}_commitText(e){let t=this._tbx.value;if(t!=this._getText()){let e=!1,s=this._fmt,i=this._cal,h=Globalize.parseDate;if(t||this.isRequired)if(i._rngMode()){let n=t.split(this._sep);if(2==n.length&&n[0]){let t=h(n[0],s,this.value);if(t){let l=h(n[1],s,this.value);i.value=this._fromDateTime(t);i.rangeEnd=l&&l>=t?this._fromDateTime(l):t;e=!0}}}else{let i=h(t,s,this.value);if(i){this.value=this._fromDateTime(i);e=!0}}else{this.value=this.rangeEnd=null;e=!0}(e||!this._containsFocus()&&this.onInvalidInput(new CancelEventArgs))&&(this.text=this._getText())}e||this._selectAll()}_fromDateTime(e){return DateTime.fromDateTime(e,this.value)}_canChangeValue(){return!this.isReadOnly&&!this.isDisabled&&this.selectionMode!=DateSelectionMode.None}_isValidDate(e){if(e){if(this._clamp(e)!=e)return!1;if(this.itemValidator&&!this.itemValidator(e))return!1}return!0}_getRanges(e){let t=[];if(isObject(e))for(let s in e){let i=e[s];t.push({name:s,from:i?i[0]:null,to:i?i[1]:null})}return new CollectionView(t,{currentItem:null})}_updateRangeSelection(){let e=this._lbx,t=-1;if(hasItems(e.collectionView)){let e=this._lbx.collectionView.items,s=DateTime.sameDate;for(let i=0;i<e.length;i++){let h=e[i];if(h.from){if(s(h.from,this.value)&&s(h.to,this.rangeEnd)){t=i;break}}else t=i}}e.selectedIndex=t;return e.selectedItem}_copy(e,t){if("text"===e){let e=(t||"").toString();if(e!==this.text){this._tbx.value=e;this._textInitialized=!0}return!0}return!1}}export class InputDateRange extends InputDate{constructor(e,t){super(e,{selectionMode:DateSelectionMode.Range,showMonthPicker:"Outside",monthCount:2});addClass(this.hostElement,"wj-inputdaterange");this._tbx.value=this._oldText=this._getText();this.initialize(t);if(this._tbx.value!==this._oldText){this._oldText=this._tbx.value;this._commitText()}}get selectionMode(){return this.calendar.selectionMode}set selectionMode(e){e=asEnum(e,DateSelectionMode);assert(e==DateSelectionMode.Range,'InputDateRange.selectionMode must be "Range"');this.calendar.selectionMode=e}}export class InputColor extends DropDown{constructor(e,t){super(e);this._textInitialized=!1;this.valueChanged=new Event;addClass(this.hostElement,"wj-inputcolor");this._ePreview=createElement('<div class="wj-inputcolorbox"></div>',this.hostElement.firstElementChild);if("INPUT"==this._orgTag){this._tbx.type="";this._commitText()}this.value="#ffffff";this.isRequired=!0;this._tbx.value=this._oldText=this.value;this.initialize(t);if(this._textInitialized&&this._tbx.value!==this._oldText){this._oldText=this._tbx.value;this.onTextChanged();this._commitText();this._textInitialized=!1}this.addEventListener(this._colorPicker.hostElement,"click",e=>{let t=e.target;if(t&&"DIV"==t.tagName&&(closest(t,'[wj-part="div-pal"]')||closest(t,'[wj-part="div-pv"]'))){t.style.backgroundColor&&(this.isDroppedDown=!1)}})}get value(){return this._value}set value(e){this.text=e}get text(){return this._tbx.value}set text(e){if((e=asString(e))!=this.text&&(e||!this.isRequired)&&(!e||Color.fromString(e))){this._setText(e,!0);this._commitText()}}get showAlphaChannel(){return this._colorPicker.showAlphaChannel}set showAlphaChannel(e){this._colorPicker.showAlphaChannel=e}get showColorString(){return this._colorPicker.showColorString}set showColorString(e){this._colorPicker.showColorString=e}get palette(){return this._colorPicker.palette}set palette(e){this._colorPicker.palette=e}get colorPicker(){return this._colorPicker}onValueChanged(e){this.valueChanged.raise(this,e)}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);this.isDroppedDown&&!this.isTouching&&this.selectAll()}_createDropDown(){this._colorPicker=new ColorPicker(this._dropDown);setCss(this._dropDown,{minWidth:420,minHeight:200});this._colorPicker.valueChanged.addHandler(()=>{this.value=this._colorPicker.value})}_keydown(e){if(!e.defaultPrevented)switch(e.keyCode){case Key.Enter:this._commitText();this.selectAll();break;case Key.Escape:this.text=this.value;this.selectAll()}super._keydown(e)}_commitText(){if(this._value!=this.text){if(!this.isRequired&&!this.text){this._value=this.text;this._ePreview.style.backgroundColor="";this.onValueChanged();return}if(Color.fromString(this.text.replace(/\s+/g,""))){if(this.text&&this.text!==this.text.replace(/\s+/g,"")){this.text=this.text.replace(/\s+/g,"");return}let e=this._colorPicker;e.value=this.text;this._value=e.value;this._ePreview.style.backgroundColor=this.value;this.onValueChanged()}else this.onInvalidInput(new CancelEventArgs)&&(this.text=this._value?this._value:"")}}_copy(e,t){if("text"===e){let e=(t||"").toString();if(e!==this.text){this._tbx.value=e;this._textInitialized=!0}return!0}return!1}}export class ComboBox extends DropDown{constructor(e,t){super(e);this._editable=!1;this._trimText=!0;this._handleWheel=!0;this._delKey=0;this._draggingText=!1;this._pathHdr=new Binding(null);this._bsCollapse=!0;this._fmtItemHandlers=0;this._emptyValueAction=!1;this._oldIndexToBeRestoredOnBlur=null;this._restoreComboboxTbxVal=!1;this._isWheel=!1;this.itemsSourceChanged=new Event;this.selectedIndexChanged=new Event;let s=this.hostElement;addClass(s,"wj-combobox");this.dropDown.id=getUniqueId(s.id+"_dropdown");this.autoExpandSelection=!1;let i=this._tbx;this.addEventListener(i,"compositionstart",()=>{this._composing=!0});this.addEventListener(i,"compositionend",()=>{this._composing=!1;this._setText(this.text,!0)});this.addEventListener(i,"drag",()=>{this._draggingText=!0});this.addEventListener(s,"wheel",this._wheel.bind(this));"SELECT"==this._orgTag&&this._lbx._initFromSelect(s);let h=this._lbx;h.loadedItems.addHandler(e=>{this.selectedIndex>-1&&(this.selectedIndex=h.selectedIndex)});this.isRequired=!0;this.initialize(t)}get itemsSource(){return this._lbx.itemsSource}set itemsSource(e){if(this._lbx.itemsSource!=e){this._lbx.itemsSource=e;this.onItemsSourceChanged()}this._updateBtn()}get collectionView(){return this._lbx.collectionView}get virtualizationThreshold(){return this._lbx.virtualizationThreshold}set virtualizationThreshold(e){this._lbx.virtualizationThreshold=e}get showGroups(){return this._lbx.showGroups}set showGroups(e){this._lbx.showGroups=e}get displayMemberPath(){return this._lbx.displayMemberPath}set displayMemberPath(e){this._lbx.displayMemberPath=e;let t=this.getDisplayText();this.text!=t&&this._setText(t,!0)}get headerPath(){return this._pathHdr.path}set headerPath(e){this._pathHdr.path=asString(e);let t=this.getDisplayText();this.text!=t&&this._setText(t,!0)}get selectedValuePath(){return this._lbx.selectedValuePath}set selectedValuePath(e){this._lbx.selectedValuePath=e}get isContentHtml(){return this._lbx.isContentHtml}set isContentHtml(e){if(e!=this.isContentHtml){this._lbx.isContentHtml=asBoolean(e);let t=this.getDisplayText();this.text!=t&&this._setText(t,!0)}}get caseSensitiveSearch(){return this._lbx.caseSensitiveSearch}set caseSensitiveSearch(e){this._lbx.caseSensitiveSearch=asBoolean(e)}get trimText(){return this._trimText}set trimText(e){if(e!=this._trimText){this._trimText=asBoolean(e);this.invalidate()}}get itemFormatter(){return this._lbx.itemFormatter}set itemFormatter(e){this._lbx.itemFormatter=asFunction(e);this.selectedIndex=this._lbx.selectedIndex}get formatItem(){return this._lbx.formatItem}get selectedIndex(){return this._lbx.selectedIndex}set selectedIndex(e){e!=this.selectedIndex&&isNumber(e)&&(this._lbx.selectedIndex=e);let t=this._lbx._oldSelectedIndex!=this.selectedIndex;e=this.selectedIndex;let s=this.getDisplayText(e);if(this.text!=s||t){let e=this._internalSettingText;this._internalSettingText=this._lbx._ignoredItemChangedEvents;this._setText(s,!0);""!=this.text&&(this._emptyValueAction=!1);this._internalSettingText=e}}get selectedItem(){return this._lbx.selectedItem}set selectedItem(e){this._lbx.selectedItem=e}get selectedValue(){return this.collectionView?this._lbx.selectedValue:this.text}set selectedValue(e){this.collectionView?this._lbx.selectedValue=e:null!=e&&(this.text=e.toString())}get isEditable(){return this._editable}set isEditable(e){this._editable=asBoolean(e)}get handleWheel(){return this._handleWheel}set handleWheel(e){this._handleWheel=asBoolean(e)}get maxDropDownHeight(){return this._lbx.maxHeight}set maxDropDownHeight(e){this._lbx.maxHeight=e}get maxDropDownWidth(){let e=this._dropDown,t=e?parseInt(e.style.maxWidth):null;return isNaN(t)?null:t}set maxDropDownWidth(e){let t=this._dropDown.style;e=asNumber(e,!0);t.maxWidth=null==e?"":e+"px";t.minWidth=""}getDisplayText(e=this.selectedIndex,t=this._trimText){let s,i=this.collectionView;if(this.headerPath&&e>-1&&hasItems(i)){let t=i.items[e];s=null!=(s=t?this._pathHdr.getValue(t):null)?s.toString():"";this.isContentHtml&&(s=toPlainText(s))}else s=this._lbx.getDisplayText(e);return t?s.trim():s}indexOf(e,t,s=!1){let i=this.collectionView,h=this.caseSensitiveSearch;if(hasItems(i)&&null!=e){e=e.toString();h||(e=e.toLowerCase());if(this._trimText&&!s){-1!==this.indexOf(e,!1,!0)||(e=e.trim())}let n=this.selectedIndex,l=this.getDisplayText(n);if(t){h||(l=l.toLowerCase());if(e==l)return n}else if(!e&&""==l)return n;for(let s=0;s<i.items.length;s++)if(this._lbx.isItemEnabled(s)){l=this.getDisplayText(s);this.trimText&&(l=l.trim());h||(l=l.toLowerCase());if(t){if(l==e&&!1===this._emptyValueAction)return s}else if(e&&0==l.indexOf(e)||!e&&""==l&&!1===this._emptyValueAction)return s}}return-1}get listBox(){return this._lbx}onItemsSourceChanged(e){this.itemsSourceChanged.raise(this,e)}onSelectedIndexChanged(e){this._updateBtn();this.selectedIndexChanged.raise(this,e)}refresh(e=!0){super.refresh(e);if(this.hostElement&&hasItems(this.collectionView)){this._lbx.refresh();this.selectedIndex>-1&&(this.selectedIndex=this._lbx.selectedIndex)}}onLostFocus(e,t,s){this._trimText&&(this.text=this.text.trim());if(this._composing){this._composing=!1;this._setText(this.text,!0)}if((!this.text&&this.isRequired||s)&&hasItems(this.collectionView)){void 0!==t&&(this.selectedIndex=-1!==t?t:0);null!==this._oldIndexToBeRestoredOnBlur?this.selectedIndex=-1!==this._oldIndexToBeRestoredOnBlur?this._oldIndexToBeRestoredOnBlur:0:null==this.collectionView.currentItem&&(this.selectedIndex=0)}let i=this.text,h=this.collectionView?this.collectionView.items.length:0;super.onLostFocus(e);let n=this.collectionView?this.collectionView.items.length:0;this._trySelectionUpdateOnItemsSourceChanged(n!==h,i)}onIsDroppedDownChanging(e){if(!this.isDroppedDown&&!this._hasItems()){e.cancel=!0;return!1}return super.onIsDroppedDownChanging(e)}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);if(this.isDroppedDown){this._fmtItemHandlers=this.formatItem.handlerCount;this._lbx.showSelection()}this._updateAria()}_trySelectionUpdateOnItemsSourceChanged(e,t){if(e&&t){let e=this.indexOf(t,!0);e<0&&(e=this.indexOf(t,!1));this.selectedIndex=e}}_setIsDisabled(e){super._setIsDisabled(e);this._updateBtn()}_updateBtn(){let e=this.collectionView,t=this._tbx,s=this._hasItems();super._updateBtn();this._btn.style.display=this._showBtn&&null!=e?"":"none";enable(this._btn,s&&!this.isDisabled);setAttribute(t,"role",s?"combobox":null);setAttribute(t,"aria-autocomplete",s?"both":null);this._updateAria()}_hasItems(){return hasItems(this.collectionView)}_updateAria(){let e=this._tbx,t=this.isDroppedDown,s=this.dropDown?this.dropDown.id:null,i=s&&hasItems(this.collectionView);setAttribute(e,"aria-owns",i&&t?s:null);setAttribute(e,"aria-expanded",i?t:null)}_createDropDown(){if(!this._lbx){this._lbx=new ListBox(this._dropDown);this._lbx._container=this.hostElement}this._lbx.maxHeight=200;this._lbx.selectedIndexChanged.addHandler(()=>{this._updateBtn();let e=this._lbx.selectedIndex,t=this._lbx.hostElement.children,s=e>-1&&e<t.length?t[e].id:null;setAttribute(this._tbx,"aria-activedescendant",s&&s.length?s:null);this.selectedIndex=e;this.onSelectedIndexChanged()});this._lbx.itemsChanged.addHandler(()=>{this._updateBtn()})}_wheel(e){this._isWheel=!0;if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&!this.isReadOnly&&this.containsFocus()&&this.selectedIndex>-1){let t=this._findNext("",e.deltaY>0?1:-1);t>-1&&(this.selectedIndex=t);e.preventDefault()}this._isWheel=!1}_dropDownClick(e){e.defaultPrevented||e.target!=this._dropDown&&(this.isDroppedDown=!1);this._restoreComboboxTbxVal&&(this._tbx.value=this.getDisplayText(this.selectedIndex));super._dropDownClick(e)}_setText(e,t){if(this._composing||this._settingText)return;this._settingText=!0;if(this.containsFocus()){let e=this.formatItem.handlerCount;if(this._fmtItemHandlers!=e){this._fmtItemHandlers=e;this._lbx.loadList()}}e=[null,void 0,NaN].includes(e)?"":e.toString();let s=this.selectedIndex,i=this.collectionView,h=this._getSelStart(),n=-1,l=!0;if(this.isEditable&&(this._delKey||this._getSelEnd()<e.length||!this.containsFocus())){t=!0;l=!1}s=this.indexOf(e,t);if(l){s<0&&t&&(s=this.indexOf(e,!1));s<0&&h>0&&(s=this.indexOf(e.substr(0,h),!1));if(!t){let t=this.indexOf(e,!0);t>-1&&s>-1&&t!=s&&(s=t)}}s<0&&this._delKey&&(s=this.indexOf(e,t));if(s<0&&!this.isEditable&&hasItems(i)&&(e&&this.isRequired||this.containsFocus()&&(e||this.isRequired))){let t=this._oldText||"";s=Math.max(0,this.indexOf(t,!1));h=0;for(let s=0;s<e.length&&s<t.length;s++)if(e[s]!=t[s]){h=s;break}}if((!this._delKey||!this.isEditable||this._delKey&&this.isEditable&&e==this.getDisplayText(s))&&(!this._pristine||this._pristine&&!this.isEditable)||this._isWheel||this._delKey&&""==e&&s>-1){if(s>-1){n=h;e=this.getDisplayText(s)}let t=this._tbx;e!=t.value&&(t.value=e);n>-1&&this.containsFocus()&&!this.isTouching&&this._updateInputSelection(n)}if(i){if(!e||this.trimText&&""==e.trim()&&!this.containsFocus()&&this.isEditable)if(s>-1)this._oldIndexToBeRestoredOnBlur=s;else{this._oldIndexToBeRestoredOnBlur=this.indexOf(this._oldText,!0);this._oldIndexToBeRestoredOnBlur=this._oldIndexToBeRestoredOnBlur<0?this.indexOf(this._oldText,!1):this._oldIndexToBeRestoredOnBlur}this._restoreComboboxTbxVal=e&&s>-1;i.moveCurrentToPosition(s)}this.containsFocus()||this.isEditable||this.isRequired||e!=e.trim()||!this.trimText||(this._tbx.value=this.getDisplayText(s,this.trimText));!this.containsFocus()&&s>-1&&this.isEditable&&(e=this.getDisplayText(s,this.trimText));!this.containsFocus()&&s<0&&!this.isEditable&&!this.isRequired&&(e="");let a=!1;!e&&s<0&&this.isRequired&&!this.containsFocus()&&(a=!0);this.trimText&&!this.containsFocus()&&this.isEditable&&(this.isRequired&&""==e.trim()?a=!0:e=e.trim());if(a){this.selectedIndex=this._oldIndexToBeRestoredOnBlur;this.selectedIndex<0&&(this.selectedIndex=0)}let r=!this.containsFocus()&&!this.isRequired&&!this.isEditable&&this.trimText;r&&(this._tbx.value=this.getDisplayText(s,!0));this._delKey=0;this._settingText=!1;super._setText(a?this.getDisplayText(this.selectedIndex):e,t,a,r)}_findNext(e,t,s=this.selectedIndex){let i=this.collectionView,h=i?i.items.length:0,n=this._lbx,l=this.caseSensitiveSearch;if(i&&h&&t){l||(e=e.toLowerCase());for(let i=s+t;i>-1&&i<h;i+=t){let t=this.getDisplayText(i);l||(t=t.toLowerCase());if(0==t.indexOf(e)){if(!this.dropDown.children[i]||n.isItemEnabled(i))return i}}}return s}_keydown(e){super._keydown(e);if(e.defaultPrevented||this.isReadOnly)return;if(e.altKey)return;if(!hasItems(this.collectionView))return;if(this._elRef!=this._tbx)return;if(this._isHiddenEditor())return;this._delKey=0;let t=this._getSelStart(),s=this._getSelEnd();switch(e.keyCode){case Key.Back:case Key.Delete:case 88:if(!e.ctrlKey&&!e.metaKey&&88==e.keyCode)break;if(this._bsCollapse&&!this.isEditable&&t>0&&s==this._tbx.value.length&&hasItems(this.collectionView)){this._setSelRange(t-1,s);t-=1}this._delKey=e.keyCode;break;case Key.Up:case Key.Down:t==this.text.length&&(t=0);this.selectedIndex=this._findNext(this.text.substr(0,t),e.keyCode==Key.Up?-1:1);this._setSelRange(t,this.text.length);e.preventDefault();break;case Key.PageUp:this._lbx._selectPrevPage();this.selectAll();e.preventDefault();break;case Key.PageDown:this._lbx._selectNextPage();this.selectAll();e.preventDefault()}this.text.length>0&&["Backspace","Delete","x"].includes(e.key)&&0===t&&s===this.text.length||this._delKey&&1===this.text.length?this._emptyValueAction=!0:this._composing||(this._emptyValueAction=!1)}_input(e){this._draggingText&&(""===this.text?this._emptyValueAction=!0:this._emptyValueAction=!1);this._setText(this.text,!1);""!=this.text&&(this._emptyValueAction=!1);this._draggingText=!1}_updateInputSelection(e){let t=this._tbx;this._elRef==t&&this._setSelRange(e,t.value.length)}_getSelStart(){let e=this._tbx;return e&&e.value?e.selectionStart:0}_getSelEnd(){let e=this._tbx;return e&&e.value?e.selectionEnd:0}_setSelRange(e,t){let s=this._tbx;this._elRef!=s||s.readOnly||setSelectionRange(s,e,t)}}_addCultureInfo("MultiSelect",{itemsSelected:"{count:n0} items selected",selectAll:"Select All"});export class MultiSelect extends ComboBox{constructor(e,t){super(e);this._maxHdrItems=2;this._readOnly=!1;this._hdrFmt=null;this.checkedItemsChanged=new Event;addClass(this.hostElement,"wj-multiselect");this._tbx.readOnly=!0;this.checkedMemberPath=null;this.removeEventListener(this.dropDown,"click");this._lbx.itemsChanged.addHandler(()=>{this._updateHeader(!1)});this._lbx.checkedItemsChanged.addHandler(()=>{this._updateHeader(!1);this.onCheckedItemsChanged()});this.clickAction=ClickAction.Toggle;this.initialize(t)}get showSelectAllCheckbox(){return this._msLbx.showSelectAllCheckbox}set showSelectAllCheckbox(e){this._msLbx.showSelectAllCheckbox=asBoolean(e)}get showFilterInput(){return this._msLbx.showFilterInput}set showFilterInput(e){this._msLbx.showFilterInput=asBoolean(e)}get delay(){return this._msLbx.delay}set delay(e){this._msLbx.delay=e}get caseSensitiveSearch(){return this._msLbx.caseSensitiveSearch}set caseSensitiveSearch(e){this._msLbx.caseSensitiveSearch=e}get filterInputPlaceholder(){return this._msLbx.filterInputPlaceholder}set filterInputPlaceholder(e){this._msLbx.filterInputPlaceholder=asString(e)}get checkOnFilter(){return this._msLbx.checkOnFilter}set checkOnFilter(e){if(e!=this.checkOnFilter){this._msLbx.checkOnFilter=asBoolean(e);this.checkedItems=[]}}get selectAllLabel(){return this._msLbx.selectAllLabel}set selectAllLabel(e){this._msLbx.selectAllLabel=asString(e)}get checkedMemberPath(){return this._msLbx.checkedMemberPath}set checkedMemberPath(e){this._msLbx.checkedMemberPath=asString(e)}get maxHeaderItems(){return this._maxHdrItems}set maxHeaderItems(e){if(this._maxHdrItems!=e){this._maxHdrItems=asNumber(e);this._updateHeader()}}get headerFormat(){return this._hdrFmt}set headerFormat(e){if(e!=this._hdrFmt){this._hdrFmt=asString(e);this._updateHeader()}}get headerFormatter(){return this._hdrFormatter}set headerFormatter(e){if(e!=this._hdrFormatter){this._hdrFormatter=asFunction(e);this._updateHeader()}}get checkedItems(){return this._msLbx.checkedItems}set checkedItems(e){this._msLbx.checkedItems=null==e?[]:asArray(e);this._updateHeader()}onCheckedItemsChanged(e){this.checkedItemsChanged.raise(this,e)}dispose(){this._lbx.dispose();super.dispose()}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);setTimeout(()=>{if(this.isDroppedDown&&this.containsFocus())if(this.showFilterInput&&!this.isTouching)this._msLbx._filter.focus();else{let e=this.listBox;if(e.selectedIndex<0){let t=0,s=e.checkedItems;s.length&&(t=e.collectionView.items.indexOf(s[0]));e.selectedIndex=Math.max(0,t)}e.showSelection(!0);e.focus()}})}onLostFocus(){this._msLbx.onLostFocus();this.isDroppedDown=!1;super.onLostFocus()}_createDropDown(){let e=createElement("<div></div>",this._dropDown);this._msLbx=new MultiSelectListBox(e);this._lbx=this._msLbx.listBox;super._createDropDown()}get isReadOnly(){return this._readOnly}set isReadOnly(e){this._readOnly=asBoolean(e);toggleClass(this.hostElement,"wj-state-readonly",this.isReadOnly)}refresh(e=!0){super.refresh(e);this.hostElement&&this._updateHeader()}_setText(e,t){}_keydown(e){super._keydown(e);hasClass(this._tbx,"wj-grid-ime")||!e.defaultPrevented&&hasItems(this.collectionView)&&e.keyCode>32&&(this.isDroppedDown=!0)}_hasItems(){let e=this.collectionView,t=e?e.sourceCollection:null;return hasItems(e)||t&&t.length&&this.showFilterInput}_updateHeader(e=!0){let t="";if(isFunction(this._hdrFormatter))t=this._hdrFormatter(this);else{let e=this.checkedItems,s=[];if(this.displayMemberPath){let t=new Binding(this.displayMemberPath);s=e.reduce((e,s)=>{e.find(e=>t.getValue(e)===t.getValue(s))||e.push(s);return e},[]);e=s}if(e.length>0)if(e.length<=this._maxHdrItems){if(this.headerPath){let t=new Binding(this.headerPath);e=e.map(e=>t.getValue(e))}else if(this.displayMemberPath){let t=new Binding(this.displayMemberPath);e=e.map(e=>t.getValue(e))}this.isContentHtml&&(e=e.map(e=>toPlainText(e)));this.trimText&&(e=e.map(e=>e?e.toString().trim():""));t=e.join(", ")}else t=format(this.headerFormat||culture.MultiSelect.itemsSelected,{count:e.length})}let s=this.inputElement;if(t!=s.value){s.value=t;this.onTextChanged()}e&&this._lbx._updateCheckedList(this.checkedItems);this._updateState()}}MultiSelect._DEF_CHECKED_PATH="$checked";export class Menu extends ComboBox{constructor(e,t){super(e);this._closing=!1;this._cmd=null;this._cmdPath=null;this._cmdParamPath=null;this._subPath=null;this._owner=null;this._isButton=!1;this._openOnHover=!1;this._closeOnLeave=!0;this._subMenu=null;this._hoverEnterBnd=this._hoverEnter.bind(this);this._hoverLeaveBnd=this._hoverLeave.bind(this);this._hoverOverBnd=this._hoverOver.bind(this);this.itemClicked=new Event;let s=this.hostElement,i=this._tbx,h=this._lbx,n=this.dropDown;addClass(s,"wj-menu");i.style.display="none";this._hdr=this._elRef=createElement('<div wj-part="header" class="wj-form-control"/>');i.parentElement.insertBefore(this._hdr,this._tbx);s.tabIndex=this.isDisabled?-1:this._orgTabIndex;this.isRequired=!1;setAttribute(s,"role","menubar",!0);setAttribute(i,"role",null);setAttribute(i,"aria-autocomplete",null);setAttribute(i,"aria-owns",null);setAttribute(n,"role","menu");h.itemRole="menuitem";if("SELECT"==this._orgTag){this.header=s.getAttribute("header");this._lbx.itemsSource&&(this.commandParameterPath="cmdParam")}this.isContentHtml=!0;this.maxDropDownHeight=500;this.addEventListener(this._hdr,"click",e=>{if(!e.defaultPrevented){this._clearHover(e);if(this._isButton){this.isDroppedDown=!1;this._raiseCommand()}else this.isDroppedDown=!this.isDroppedDown}});h.lostFocus.addHandler(()=>{this.containsFocus()||(this.isDroppedDown=!1)});addClass(n,"wj-menu-items");h.formatItem.addHandler(this._formatMenuItem.bind(this));this.initialize(t)}get header(){return this._hdr.innerHTML}set header(e){this._hdr.innerHTML=asString(e)}get command(){return this._cmd}set command(e){this._cmd=e}get commandPath(){return this._cmdPath}set commandPath(e){this._cmdPath=asString(e)}get commandParameterPath(){return this._cmdParamPath}set commandParameterPath(e){this._cmdParamPath=asString(e)}get subItemsPath(){return this._subPath}set subItemsPath(e){if(e!=this._subPath){this._subPath=e;this.refresh(!0)}}get openOnHover(){return this._openOnHover}set openOnHover(e){this._openOnHover=asBoolean(e);this._updateHoverEvents()}get closeOnLeave(){return this._closeOnLeave}set closeOnLeave(e){this._closeOnLeave=asBoolean(e);this._updateHoverEvents()}get isButton(){return this._isButton}set isButton(e){this._isButton=asBoolean(e)}get owner(){return this._owner}set owner(e){this._owner=asType(e,HTMLElement,!0);this._enableDisableItems()}show(e){if(!this.isDroppedDown){let t=this._lbx._ignoredItemChangedEvents;this._lbx._ignoredItemChangedEvents=!0;this.selectedIndex=-1;this._lbx._ignoredItemChangedEvents=t;if(this.onIsDroppedDownChanging(new CancelEventArgs)){let t=this.dropDown,s=this.owner;!s&&e instanceof MouseEvent&&(s=e.target);s instanceof HTMLElement&&(t[Control._OWNR_KEY]=s);if(e instanceof MouseEvent&&this.openOnHover&&this.closeOnLeave){let t=2;e=new Point(e.pageX-pageXOffset-t,e.pageY-pageYOffset-t)}showPopup(t,e,!1,this.isAnimated);this.onIsDroppedDownChanged();t.focus()}}}hide(){if(this.isDroppedDown&&this.onIsDroppedDownChanging(new CancelEventArgs)){hidePopup(this.dropDown);this.onIsDroppedDownChanged()}}onItemClicked(e){this.itemClicked.raise(this,e)}refresh(e=!0){super.refresh(e);this.hostElement&&this._enableDisableItems()}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);if(this.isDroppedDown){this._closing=!0;let e=this._lbx._ignoredItemChangedEvents;this._lbx._ignoredItemChangedEvents=!0;this._defaultItem=this.selectedItem;this.isRequired=!1;this.selectedIndex=-1;this._enableDisableItems();this._closing=!1;this._lbx._ignoredItemChangedEvents=e;this.dropDown.focus()}else{if(!this.selectedItem){let e=this._lbx._checking;this._lbx._checking=!0;this.selectedItem=this._defaultItem;this._lbx._checking=e}let e=this._subMenu;e&&(e.isDroppedDown=!1)}}_updateHoverEvents(){let e=this.hostElement,t=this.dropDown,s=this.addEventListener.bind(this),i=this.removeEventListener.bind(this),h="mouseleave";i(e,"mouseenter",this._hoverEnterBnd);i(e,h,this._hoverLeaveBnd);i(t,"mouseover",this._hoverOverBnd);i(t,h,this._hoverLeaveBnd);if(this._openOnHover){s(e,"mouseenter",this._hoverEnterBnd);s(t,"mouseover",this._hoverOverBnd);if(this._closeOnLeave){s(e,h,this._hoverLeaveBnd);s(t,h,this._hoverLeaveBnd)}}}_getSubItems(e){let t=this.subItemsPath,s=e&&t?e[t]:null;return isArray(s)&&s.length?s:null}_formatMenuItem(e,t){let s=t.item;if(this._getSubItems(t.data))addClass(s,"wj-subitems");else if("-"==s.innerHTML){s.innerHTML="";addClass(s,"wj-separator")}}_keydown(e){if(!e.defaultPrevented){let s=this._getKeyCode(e);if(this.isDroppedDown)switch(s){case Key.Enter:case Key.Right:if(this._showSubMenu()){e.preventDefault();return}break;case Key.Left:var t=Control.getControl(this.owner);if(t instanceof Menu){let s=t.dropDown,i=t.selectedIndex;(i>-1?s.children[i]:s).focus();e.preventDefault();return}}if(s==Key.Enter)if(this.isDroppedDown)this.selectedIndex>-1&&this._raiseCommand();else{this.isDroppedDown=!0;e.preventDefault()}}super._keydown(e)}_dropDownClick(e){if(!e.defaultPrevented&&e.target!=this.dropDown){this._clearHover(e);if(this._showSubMenu()){e.preventDefault();return}this.selectedIndex>-1&&this._raiseCommand()}super._dropDownClick(e)}_showSubMenu(){let e=this._getSubItems(this.selectedItem);if(!e)return null;let t=this.dropDown.children[this.selectedIndex].getBoundingClientRect(),s=new Point(t.right,t.top);if(0==t.height)return null;let i=this.rightToLeft||"rtl"==this.dropDown.getAttribute("dir");i&&(s.x=t.left);let h=this._subMenu;h&&(h.isDroppedDown=!1);h=new Menu(document.createElement("div"),{owner:this.hostElement,itemsSource:e,itemClicked:(e,t)=>{this.itemClicked.raise(e,t)},formatItem:(e,t)=>{this.formatItem.raise(e,t)}});let n=this.collectionView,l=h.collectionView;n&&n.filter&&l&&!l.filter&&(l.filter=n.filter);"displayMemberPath,selectedValuePath,isContentHtml,command,commandPath,commandParameterPath,maxDropDownWidth,maxDropDownHeight,dropDownCssClass,isAnimated,subItemsPath,openOnHover,closeOnLeave".split(",").forEach(e=>{h[e]=this[e]});let a=h.dropDown;setAttribute(a,"dir",i?"rtl":null);h.show(s);a[Control._OWNR_KEY]=this.dropDown;a.focus();return h}_raiseCommand(e){let t=this.selectedItem,s=this._getSubItems(t),i=this._getCommand(t);if(i&&!s){let e=this._getCommandParm(t);if(!this._canExecuteCommand(i,e))return;this._executeCommand(i,e)}let h=this.headerPath;if(h){let e=new Binding(h).getValue(t);e=null==e?"":e.toString();this.header=this.isContentHtml?e:escapeHtml(e)}this.onItemClicked(e);if(this.containsFocus()){let e=this;for(;e&&e.owner;){let t=Control.getControl(e.owner);if(!(t instanceof Menu))break;e=t}let t=e.owner;!t&&e.dropDown&&(t=e.dropDown[Control._OWNR_KEY]);e.isDroppedDown=!1;e.focus();if(!e.containsFocus()&&t instanceof HTMLElement&&t.offsetHeight)if(isIE){let e=document.documentElement,s=e.scrollLeft,i=e.scrollTop;t.focus();e.scrollLeft=s,e.scrollTop=i}else t.focus()}}_getCommand(e){let t=e&&this._cmdPath?e[this._cmdPath]:null;return t||this._cmd}_getCommandParm(e){let t=this._cmdParamPath;return e&&t?e[t]:e}_executeCommand(e,t){e&&!isFunction(e)&&(e=e.executeCommand);isFunction(e)&&e(t)}_canExecuteCommand(e,t){if(e){let s=e.canExecuteCommand;if(isFunction(s))return s(t)}return!0}_enableDisableItems(){if(this.collectionView&&(this._cmd||this._cmdPath)){let e=this.collectionView.items;for(let t=0;t<e.length;t++){let s=e[t],i=this._getCommand(s);if(i){let e=this._lbx.hostElement.children[t],h=this._getCommandParm(s);toggleClass(e,"wj-state-disabled",!this._canExecuteCommand(i,h))}}}}_clearHover(e){this._toHover&&clearTimeout(this._toHover);this._toHover=null;Menu._evtHover=e}_isTargetDisabled(e){return hasClass(e.target,"wj-state-disabled")}_hoverEnter(e){this._clearHover(e);this._toHover=setTimeout(()=>{this._toHover=null;this.isDroppedDown=!0},Control._HOVER_DELAY)}_hoverOver(e){this._clearHover(e);this._toHover=setTimeout(()=>{this._toHover=null;let t=this.listBox.indexOf(e.target);if(t>-1&&!hasClass(e.target,"wj-state-disabled")){this.selectedIndex=t;this._subMenu=this._showSubMenu()}},Control._HOVER_DELAY)}_hoverLeave(e){this._clearHover(e);this.isDroppedDown&&(this._toHover=setTimeout(()=>{let t=(e=Menu._evtHover)?document.elementFromPoint(e.clientX,e.clientY):null,s=closest(t,".wj-listbox.wj-menu-items"),i=this._subMenu;if(!s&&!contains(this.hostElement,t,!0)){this.isDroppedDown=!1;i&&(i.isDroppedDown=!1)}},Control._LEAVE_DELAY))}_setIsDisabled(e){super._setIsDisabled(e);this.hostElement.tabIndex=this.isDisabled?-1:this._orgTabIndex}_setTabOrder(e){super._setTabOrder(e);this.hostElement.tabIndex=this.isDisabled?-1:this._orgTabIndex}}export class InputTime extends ComboBox{constructor(e,t){super(e);this._format="t";this.valueChanged=new Event;addClass(this.hostElement,"wj-inputtime");this.isEditable=!0;this._value=DateTime.newDate();this._min=this._max=null;this._msk=new _MaskProvider(this._tbx);isIE9()||(this._tbx.type="tel");if("INPUT"==this._orgTag){let e=this._tbx.getAttribute("value");e&&(this.value=Globalize.parseDate(e,"HH:mm:ss"))}this.step=15;this.autoExpandSelection=!0;this.initialize(t);this._commitText()}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(e){this._tbx.type=asString(e)}get value(){return this._value}set value(e){(e=asDate(e,!this.isRequired))&&(e=this._clamp(e));this._setText(e?Globalize.format(e,this.format):"",!0);this.selectedItem&&this.selectedItem.value&&(e=DateTime.fromDateTime(e,this.selectedItem.value));if(e!=this._value&&!DateTime.equals(e,this._value)){this._value=e;this.onValueChanged()}}get text(){return this._tbx.value}set text(e){if(e!=this.text&&(this.text||!this.isRequired)){this._setText(e,!0);this._commitText()}!this.text&&this.isRequired&&(this.selectedIndex=this._oldIndexToBeRestoredOnBlur<0?0:this._oldIndexToBeRestoredOnBlur)}get min(){return this._min}set min(e){this._min=asDate(e,!0);this.isDroppedDown=!1;this._updateItems()}get max(){return this._max}set max(e){this._max=asDate(e,!0);this.isDroppedDown=!1;this._updateItems()}get step(){return this._step}set step(e){if(e!=this.step){this._step=asNumber(e,!0);this.isDroppedDown=!1;this._updateItems()}}get format(){return this._format}set format(e){if(e!=this.format){this._format=asString(e);this._tbx.value=Globalize.format(this.value,this.format);hasItems(this.collectionView)&&this._updateItems()}}get mask(){return this._msk.mask}set mask(e){this._msk.mask=asString(e)}onLostFocus(){super.onLostFocus()}onValueChanged(e){this.valueChanged.raise(this,e)}onItemsSourceChanged(e){super.onItemsSourceChanged(e);this._hasCustomItems=null!=this.itemsSource}refresh(e=!0){super.refresh(e);if(this.hostElement){this._msk.refresh();this._tbx.value=Globalize.format(this.value,this.format);this._updateItems()}}onSelectedIndexChanged(e){if(this.selectedIndex>-1&&!this._settingText){let e=this.value?this.value:DateTime.newDate(),t=null!=this.selectedItem.value?this.selectedItem.value:Globalize.parseDate(this.text,this.format,this.value);this.value=DateTime.fromDateTime(e,t)}super.onSelectedIndexChanged(e)}_clamp(e){null!=this._min&&this._getTime(e)<this._getTime(this._min)&&(e=DateTime.fromDateTime(e,this._min));null!=this._max&&this._getTime(e)>this._getTime(this._max)&&(e=DateTime.fromDateTime(e,this._max));return e}_wheel(e){if(!e.defaultPrevented&&!this.isDroppedDown&&!this.isReadOnly&&this.containsFocus()&&this.selectedIndex<0&&this.value&&isNumber(this.step)&&this.step>0){let t=DateTime.addMinutes(this.value,this.step*clamp(e.deltaY,-1,1));this.value=this._clamp(t);this.selectAll();e.preventDefault()}super._wheel(e)}_updateInputSelection(e){if(this._delKey)super._updateInputSelection(e);else{let t=this._tbx.value;for(;e<t.length&&!t[e].match(/[a-z0-9]/i);)e++;setSelectionRange(this._tbx,e,this._tbx.value.length)}}_updateItems(){if(this._hasCustomItems)return;let e=[],t=new Date(2020,0),s=new Date(2020,0,1,23,59,59),i=this.step;this.min&&t.setHours(this.min.getHours(),this.min.getMinutes(),this.min.getSeconds());this.max&&s.setHours(this.max.getHours(),this.max.getMinutes(),this.max.getSeconds());if(isNumber(i)&&i>=1)for(let h=t;h<=s;h=DateTime.addMinutes(h,i))e.push({value:h,text:Globalize.format(h,this.format)});let h=this.value;this._settingText=!0;this.displayMemberPath="text";this.selectedValuePath="text";this.itemsSource=e;this._hasCustomItems=!1;this._settingText=!1;!h&&this.isRequired||(this.value=h)}_getTime(e){return 3600*e.getHours()+60*e.getMinutes()+e.getSeconds()}_keydown(e){super._keydown(e);if(!e.defaultPrevented)switch(e.keyCode){case Key.Enter:if(!this.isDroppedDown){this._commitText();this.selectAll()}break;case Key.Escape:this.text=Globalize.format(this.value,this.format);this.selectAll()}}_commitText(){if(this.text||this.isRequired){let e=this.value?Globalize.format(this.value,this.format):"";if(this.text!=e){let t=this.selectedItem&&this.selectedItem.value?this.selectedItem.value:Globalize.parseDate(this.text,this.format,this.value);t?(DateTime.sameTime(t,this._clamp(t))||this.onInvalidInput(new CancelEventArgs))&&(this.value=DateTime.fromDateTime(this.value,t)):this.onInvalidInput(new CancelEventArgs)&&(this.text=e)}}else this.value=null}_copy(e,t){if("text"===e){(t||"").toString()!==this.text&&this._setText(t,!0);return!0}return!1}}_addCultureInfo("InputDateTime",{ariaLabels:{tglDate:"Toggle Calendar",tglTime:"Toggle Time List"}});export class InputDateTime extends InputDate{constructor(e,t){super(e);addClass(this.hostElement,"wj-inputdatetime");let s=culture.InputDateTime.ariaLabels;setAriaLabel(this._btn,s.tglDate);setAriaLabel(this._btnTm,s.tglTime);this.value=new Date;this.format="g";this._inputTime=new InputTime(document.createElement("div"),{valueChanged:e=>{let t=this.rangeEnd;this.value=DateTime.fromDateTime(this.value,e.value);this.calendar._rngMode()&&t&&(this.rangeEnd=DateTime.fromDateTime(t,e.value))},isDroppedDownChanged:e=>{e.listBox.containsFocus()&&this.inputElement.focus();this._selectAll()}});let i=this.addEventListener.bind(this);this._btnTm=this.hostElement.querySelector('[wj-part="btn-tm"]');i(this._btnTm,"mousedown",e=>{this._btnclick(e)});this._ddDate=this._dropDown;let h=this._ddTime=this._inputTime.dropDown;i(h,"keydown",this._keydown.bind(this),!0);i(h,"blur",()=>{this._updateFocusState()},!0);i(h,"click",e=>{e.defaultPrevented||e.target!=h&&this.hostElement.focus()},!0);this.initialize(t);this._commitText()}get timeMin(){return this._inputTime.min}set timeMin(e){this._inputTime.min=e}get timeMax(){return this._inputTime.max}set timeMax(e){this._inputTime.max=e}get timeFormat(){return this._inputTime.format}set timeFormat(e){this._inputTime.format=e}get timeStep(){return this._inputTime.step}set timeStep(e){this._inputTime.step=e;this._btnTm.style.display=isNumber(e)&&e>0?"":"none"}get inputTime(){return this._inputTime}_fromDateTime(e){return e}_btnclick(e){let t=closest(e.target,"button")==this._btn?this._ddDate:this._ddTime;this._setDropdown(t);super._btnclick(e)}dispose(){this._setDropdown(this._ddDate);super.dispose();this._inputTime.dispose()}refresh(e=!0){this._inputTime.refresh();super.refresh(e)}_updateBtn(){super._updateBtn();if(this._btnTm){this._btnTm.tabIndex=this._btn.tabIndex;this._btnTm.parentElement.style.display=this._btn.style.display}}_setDropdown(e){if(this._dropDown==e)return!1;this.isDroppedDown&&(this.isDroppedDown=!1);var t=this.dropDownCssClass;this.dropDownCssClass="";this._dropDown=e;this.dropDownCssClass=t;return!0}_updateDropDown(){let e=this._inputTime;if(this._dropDown==e.dropDown){this._commitText();super._updateDropDown();e.isRequired=this.isRequired&&null!=this.value;e.value=this.value;this.isDroppedDown&&e.listBox.showSelection()}else super._updateDropDown()}}InputDateTime.controlTemplate='<div class="wj-template"><div class="wj-input"><div class="wj-input-group wj-input-btn-visible"><input wj-part="input" type="text" class="wj-form-control"/><span class="wj-input-group-btn"><button wj-part="btn" class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-calendar"></span></button><button wj-part="btn-tm" class="wj-btn wj-btn-default" tabindex="-1"><span class="wj-glyph-clock"></span></button></span></div></div><div wj-part="dropdown" class="wj-content wj-dropdown-panel"></div></div>';export class AutoComplete extends ComboBox{constructor(e,t){super(e);this._cssMatch="wj-state-match";this._minLength=2;this._maxItems=6;this._itemCount=0;this._beginsWith=!1;this._delay=Control._SEARCH_DELAY;this._query="";this._inCallback=!1;this._srchProps=[];this._oldSelectedIndex=-1;addClass(this.hostElement,"wj-autocomplete");this._bsCollapse=!1;this.isEditable=!0;this.isRequired=!1;this.listBox.formatItem.addHandler(this._formatListItem,this);this._itemsSourceFnCallbackBnd=this._itemSourceFunctionCallback.bind(this);this.initialize(t)}get minLength(){return this._minLength}set minLength(e){this._minLength=asNumber(e,!1,!0)}get beginsWithSearch(){return this._beginsWith}set beginsWithSearch(e){this._beginsWith=asBoolean(e)}get maxItems(){return this._maxItems}set maxItems(e){this._maxItems=asNumber(e,!1,!0)}get delay(){return this._delay}set delay(e){this._delay=asNumber(e,!1,!0)}get searchMemberPath(){return this._srchProp}set searchMemberPath(e){this._srchProp=asString(e);this._srchProps=e?e.trim().split(/\s*,\s*/):[]}get itemsSourceFunction(){return this._itemsSourceFn}set itemsSourceFunction(e){this._itemsSourceFn=asFunction(e);isFunction(this._itemsSourceFn)&&this.itemsSourceFunction(this.text,this.maxItems,this._itemsSourceFnCallbackBnd)}get cssMatch(){return this._cssMatch}set cssMatch(e){this._cssMatch=asString(e)}onSelectedIndexChanged(e){this._settingText||super.onSelectedIndexChanged(e)}_keydown(e){if(!e.defaultPrevented&&this.isDroppedDown)switch(e.keyCode){case Key.Up:case Key.Down:this.selectAll()}super._keydown(e)}_setText(e){this.trimText&&!this.containsFocus()&&"string"==typeof e&&(e=e.trim());if(this._composing&&e!=this._oldText){this._oldText=e;this.onTextChanged()}if(!this._inCallback&&!this._settingText){this._toSearch||(this._oldSelectedIndex=this.selectedIndex);if(this.selectedIndex>-1&&this.getDisplayText()!=e){this._settingText=!0;this.selectedIndex=-1;this._settingText=!1}this._toSearch&&clearTimeout(this._toSearch);if(e!=this._oldText){"string"!=typeof e&&(e="");let t=this._tbx;const s=this._tbx.selectionStart;t.value!=e&&(t.value=e);this._isWheel&&this.containsFocus()&&this._updateInputSelection(s);this._oldText=e;this.onTextChanged();let i=this.collectionView;if(!e&&i){(this._query||this.selectedIndex<0)&&(this.isDroppedDown=!1);this._query=this._rxHighlight=null;i.filter=null;let e=this.itemsSourceFunction;if(isFunction(e)){this.isDroppedDown=!1;e(this._query,this.maxItems,this._itemsSourceFnCallbackBnd)}if(this.isRequired&&!this.containsFocus()){const e=this._oldSelectedIndex>-1?this._oldSelectedIndex:0;this.selectedIndex=e}-1==this.selectedIndex&&-1!=this._oldSelectedIndex&&this.onSelectedIndexChanged();return}}if(e!=this.getDisplayText()){if(!this.containsFocus()&&this.trimText)if(this.isRequired&&!this.text.trim().length){const e=this._oldSelectedIndex>-1?this._oldSelectedIndex:0;this.selectedIndex=e}else this._tbx.value=this._tbx.value.trim();if(!this.containsFocus()&&e.length<this.minLength)return;if(!this.containsFocus()&&(!e||this.trimText&&!this.text.trim().length||this.indexOf(e,!0)<0&&this.indexOf(e,!1)<0)&&this.isRequired&&!this.isEditable){const e=this._oldSelectedIndex>-1?this._oldSelectedIndex:0;this.selectedIndex=e}else if(!this.containsFocus()&&e&&this.indexOf(e,!0)<0&&this.indexOf(e,!1)<0&&!this.isRequired&&!this.isEditable){this._tbx.value="";this.selectedIndex=-1;this.onSelectedIndexChanged()}else this._toSearch=setTimeout(()=>{this._toSearch=null;let t=this.text;if(t.trim().length>=this._minLength&&t!=this._query){this._query=t.trim();t=escapeRegExp(t);let e=escapeHtml(t.trim()),s=this.caseSensitiveSearch?"":"i";this._beginsWith||(s+="g");this._rxSrch=this._beginsWith?new RegExp("^"+t+".*",s):new RegExp("(?=.*"+t.replace(/ /g,")(?=.*")+")",s);this._rxHighlight=this._beginsWith?new RegExp("^"+t,s):new RegExp("("+e.replace(/\s+/g,"|")+")",s);let i=this.itemsSourceFunction;isFunction(i)?i(this._query,this.maxItems,this._itemsSourceFnCallbackBnd):this._updateItems()}!e.trim().length&&!this.isEditable&&this.indexOf(e,!0)<0&&(this.selectedIndex=-1);-1==this.selectedIndex&&-1!=this._oldSelectedIndex&&this.onSelectedIndexChanged()},this._delay)}}}onLostFocus(e){let t=!1;if(this.isRequired&&!this.isEditable&&this.text){if(this.text.length<this.minLength)return;t=!0;let e=this.indexOf(this.text,!0);e<0&&(e=this.indexOf(this.text,!1));e>-1&&(this._oldSelectedIndex=e);e<0&&(this._oldSelectedIndex=0)}if(this._toSearch){clearTimeout(this._toSearch);let e=this._delay;this._delay=0;this._setText(this.text);this.delay=e}super.onLostFocus(e,this._oldSelectedIndex,t)}_itemSourceFunctionCallback(e){this._inCallback=!0;let t=asCollectionView(e||[]);t.moveCurrentToPosition(-1);this.itemsSource=t;this._inCallback=!1;if(this.containsFocus()){let e=this._tbx,t=e.selectionStart,s=e.selectionEnd,i=this.collectionView;this.isDroppedDown=null!=i&&i.items.length>0;setSelectionRange(e,t,s);this.refresh()}}onIsDroppedDownChanged(e){super.onIsDroppedDownChanged(e);if(this.containsFocus()&&!this.isTouching){let e=this.collectionView;if(this.selectedIndex<0&&e){let t=e.items,s=this.text;1==t.length&&t[0]==s?this.selectedIndex=0:setSelectionRange(this._tbx,s.length)}}this._query=""}_updateItems(){let e=this.collectionView;if(e){this._inCallback=!0;e.beginUpdate();this._itemCount=0;e.filter=this._filter.bind(this);e.moveCurrentToPosition(-1);e.endUpdate();this._inCallback=!1;let t=e.items.length,s=this._tbx,i=s.selectionStart,h=s.selectionEnd;this.text.trim()||(t=0);this.isDroppedDown=t>0&&this.containsFocus();t||this.isEditable||(this.selectedIndex=-1);if(1==t&&this.selectedIndex<0){let t=this._getItemText(e.items[0],!1),i=s.value;if(!this.caseSensitiveSearch){t=t.toLowerCase();i=i.toLowerCase()}(t==i||this.trimText&&t.trim()==i)&&(this.selectedIndex=0)}this.isDroppedDown&&setSelectionRange(s,i,h);this.refresh()}}_filter(e){if(this._itemCount>=this._maxItems&&this._query)return!1;let t=[this._getItemText(e,!1)];this._srchProps&&this._srchProps.forEach(s=>{let i=e[s];null!=i&&t.push(i)});this.isContentHtml&&(t=t.map(e=>e.replace(/(<[^>]*>|&[^;]*;)/g,"")));for(let e=0;e<t.length;e++)if(this._rxSrch.test(t[e])){this._itemCount++;return!0}return!1}_getItemText(e,t){let s=e?e.toString():"",i=t&&this.headerPath?this._pathHdr:this._lbx._pathDisplay;i&&(s=null!=(s=i.getValue(e))?s.toString():"");return s}_formatListItem(e,t){this._cssMatch&&this._rxHighlight&&this._query&&(t.item.innerHTML=t.item.innerHTML.replace(this._rxHighlight,(e,t,s,i)=>this._enclosed(i,s,"<",">")||this._enclosed(i,s,"&",";")?e:'<span class="'+this._cssMatch+'">'+e+"</span>"))}_enclosed(e,t,s,i){for(let h=t;h>=0&&e[h]!=i;h--)if(e[h]==s)for(let h=t;h<e.length&&e[h]!=s;h++)if(e[h]==i)return!0;return!1}_wheel(e){super._wheel(e)}}export class MultiAutoComplete extends AutoComplete{constructor(e,t){super(e);this._selItems=[];this._maxSelItems=null;this._lastInputValue="";this._selPath=new Binding(null);this._notAddItm=!1;this.selectedItemsChanged=new Event;addClass(this.hostElement,"wj-multi-autocomplete");this._wjTpl=this.hostElement.querySelector(".wj-template");this._wjInput=this.hostElement.querySelector(".wj-input");this.showDropDownButton=!1;this.initialize(t);this.addEventListener(this.hostElement,"keyup",this._keyup.bind(this),!0);this.addEventListener(window,"resize",this._adjustInputWidth.bind(this));this.addEventListener(this._tbx,"focus",()=>{this._itemOff()});this._addHelperInput();this._initSeltems();this.listBox.itemsChanged.addHandler(()=>this.selectedIndex=-1);this._refreshHeader();this._updateTabIndex()}set showDropDownButton(e){this._showBtn=!1}get maxSelectedItems(){return this._maxSelItems}set maxSelectedItems(e){if(this._maxSelItems!=e){this._maxSelItems=asNumber(e,!0);this._updateMaxItems();this._refreshHeader();this._clearSelIndex()}}get selectedMemberPath(){return this._selPath.path}set selectedMemberPath(e){if((e=asString(e))!==this.selectedMemberPath){this._selPath.path=e;this._initSeltems();this._refreshHeader();this.onSelectedItemsChanged()}}get selectedItems(){return this._selItems}set selectedItems(e){e=Array.from(new Set(e));let t=this._selItems===e;t||null==this._selItems||null==e||this._selItems.length!==e.length||(t=this._selItems.every((t,s)=>t===e[s]));this._selItems=asArray(e);if(!t){if(this.selectedMemberPath&&""!==this.selectedMemberPath&&this._selItems)for(let e=0;e<this._selItems.length;e++){let t=this._selItems[e];this._setSelItem(t,!1)}this._updateMaxItems();this.onSelectedItemsChanged();this._refreshHeader();this._clearSelIndex()}}onSelectedItemsChanged(e){this.selectedItemsChanged.raise(this,e)}onIsDroppedDownChanged(e){!this.isDroppedDown&&this.selectedIndex>-1&&!this._notAddItm&&this._addItem(!0);this._notAddItm=!1;super.onIsDroppedDownChanged(e)}refresh(e=!0){super.refresh(e);if(this.hostElement){this._initSeltems();this.isDroppedDown||this._refreshHeader()}}_keydown(e){if(!this.isReadOnly){if(!e.defaultPrevented)switch(e.keyCode){case Key.Back:this._lastInputValue=this._tbx.value;break;case Key.Enter:this._itemOff();this._addItem(!0);isIE()&&setSelectionRange(this._tbx,this._tbx.textContent.length,this._tbx.textContent.length);break;case Key.Tab:if(this.isDroppedDown){this._addItem(!1);this._tbx.value="";this._lbx.selectedIndex=-1;this.isDroppedDown=!1;this.containsFocus()||this.focus();e.preventDefault()}else this._updateFocus();break;case Key.Space:if(""!==this._tbx.value)return;if(!this.isDroppedDown&&!this._tbx.disabled){this.isDroppedDown=!0;this._clearSelIndex()}break;case Key.Escape:this.isDroppedDown&&(this._notAddItm=!0);break;case Key.Left:this._itemOn(!this.rightToLeft);break;case Key.Right:this._itemOn(!!this.rightToLeft);break;case Key.Up:case Key.Down:let t=getActiveElement();if(e.altKey){if(this._tbx==t){this.isDroppedDown=!this.isDroppedDown;this.isDroppedDown||this._tbx.focus();e.preventDefault();return}}else if(this._tbx!==t)return;default:if(e.keyCode===Key.Back||e.keyCode===Key.Delete)return;this._itemOff();null!=this._maxSelItems&&this._selItems.length>=this._maxSelItems&&e.preventDefault()}this._tbx.disabled||super._keydown(e)}}_updateState(){super._updateState();this._wjTpl&&(hasClass(this.hostElement,"wj-state-focused")||this._itemOff())}_keyup(e){if(!this.isReadOnly&&!e.defaultPrevented)switch(e.keyCode){case Key.Back:0===this._tbx.value.length&&0===this._lastInputValue.length&&this._delItem(!1);break;case Key.Delete:this._delItem(!0)}}_addHelperInput(){let e=document.createElement("input");e.type="text";e.tabIndex=-1;e.className="wj-token-helper";e.readOnly=!0;this._wjTpl.insertBefore(e,this._wjInput);this._helperInput=e}_refreshHeader(){let e=this.hostElement.querySelectorAll(".wj-token");for(let t=0;t<e.length;t++)this._wjTpl.removeChild(e[t]);let t=this.selectedItems;if(t&&0!==t.length){for(let e=0;e<t.length;e++)this._insertToken(t[e]);this._wjInput.style.cssFloat=this.rightToLeft?"right":"left";this._adjustInputWidth()}else{this._wjInput.style.cssFloat=this.rightToLeft?"right":"left";this._adjustInputWidth()}}_insertToken(e){let t=this._getItemText(e,!0);this.isContentHtml||(t=escapeHtml(t));this._wjTpl.insertBefore(this._createItem(t),this._wjInput)}_updateMaxItems(){null!=this._maxSelItems&&this._selItems&&this._selItems.length>this._maxSelItems&&(this._selItems=this._selItems.slice(0,this._maxSelItems))}_updateFocus(){let e=this._wjTpl.querySelector("."+MultiAutoComplete._clsActive);if(e){removeClass(e,MultiAutoComplete._clsActive);setTimeout(()=>{this._tbx.focus()})}else this._clearSelIndex()}_addItem(e){if(this.selectedItems.indexOf(this.selectedItem)>-1)this._clearSelIndex();else if(this.selectedIndex>-1){this._updateSelItems(this.selectedItem,!0);this._refreshHeader();e&&this._clearSelIndex();this._disableInput(!0)}}_delItem(e){let t,s,i=this._wjTpl.querySelector("."+MultiAutoComplete._clsActive),h=!1;if(!e||i){if(i){if((s=this._getItemIndex(i))>-1){t=this._selItems[s];h=!0}}else if(this._selItems.length>0){t=this._selItems[this._selItems.length-1];h=!0}if(h){this._updateSelItems(t,!1);this._refreshHeader();this._clearSelIndex();this._disableInput(!1)}this._tbx.focus()}}_updateSelItems(e,t){if(t){this._selItems&&0!==this._selItems.length||(this._selItems=[]);if(null!=this._maxSelItems&&this._selItems.length>=this._maxSelItems)return;this._selItems.push(e)}else{let t=this._selItems.indexOf(e);this._selItems.splice(t,1)}this._hasSelectedMemeberPath()&&this._setSelItem(e,t);this.onSelectedItemsChanged()}_createItem(e){let t=document.createElement("div"),s=document.createElement("span"),i=document.createElement("a");t.appendChild(s);t.appendChild(i);t.className="wj-token";s.className="wj-token-label";s.innerHTML=e;i.className="wj-token-close";i.href="#";i.tabIndex=-1;i.text="×";t.style.cssFloat=this.rightToLeft?"right":"left";this.addEventListener(t,"click",e=>{this._helperInput.focus();let s=this._wjTpl.querySelector("."+MultiAutoComplete._clsActive);s&&removeClass(s,MultiAutoComplete._clsActive);addClass(t,MultiAutoComplete._clsActive);e.stopPropagation();e.preventDefault()});this.addEventListener(i,"click",e=>{if(this.isReadOnly)return;let s=this._getItemIndex(t);if(s>-1){let e=this._selItems[s];this._updateSelItems(e,!1)}this._wjTpl.removeChild(t);this._adjustInputWidth();this._disableInput(!1);this._tbx.focus();e.stopPropagation();e.preventDefault()});return t}_itemOn(e){let t,s,i,h=getActiveElement();if((this._tbx!=h||0===this._tbx.value.length)&&0!==(t=this._wjTpl.querySelectorAll(".wj-token")).length){s=this._wjTpl.querySelector("."+MultiAutoComplete._clsActive);i=this._getItemIndex(s);if(e){if(0===i)return;if(-1===i){addClass(t[t.length-1],MultiAutoComplete._clsActive);this._helperInput.focus()}else{removeClass(s,MultiAutoComplete._clsActive);addClass(t[i-1],MultiAutoComplete._clsActive);this._helperInput.focus()}}else if(!e){if(-1===i)return;if(i!==t.length-1){removeClass(s,MultiAutoComplete._clsActive);addClass(t[i+1],MultiAutoComplete._clsActive);this._helperInput.focus()}else{removeClass(s,MultiAutoComplete._clsActive);this._tbx.focus()}}}}_itemOff(){let e=this._wjTpl.querySelector("."+MultiAutoComplete._clsActive);e&&removeClass(e,MultiAutoComplete._clsActive)}_initSeltems(){if(this.selectedMemberPath){this._selItems.splice(0,this._selItems.length);let e=this.collectionView;if(e)for(let t=0;t<e.sourceCollection.length;t++)this._getSelItem(t)&&this._selItems.push(e.sourceCollection[t])}}_getSelItem(e){let t=this.collectionView,s=t?t.sourceCollection[e]:null;return!(!isObject(s)||!this.selectedMemberPath)&&this._selPath.getValue(s)}_setSelItem(e,t){this.itemsSource;isObject(e)&&this._selPath.getValue(e)!=t&&this._selPath.setValue(e,t)}_clearSelIndex(){this.selectedIndex=-1}_hasSelectedMemeberPath(){return this.selectedMemberPath&&""!==this.selectedMemberPath}_disableInput(e){if(null!=this._maxSelItems)if(this._selItems.length<this._maxSelItems){this._tbx.disabled=!1;this._tbx.focus()}else{this._tbx.disabled=!0;this.hostElement.focus()}}_adjustInputWidth(){this._tbx.style.width="60px";let e,t=getElementRect(this.hostElement),s=getElementRect(this._tbx),i=getComputedStyle(this._tbx),h=parseInt(i.paddingLeft,10),n=parseInt(i.paddingRight,10);e=this.rightToLeft?s.left+s.width-t.left-h-n-8:t.left+t.width-s.left-h-n-8;this._tbx.style.width=e+"px"}_getItemIndex(e){let t=this.hostElement.querySelectorAll(".wj-token");for(let s=0;s<t.length;s++)if(e===t[s])return s;return-1}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){this._orgTabIndex=e;this._updateTabIndex()}_updateTabIndex(){let e=this.hostElement;this._tbx.tabIndex=this.isDisabled?-1:this._orgTabIndex;e.tabIndex=-1}}MultiAutoComplete._clsActive="wj-token-active";_registerModule("wijmo.input",selfModule);