@grapecity/wijmo.input 5.20241.19 → 5.20242.21

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20241.19
3
+ * Wijmo Library 5.20242.21
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
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,isSafari,setText,isDate,isBoolean,asDate,asInt,Globalize,_ClickRepeater,CollectionView,format,clamp,Color,_MaskProvider,getSpecialCharsRegex,isEdge,setChecked,Point,isArray,getElementRect,PopupPosition,moveFocus,getElement,isUndefined,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/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 u=a&&r>-1?2:null,c=Globalize.format(d,o,!1,t,u);n&&d>=0&&!l&&(c=this._chrNeg+c);a&&r>-1&&"g"==this._fmtSpc&&0!=this._fmtPrc&&(c=e).indexOf(h)<0&&(c+=h);if(i.value!=c){i.value=c;d=Globalize.parseFloat(c,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&&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(!this._isEqual(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._findArrayItem(this._checkedItems,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(h<i.length&&this._isEqual(t,i[h]))h++;else if(this._isEqual(t,e))return i.slice(0,h).concat([e]).concat(i.slice(h))}return i}{let t=this._findArrayItem(i,e);return i.slice(0,t).concat(i.slice(t+1))}}_isEqual(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}_findArrayItem(e,t){if(!Number.isNaN(t))return e.indexOf(t);for(var s=0;s<e.length;s++)if(Number.isNaN(e[s]))return s;return-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 u=this._getSelectedElement(!0);if(o){(u||e).focus({preventScroll:!0})}e.tabIndex=u?-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();if(!e.altKey){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);e._items&&"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 u=s.addDays(a,-7*this._wksBefore);for(let e=0;e<this._wksBefore;e++)u=this._addWeek(u,"wj-week-before");for(;u<=r;)u=this._addWeek(u);for(let e=0;e<this._wksAfter;e++)u=this._addWeek(u,"wj-week-after");(o=this._tbYr.querySelectorAll("td")).length&&setText(o[0],t(e,this._fmtYr));for(let i=1;i<o.length;i++){u=s.newDate(e.getFullYear(),i-1,1);let h=o[i],n=!this._monthInValidRange(u);h[Calendar._DATE_KEY]=u;setText(h,t(u,this._fmtMonths));toggleClass(h,"wj-state-disabled",n);setAriaLabel(h,Globalize.format(u,"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=!this._valid(n),a=n.getDay(),r=n.getMonth()!=this.displayMonth.getMonth();toggleClass(h,"wj-day-today",i.sameDate(n,i.newDate()));toggleClass(h,"wj-day-weekend",0==a||6==a);toggleClass(h,"wj-day-othermonth",r);toggleClass(h,"wj-state-invalid",l||!this._inValidRange(n))}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,u=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,u);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 u=this._keypress.bind(this);r(l,"keypress",u,!0);r(a,"keypress",u,!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,width:o.width,height:o.height,transform:"none"});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);let s=this.addEventListener.bind(this);isIE9()||(this.inputType="tel");this._tbx.type.match(/^(tel|text|)$/i)||(this.inputType="text");let i=this._mouseWheel.bind(this);s(this.hostElement,"wheel",i);let h=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=""}}),n=this._cal=new Calendar(document.createElement("div"));n.tabOrder=h.tabOrder=-1;let l=this._dropDown;addClass(l,"wj-inputdate-dropdown");l.appendChild(h.hostElement);l.appendChild(n.hostElement);this.addEventListener(l,"click",()=>{this._clicked=!0;setTimeout(()=>{this._clicked=!1},50)},!0);if("INPUT"==this._orgTag){let e=this._tbx.getAttribute("value");e&&(n.value=n.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();n.valueChanged.addHandler((e,t)=>{this._refreshText();this.onValueChanged(t);this._closeOnChange()});n.rangeEndChanged.addHandler((e,t)=>{if(n._rngMode()){this.onRangeEndChanged(t);this._closeOnChange();n._clearingRangeEnd||this._refreshText()}});n.hostElement.addEventListener("click",e=>{if(n.selectionMode&&!n._rngMode()){let t=e.target,s=n.hitTest(t);if(DateTime.sameDate(this.value,s)||closest(t,"[wj-part=btn-today]")){this._closeOnChange();this._refreshText()}}})}_mouseWheel(e){if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.containsFocus()&&null!=this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=this.value,l=culture.Globalize.calendar.patterns[this.format];null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}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()}onGotFocus(e){let t=this._tbx;this._elRef==t&&(this.isDroppedDown?this.dropDown.focus():this.selectAll());this.containsFocus()||this.focus();this.gotFocus.raise(this,e)}_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=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=(t.value,e.keyCode==Key.Up?1:-1),n=this.value,l=Globalize.getFullFormat(this.format);if("g"==this.format&&l.includes("г")){let e=/\"г.\" /;l=l.replace(e,"")}null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else this._updateDateTimeValue(h,a,l);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()}_updateDateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{let e=i.value.match(getSpecialCharsRegex());t.forEach((i,h)=>{let l=i.replaceAll('"',""),u=s.substring(o),c=n.substring(d),_=u.indexOf(i),m=c.indexOf(l);if(-1==m){let t=e[h];m=c.indexOf(t)}let p=u.substring(0,_);if(""!=p){a[p]=o;r[p]=d}o=o+_+i.length;d=d+m+l.length;if(h==t.length-1){p=s.substring(o);a[p]=o;r[p]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=c[u];-1!=p.indexOf("d")?l=DateTime.addDays(this.value,e):-1!=p.indexOf("M")?l=DateTime.addMonths(this.value,e):-1!=p.indexOf("y")&&(l=DateTime.addYears(this.value,e));this.value=l;this._reselectText(t,u)}_reselectText(e,t){let s=this._getText(),i=this._tbx,h=0,n=-1,l=-1;if(1==e.length&&""==e[0]){n=0;l=s.length}else{let a=i.value.match(getSpecialCharsRegex());e.forEach((e,i)=>{let r=e.replaceAll('"',""),o=s.substring(h);if(o.startsWith("г.")){o=o.replace("г. ","");h+="г. ".length}let d=o.indexOf(r);0==d&&t++;if(-1==d){let e=a[i];d=o.indexOf(e)}let u=-1===d?o:o.substring(0,d);i==t&&-1==n&&(l=(n=h)+u.length);h=h+d+r.length})}if(-1==n){n=h;l=i.value.length}setSelectionRange(i,n,l)}_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}_mouseWheel(e){if(!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()}}onGotFocus(e){let t=this._tbx;this._elRef!=t||this.isDroppedDown||this.selectAll();this.containsFocus()||this.focus();this.gotFocus.raise(this,e)}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){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)}}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)}});this._colorPicker.tabOrder=-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.replace(/\s+/g,"")))){this._setText(e,!0);this._commitText()}}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 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._textIsComposing="";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._textIsComposing=this.text;this._composing=!1;this._setText(this._textIsComposing,!0);setTimeout(()=>{this._textIsComposing=""})});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)});h.tabOrder=-1;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){if(this.displayMemberPath===e)return;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)&&!(this.isRequired&&!this.isEditable&&this.text&&this.indexOf(this.text,!1)>-1&&this.indexOf(this.text,!0)<0)){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,s=!1){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 i=this.selectedIndex,h=this.collectionView,n=this._getSelStart(),l=-1,a=!0;if(this.isEditable&&(this._delKey||this._getSelEnd()<e.length||!this.containsFocus())){t=!0;a=!1}i=this.indexOf(e,t);if(a){i<0&&t&&(i=this.indexOf(e,!1));i<0&&n>0&&!s&&(i=this.indexOf(e.substr(0,n),!1));if(!t){let t=this.indexOf(e,!0);t>-1&&i>-1&&t!=i&&(i=t)}}i<0&&this._delKey&&(i=this.indexOf(e,t));if(i<0&&!this.isEditable&&hasItems(h)&&(e&&this.isRequired||this.containsFocus()&&(e||this.isRequired))){let t=this._oldText||"";i=Math.max(0,this.indexOf(t,!1));n=0;for(let s=0;s<e.length&&s<t.length;s++)if(e[s]!=t[s]){n=s;break}}if((!this._delKey||!this.isEditable||this._delKey&&this.isEditable&&e==this.getDisplayText(i))&&(!this._pristine||this._pristine&&!this.isEditable)||this._isWheel||this._delKey&&""==e&&i>-1){if(i>-1){l=n;e=this.getDisplayText(i)}let t=this._tbx;e!=t.value&&(t.value=e);l>-1&&this.containsFocus()&&!this.isTouching&&this._updateInputSelection(l)}if(h){if(!e||this.trimText&&""==e.trim()&&!this.containsFocus()&&this.isEditable)if(i>-1)this._oldIndexToBeRestoredOnBlur=i;else{this._oldIndexToBeRestoredOnBlur=this.indexOf(this._oldText,!0);this._oldIndexToBeRestoredOnBlur=this._oldIndexToBeRestoredOnBlur<0?this.indexOf(this._oldText,!1):this._oldIndexToBeRestoredOnBlur}this._restoreComboboxTbxVal=e&&i>-1;h.moveCurrentToPosition(i)}this.containsFocus()||this.isEditable||this.isRequired||e!=e.trim()||!this.trimText||(this._tbx.value=this.getDisplayText(i,this.trimText));!this.containsFocus()&&i>-1&&this.isEditable&&(e=this.getDisplayText(i,this.trimText));!this.containsFocus()&&this._hasItems()&&i<0&&!this.isEditable&&!this.isRequired&&(e="");let r=!1;!e&&i<0&&this.isRequired&&!this.containsFocus()&&(r=!0);this.trimText&&!this.containsFocus()&&this.isEditable&&(this.isRequired&&""==e.trim()?r=!0:e=e.trim());if(r){this.selectedIndex=this._oldIndexToBeRestoredOnBlur;this.selectedIndex<0&&(this.selectedIndex=0)}let o=!this.containsFocus()&&!this.isEditable&&this.trimText;o&&(this._tbx.value=this.getDisplayText(i,!0));this._delKey=0;this._settingText=!1;super._setText(r?this.getDisplayText(this.selectedIndex):e,t,r,o)}_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());this.trimText&&(e=e.trim());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._textIsComposing?this._textIsComposing: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;this._lbx.itemsChanged.addHandler(()=>{this.isDroppedDown&&this.refresh()});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){const t=e.altKey&&(38===e.keyCode||40===e.keyCode);if(this.isDroppedDown&&t&&this.showFilterInput){this.isDroppedDown=!1;e.preventDefault()}else{super._keydown(e);hasClass(this._tbx,"wj-grid-ime")||!e.defaultPrevented&&hasItems(this.collectionView)&&e.keyCode>32&&123!==e.keyCode&&(this.isDroppedDown=!0)}}_hasItems(){let e=this.collectionView,t=e?e.sourceCollection:null;return hasItems(e)||t&&t.length&&this.showFilterInput}_updateHeader(e=!0,t=!0){let s="";if(isFunction(this._hdrFormatter))s=this._hdrFormatter(this);else{let e=this.checkedItems,t=[];if(this.displayMemberPath){let s=new Binding(this.displayMemberPath);t=e.reduce((e,t)=>{(t.binding?e.find(e=>e.binding===t.binding):e.find(e=>s.getValue(e)===s.getValue(t)))||e.push(t);return e},[]);e=t}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():""));s=e.join(", ")}else s=format(this.headerFormat||culture.MultiSelect.itemsSelected,{count:e.length})}let i=this.inputElement;if(s!=i.value){i.value=s;this.onTextChanged()}e&&this._lbx._updateCheckedList(this.checkedItems);this._updateState()}}MultiSelect._DEF_CHECKED_PATH="$checked";_addCultureInfo("Menu",{ariaLabels:{menuButton:"Menu"}});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._ariaLabel=culture.Menu.ariaLabels.menuButton;this._aFEnabledItem=!1;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","button");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()}}});this.addEventListener(this._hdr,"mousedown",e=>{if(!e.defaultPrevented){this._clearHover(e);if(!this._isButton){this.isDroppedDown=!this.isDroppedDown;e.preventDefault()}}});h.lostFocus.addHandler(()=>{this.containsFocus()||(this.isDroppedDown=!1)});addClass(n,"wj-menu-items");h.formatItem.addHandler(this._formatMenuItem.bind(this));this.initialize(t);setAttribute(s,"aria-expanded",!1);setAttribute(s,"aria-label",this._ariaLabel);setAttribute(s,"aria-haspopup","menu");setAttribute(s,"aria-owns",n.id);setAttribute(s,"aria-controls",n.id)}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){if(e!=this._ariaLabel){this._ariaLabel=e;setAttribute(this.hostElement,"aria-label",this._ariaLabel)}}get autoSelectOnFocus(){return this._aFEnabledItem}set autoSelectOnFocus(e){this._aFEnabledItem=e}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()}}}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);setAttribute(this.hostElement,"aria-expanded",this.isDroppedDown);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;if(this._aFEnabledItem){let e=this.dropDown.children;for(let t=0;t<e.length;t++)if(!e[t].classList.contains("wj-state-disabled")){this.selectedIndex=t;e[t].focus();break}}else 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");setAttribute(s,"aria-expanded",!1)}else if("-"==s.innerHTML){s.innerHTML="";addClass(s,"wj-separator");setAttribute(s,"role","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,h=i>-1?s.children[i]:s;setAttribute(h,"aria-expanded",!1);h.removeAttribute("aria-owns");h.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],s=t.getBoundingClientRect(),i=new Point(s.right,s.top);if(0==s.height)return null;let h=this.rightToLeft||"rtl"==this.dropDown.getAttribute("dir");h&&(i.x=s.left);let n=this._subMenu;n&&(n.isDroppedDown=!1);n=new Menu(document.createElement("div"),{owner:this.hostElement,itemsSource:e,autoSelectOnFocus:this._aFEnabledItem,itemClicked:(e,t)=>{this.itemClicked.raise(e,t)},formatItem:(e,t)=>{this.formatItem.raise(e,t)}});if(t){setAttribute(t,"aria-expanded",!0);setAttribute(t,"aria-owns",n.dropDown.id)}let l=this.collectionView,a=n.collectionView;l&&l.filter&&a&&!a.filter&&(a.filter=l.filter);"displayMemberPath,selectedValuePath,isContentHtml,command,commandPath,commandParameterPath,maxDropDownWidth,maxDropDownHeight,dropDownCssClass,isAnimated,subItemsPath,openOnHover,closeOnLeave".split(",").forEach(e=>{n[e]=this[e]});let r=n.dropDown;setAttribute(r,"dir",h?"rtl":null);n.show(i);r[Control._OWNR_KEY]=this.dropDown;return n}_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,!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(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.value&&this._canChangeValue()&&this.containsFocus()&&this.isEditable){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=(this.value,culture.Globalize.calendar.patterns[this.format]);null==n&&(n=this.format);let l=n.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=l&&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()}else this._updateTimeValue(h,l,n);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()}_getText(){let e=Globalize.format,t=this._format;return e(this.value,t)}_canChangeValue(){return!this.isReadOnly&&!this.isDisabled}getSeconds(e){return 3600*e.getHours()+60*e.getMinutes()+e.getSeconds()}_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();break;case Key.Up:case Key.Down:if(!this.isDroppedDown&&this.value&&this._canChangeValue()&&this.isEditable){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=e.keyCode==Key.Up?1:-1,n=culture.Globalize.calendar.patterns[this.format];null==n&&(n=this.format);let l=n.match(getSpecialCharsRegex());if(i-s!==t.value.length){if(!(1==h&&(null===this.max||this.getSeconds(this.value)<this.getSeconds(this.max))||-1==h&&(null===this.min||this.getSeconds(this.value)>this.getSeconds(this.min))))return;this._updateTimeValue(h,l,n);e.preventDefault()}}}super._keydown(e)}_updateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{t.forEach((e,i)=>{let h=e.replaceAll('"',""),l=s.substring(o),u=n.substring(d),c=l.indexOf(e),_=u.indexOf(h),m=l.substring(0,c);a[m]=o;r[m]=d;o=o+c+e.length;d=d+_+h.length;if(i==t.length-1&&-1!=_){m=s.substring(o);a[m]=o;r[m]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=c[u];-1!=p.indexOf("h")||-1!=p.indexOf("H")?l=DateTime.addHours(this.value,e):-1!=p.indexOf("m")?l=DateTime.addMinutes(this.value,e):-1!=p.indexOf("s")?l=DateTime.addSeconds(this.value,e):-1!=p.indexOf("t")&&(l=this.value.getHours()>=12?DateTime.addHours(this.value,-12):DateTime.addHours(this.value,12));this.value=l;this._reselectText(t,u)}_reselectText(e,t){let s=this._getText(),i=this._tbx,h=0,n=-1,l=-1;e.forEach((e,i)=>{let a=e.replaceAll('"',""),r=s.substring(h),o=r.indexOf(a),d=r.substring(0,o),u=""==d?r.length:d.length;i==t&&-1==n&&(l=(n=h)+u);h=h+o+a.length});if(-1==n){n=h;l=i.value.length}setSelectionRange(i,n,l)}_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()}_mouseWheel(e){if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.containsFocus()&&null!=this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=this.value,l=culture.Globalize.calendar.patterns[this.format];null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){case Key.Up:case Key.Down:if(!this.isDroppedDown&&this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=(t.value,e.keyCode==Key.Up?1:-1),n=this.value,l=Globalize.getFullFormat(this.format);if("g"==this.format&&l.includes("г")){let e=/\"г.\" /;l=l.replace(e,"")}null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}}super._keydown(e)}_updateDateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{let e=i.value.match(getSpecialCharsRegex());t.forEach((i,h)=>{let l=i.replaceAll('"',""),u=s.substring(o),c=n.substring(d);if(c.startsWith("г.")){c=c.replace("г. ","");d+="г. ".length}let _=u.indexOf(i),m=c.indexOf(l);if(-1==m){let t=e[h];m=c.indexOf(t)}let p=u.substring(0,_);if(""!=p){a[p]=o;r[p]=d}o=o+_+i.length;d=d+m+l.length;if(h==t.length-1&&-1!==m){p=s.substring(o);a[p]=o;r[p]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=new Date,g=new Date;null!==this.timeMax&&(p=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),this.timeMax.getHours(),this.timeMax.getMinutes(),this.timeMax.getSeconds()));null!==this.timeMin&&(g=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),this.timeMin.getHours(),this.timeMin.getMinutes(),this.timeMin.getSeconds()));let f=c[u];if(-1!=f.indexOf("d"))l=DateTime.addDays(this.value,e);else if(-1!=f.indexOf("M"))l=DateTime.addMonths(this.value,e);else if(-1!=f.indexOf("y"))l=DateTime.addYears(this.value,e);else if(1==e&&(null===this.timeMax||this.value<p)||-1==e&&(null===this.timeMin||this.value>g)){-1!=f.indexOf("h")||-1!=f.indexOf("H")?l=DateTime.addHours(this.value,e):-1!=f.indexOf("m")?l=DateTime.addMinutes(this.value,e):-1!=f.indexOf("s")?l=DateTime.addSeconds(this.value,e):-1!=f.indexOf("t")&&(l=this.value.getHours()>=12?DateTime.addHours(this.value,-12):DateTime.addHours(this.value,12));(this.timeMax&&l>p||this.timeMin&&l<g)&&(l=this.value)}this.value=l;this._reselectText(t,u)}}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){if(this._itemsSourceFn!==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||(isFirefox()||isSafari())&&this._composing)){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();const i=!this.containsFocus()&&e.length<this.minLength;var t=this.indexOf(e,!0),s=this.indexOf(e,!1);if(i)return;if(!this.containsFocus()&&(!e||this.trimText&&!this.text.trim().length||null!=this.collectionView&&t<0&&s<0)&&this.isRequired&&!this.isEditable){const e=this._oldSelectedIndex>-1?this._oldSelectedIndex:0;this.selectedIndex=e}else if((Array.isArray(this.itemsSource)||"function"==typeof this.itemsSourceFunction)&&!this.containsFocus()&&e&&t<0&&(s<0||s!=t)&&!this.isRequired&&!this.isEditable){this._tbx.value="";this.selectedIndex=-1;this.onSelectedIndexChanged()}else{const t=this._delay>0?setTimeout:(e,t)=>e();this._pendingSearchFn=()=>{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._toSearch=t(this._pendingSearchFn,this._delay)}}}}onLostFocus(e){let t=!1;if(this.isRequired&&!this.isEditable&&this.text&&this.text.length>=this.minLength){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);this.text!==this.getDisplayText()&&this._pendingSearchFn&&this._pendingSearchFn();t=!1}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);
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,_CLS_STATE_DISABLED,getUniqueId,isNumber,enable,isFunction,escapeRegExp,isSafari,setText,isDate,isBoolean,asDate,asInt,Globalize,_ClickRepeater,CollectionView,format,clamp,Color,_MaskProvider,getSpecialCharsRegex,isEmpty,isEdge,setChecked,Point,isArray,getElementRect,PopupPosition,moveFocus,getElement,isUndefined,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/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 u=a&&r>-1?2:null,c=Globalize.format(d,o,!1,t,u);n&&d>=0&&!l&&(c=this._chrNeg+c);a&&r>-1&&"g"==this._fmtSpc&&0!=this._fmtPrc&&(c=e).indexOf(h)<0&&(c+=h);if(i.value!=c){i.value=c;d=Globalize.parseFloat(c,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&&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(!this._isEqual(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._findArrayItem(this._checkedItems,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(h<i.length&&this._isEqual(t,i[h]))h++;else if(this._isEqual(t,e))return i.slice(0,h).concat([e]).concat(i.slice(h))}return i}{let t=this._findArrayItem(i,e);return i.slice(0,t).concat(i.slice(t+1))}}_isEqual(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}_findArrayItem(e,t){if(!Number.isNaN(t))return e.indexOf(t);for(var s=0;s<e.length;s++)if(Number.isNaN(e[s]))return s;return-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 u=this._getSelectedElement(!0);if(o){(u||e).focus({preventScroll:!0})}e.tabIndex=u?-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)){let s=this._children;const i=[];let h=!0;for(let e=0;e<s.length;e++){if(hasClass(s[e],_CLS_STATE_DISABLED))continue;let n=t.items[e];i.push(n);h&&!this.checkedItems.includes(n)&&(h=!1)}i.length!==t.items.length?this.checkedItems=h?this.checkedItems.filter(e=>!i.includes(e)):[...this.checkedItems,...i]: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();if(!e.altKey){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);e._items&&"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(!DateTime.sameDate(e,this._value)||!DateTime.sameTime(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 u=s.addDays(a,-7*this._wksBefore);for(let e=0;e<this._wksBefore;e++)u=this._addWeek(u,"wj-week-before");for(;u<=r;)u=this._addWeek(u);for(let e=0;e<this._wksAfter;e++)u=this._addWeek(u,"wj-week-after");(o=this._tbYr.querySelectorAll("td")).length&&setText(o[0],t(e,this._fmtYr));for(let i=1;i<o.length;i++){u=s.newDate(e.getFullYear(),i-1,1);let h=o[i],n=!this._monthInValidRange(u);h[Calendar._DATE_KEY]=u;setText(h,t(u,this._fmtMonths));toggleClass(h,"wj-state-disabled",n);setAriaLabel(h,Globalize.format(u,"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=!this._valid(n),a=n.getDay(),r=n.getMonth()!=this.displayMonth.getMonth();toggleClass(h,"wj-day-today",i.sameDate(n,i.newDate()));toggleClass(h,"wj-day-weekend",0==a||6==a);toggleClass(h,"wj-day-othermonth",r);toggleClass(h,"wj-state-invalid",l||!this._inValidRange(n))}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,u=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,u);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 u=this._keypress.bind(this);r(l,"keypress",u,!0);r(a,"keypress",u,!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,width:o.width,height:o.height,transform:"none"});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 InputDateEventArgs extends CancelEventArgs{constructor(e){super();this._isUserInput=e}get isUserInput(){return this._isUserInput}}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._previousText="";this._keepInvalidText=!1;this._currentInput="";this.valueChanged=new Event;this.rangeEndChanged=new Event;this.rangeChanged=new Event;addClass(this.hostElement,"wj-inputdate");this._msk=new _MaskProvider(this._tbx);let s=this.addEventListener.bind(this);isIE9()||(this.inputType="tel");this._tbx.type.match(/^(tel|text|)$/i)||(this.inputType="text");let i=this._mouseWheel.bind(this);s(this.hostElement,"wheel",i);let h=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=""}}),n=this._cal=new Calendar(document.createElement("div"));n.tabOrder=h.tabOrder=-1;let l=this._dropDown;addClass(l,"wj-inputdate-dropdown");l.appendChild(h.hostElement);l.appendChild(n.hostElement);this.addEventListener(l,"click",()=>{this._clicked=!0;setTimeout(()=>{this._clicked=!1},50)},!0);if("INPUT"==this._orgTag){let e=this._tbx.getAttribute("value");e&&(n.value=n.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._currentInput="text";this._textInitialized=!0;this._commitText();this.onTextChanged()}this._updateState();n.valueChanged.addHandler((e,t)=>{this._refreshText();this.onValueChanged(t);this._closeOnChange()});n.rangeEndChanged.addHandler((e,t)=>{if(n._rngMode()){this.onRangeEndChanged(t);this._closeOnChange();n._clearingRangeEnd||this._refreshText()}});n.hostElement.addEventListener("click",e=>{if(n.selectionMode&&!n._rngMode()){let t=e.target,s=n.hitTest(t);if(DateTime.sameDate(this.value,s)||closest(t,"[wj-part=btn-today]")){this._closeOnChange();this._refreshText()}}})}_mouseWheel(e){if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.containsFocus()&&null!=this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=this.value,l=culture.Globalize.calendar.patterns[this.format];null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){for(let e=1;;e++){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,e*h):DateTime.addDays(this.value,e*h);if(this._isValidDate(n)||!(null===this.max||n<this.max)||!(null===this.min||n>this.min))break}this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this.text===this._getText()&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}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 keepInvalidText(){return this._keepInvalidText}set keepInvalidText(e){if(new Set(["InputDateTime","WjInputDateTime"]).has(this.constructor.name)){this._keepInvalidText=!1;throw"keepInvalidText property cannot be used with InputDateTime control"}this._keepInvalidText=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);if(t!=this._oldText){this._oldText=t;this._previousText=t}if(isEmpty(this._currentInput)){this._textInitialized=!0;this._currentInput="text";this._commitText()}this.onTextChanged();this._currentInput=""}}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()}onGotFocus(e){let t=this._tbx;this._elRef==t&&(this.isDroppedDown?this.dropDown.focus():this.selectAll());this.containsFocus()||this.focus();this.gotFocus.raise(this,e)}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){case Key.Enter:this._currentInput="user";this._textInitialized=!1;this._commitText();break;case Key.Escape:this.text=this._getText();this.selectAll();break;case Key.Tab:this._currentInput="user";this._textInitialized=!1;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()){this._currentInput="user";this._textInitialized=!1;let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=(t.value,e.keyCode==Key.Up?1:-1),n=this.value,l=Globalize.getFullFormat(this.format);if("g"==this.format&&l.includes("г")){let e=/\"г.\" /;l=l.replace(e,"")}null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){for(let e=1;;e++){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,e*h):DateTime.addDays(this.value,e*h);if(this._isValidDate(n)||!(null===this.max||n<this.max)||!(null===this.min||n>this.min))break}this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else this.text===this._getText()&&this._updateDateTimeValue(h,a,l);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()}_updateDateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{let e=i.value.match(getSpecialCharsRegex());t.forEach((i,h)=>{let l=i.replaceAll('"',""),u=s.substring(o),c=n.substring(d),_=u.indexOf(i),m=c.indexOf(l);if(-1==m){let t=e[h];m=c.indexOf(t)}let p=u.substring(0,_);if(""!=p){a[p]=o;r[p]=d}o=o+_+i.length;d=d+m+l.length;if(h==t.length-1){p=s.substring(o);a[p]=o;r[p]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=c[u];for(let t=1;;t++){-1!=p.indexOf("d")?l=DateTime.addDays(this.value,t*e):-1!=p.indexOf("M")?l=DateTime.addMonths(this.value,t*e):-1!=p.indexOf("y")&&(l=DateTime.addYears(this.value,t*e));if(this._isValidDate(l)||!(null===this.max||l<this.max)||!(null===this.min||l>this.min))break}this.value=l;this._reselectText(t,u)}_reselectText(e,t){let s=this._getText(),i=this._tbx,h=0,n=-1,l=-1;if(1==e.length&&""==e[0]){n=0;l=s.length}else{let a=i.value.match(getSpecialCharsRegex());e.forEach((e,i)=>{let r=e.replaceAll('"',""),o=s.substring(h);if(o.startsWith("г.")){o=o.replace("г. ","");h+="г. ".length}let d=o.indexOf(r);0==d&&t++;if(-1==d){let e=a[i];d=o.indexOf(e)}let u=-1===d?o:o.substring(0,d);i==t&&-1==n&&(l=(n=h)+u.length);h=h+d+r.length})}if(-1==n){n=h;l=i.value.length}setSelectionRange(i,n,l)}_refreshText(){let e=this._getText();if(e!=this.text||e!==this._oldText){this._tbx.value=this._oldText=this._previousText=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&&(this.rightToLeft?s=e(this.rangeEnd,t)+this._sep+s:s+=this._sep+e(this.rangeEnd,t));return s}_commitText(e){let t=this._tbx.value;if(isEmpty(this._currentInput)){this._textInitialized=!1;this._currentInput="user"}let s=!1,i=this._fmt,h=this._cal,n=Globalize.parseDate,l=new InputDateEventArgs(!this._textInitialized);if(t)if(h._rngMode()){let e=t.split(this._sep),a=this.rightToLeft?e[1]:e[0];if(2==e.length&&a){let t=n(a,i,this.value);if(t){let a=n(this.rightToLeft?e[0]:e[1],i,this.value);if(DateTime.sameDate(t,this._clamp(t)))s=!0;else if(this.onInvalidInput(l))this._textInitialized&&this._keepInvalidText||(s=!0);else{this._selectAll();s=!1}if(s)if(DateTime.sameDate(a,this._clamp(a))){h.value=this._fromDateTime(t);h.rangeEnd=a&&a>=t?this._fromDateTime(a):t}else this._triggerInvalidInputEvent(l,t,a)}else this._nullValueInvalidInput(l)}else this._nullValueInvalidInput(l)}else{let e=n(t,i,this.value);e?DateTime.sameDate(e,this._clamp(e))?this.value=this._fromDateTime(e):this._triggerInvalidInputEvent(l,e):this._nullValueInvalidInput(l)}else if(this.isRequired){let e=n(t,i,this.value);e?this.value=this._fromDateTime(e):this.containsFocus()||(this.text=this._getText())}else this.value=this.rangeEnd=null;this._currentInput="";e||this._selectAll()}_triggerInvalidInputEvent(e,t,s){if(this.onInvalidInput(e)){if(!this._textInitialized||!this._keepInvalidText){this.value=this._fromDateTime(t);this.calendar._rngMode()&&(this.calendar.rangeEnd=s&&s>=t?this._fromDateTime(s):t)}}else this._selectAll()}_nullValueInvalidInput(e){this.onInvalidInput(e)?this._textInitialized&&this._keepInvalidText||(this.text=this._getText()):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._currentInput="text";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}_mouseWheel(e){if(!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()}}onGotFocus(e){let t=this._tbx;this._elRef!=t||this.isDroppedDown||this.selectAll();this.containsFocus()||this.focus();this.gotFocus.raise(this,e)}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){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)}}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)}});this._colorPicker.tabOrder=-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.replace(/\s+/g,"")))){this._setText(e,!0);this._commitText()}}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 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._textIsComposing="";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._textIsComposing=this.text;this._composing=!1;this._setText(this._textIsComposing,!0);setTimeout(()=>{this._textIsComposing=""})});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)});h.tabOrder=-1;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){if(this.displayMemberPath===e)return;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)&&!(this.isRequired&&!this.isEditable&&this.text&&this.indexOf(this.text,!1)>-1&&this.indexOf(this.text,!0)<0)){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,s=!1){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 i=this.selectedIndex,h=this.collectionView,n=this._getSelStart(),l=-1,a=!0;if(this.isEditable&&(this._delKey||this._getSelEnd()<e.length||!this.containsFocus())){t=!0;a=!1}i=this.indexOf(e,t);if(a){i<0&&t&&(i=this.indexOf(e,!1));i<0&&n>0&&!s&&(i=this.indexOf(e.substr(0,n),!1));if(!t){let t=this.indexOf(e,!0);t>-1&&i>-1&&t!=i&&(i=t)}}i<0&&this._delKey&&(i=this.indexOf(e,t));if(i<0&&!this.isEditable&&hasItems(h)&&(e&&this.isRequired||this.containsFocus()&&(e||this.isRequired))){let t=this._oldText||"";i=Math.max(0,this.indexOf(t,!1));n=0;for(let s=0;s<e.length&&s<t.length;s++)if(e[s]!=t[s]){n=s;break}}if((!this._delKey||!this.isEditable||this._delKey&&this.isEditable&&e==this.getDisplayText(i))&&(!this._pristine||this._pristine&&!this.isEditable)||this._isWheel||this._delKey&&""==e&&i>-1){if(i>-1){l=n;e=this.getDisplayText(i)}let t=this._tbx;e!=t.value&&(t.value=e);l>-1&&this.containsFocus()&&!this.isTouching&&this._updateInputSelection(l)}if(h){if(!e||this.trimText&&""==e.trim()&&!this.containsFocus()&&this.isEditable)if(i>-1)this._oldIndexToBeRestoredOnBlur=i;else{this._oldIndexToBeRestoredOnBlur=this.indexOf(this._oldText,!0);this._oldIndexToBeRestoredOnBlur=this._oldIndexToBeRestoredOnBlur<0?this.indexOf(this._oldText,!1):this._oldIndexToBeRestoredOnBlur}this._restoreComboboxTbxVal=e&&i>-1;h.moveCurrentToPosition(i)}this.containsFocus()||this.isEditable||this.isRequired||e!=e.trim()||!this.trimText||(this._tbx.value=this.getDisplayText(i,this.trimText));!this.containsFocus()&&i>-1&&this.isEditable&&(e=this.getDisplayText(i,this.trimText));!this.containsFocus()&&this._hasItems()&&i<0&&!this.isEditable&&!this.isRequired&&(e="");let r=!1;!e&&i<0&&this.isRequired&&!this.containsFocus()&&(r=!0);this.trimText&&!this.containsFocus()&&this.isEditable&&(this.isRequired&&""==e.trim()?r=!0:e=e.trim());if(r){this.selectedIndex=this._oldIndexToBeRestoredOnBlur;this.selectedIndex<0&&(this.selectedIndex=0)}let o=!this.containsFocus()&&!this.isEditable&&this.trimText;o&&(this._tbx.value=this.getDisplayText(i,!0));this._delKey=0;this._settingText=!1;super._setText(r?this.getDisplayText(this.selectedIndex):e,t,r,o)}_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());this.trimText&&(e=e.trim());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._textIsComposing?this._textIsComposing: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;this._lbx.itemsChanged.addHandler(()=>{this.isDroppedDown&&this.refresh()});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){const t=e.altKey&&(38===e.keyCode||40===e.keyCode);if(this.isDroppedDown&&t&&this.showFilterInput){this.isDroppedDown=!1;e.preventDefault()}else{super._keydown(e);hasClass(this._tbx,"wj-grid-ime")||!e.defaultPrevented&&hasItems(this.collectionView)&&e.keyCode>32&&123!==e.keyCode&&(this.isDroppedDown=!0)}}_hasItems(){let e=this.collectionView,t=e?e.sourceCollection:null;return hasItems(e)||t&&t.length&&this.showFilterInput}_updateHeader(e=!0,t=!0){let s="";if(isFunction(this._hdrFormatter))s=this._hdrFormatter(this);else{let e=this.checkedItems,t=[];if(this.displayMemberPath){let s=new Binding(this.displayMemberPath);t=e.reduce((e,t)=>{(t.binding?e.find(e=>e.binding===t.binding):e.find(e=>s.getValue(e)===s.getValue(t)))||e.push(t);return e},[]);e=t}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():""));s=e.join(", ")}else s=format(this.headerFormat||culture.MultiSelect.itemsSelected,{count:e.length})}let i=this.inputElement;if(s!=i.value){i.value=s;this.onTextChanged()}e&&this._lbx._updateCheckedList(this.checkedItems);this._updateState()}}MultiSelect._DEF_CHECKED_PATH="$checked";_addCultureInfo("Menu",{ariaLabels:{menuButton:"Menu"}});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._ariaLabel=culture.Menu.ariaLabels.menuButton;this._aFEnabledItem=!1;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","button");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()}}});this.addEventListener(this._hdr,"mousedown",e=>{if(!e.defaultPrevented){this._clearHover(e);if(!this._isButton){this.isDroppedDown=!this.isDroppedDown;e.preventDefault()}}});h.lostFocus.addHandler(()=>{this.containsFocus()||(this.isDroppedDown=!1)});addClass(n,"wj-menu-items");h.formatItem.addHandler(this._formatMenuItem.bind(this));this.initialize(t);setAttribute(s,"aria-expanded",!1);setAttribute(s,"aria-label",this._ariaLabel);setAttribute(s,"aria-haspopup","menu");setAttribute(s,"aria-owns",n.id);setAttribute(s,"aria-controls",n.id)}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){if(e!=this._ariaLabel){this._ariaLabel=e;setAttribute(this.hostElement,"aria-label",this._ariaLabel)}}get autoSelectOnFocus(){return this._aFEnabledItem}set autoSelectOnFocus(e){this._aFEnabledItem=e}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()}}}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);setAttribute(this.hostElement,"aria-expanded",this.isDroppedDown);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;if(this._aFEnabledItem){let e=this.dropDown.children;for(let t=0;t<e.length;t++)if(!e[t].classList.contains("wj-state-disabled")){this.selectedIndex=t;e[t].focus();break}}else 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");setAttribute(s,"aria-expanded",!1)}else if("-"==s.innerHTML){s.innerHTML="";addClass(s,"wj-separator");setAttribute(s,"role","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,h=i>-1?s.children[i]:s;setAttribute(h,"aria-expanded",!1);h.removeAttribute("aria-owns");h.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],s=t.getBoundingClientRect(),i=new Point(s.right,s.top);if(0==s.height)return null;let h=this.rightToLeft||"rtl"==this.dropDown.getAttribute("dir");h&&(i.x=s.left);let n=this._subMenu;n&&(n.isDroppedDown=!1);n=new Menu(document.createElement("div"),{owner:this.hostElement,itemsSource:e,autoSelectOnFocus:this._aFEnabledItem,itemClicked:(e,t)=>{this.itemClicked.raise(e,t)},formatItem:(e,t)=>{this.formatItem.raise(e,t)}});if(t){setAttribute(t,"aria-expanded",!0);setAttribute(t,"aria-owns",n.dropDown.id)}let l=this.collectionView,a=n.collectionView;l&&l.filter&&a&&!a.filter&&(a.filter=l.filter);"displayMemberPath,selectedValuePath,isContentHtml,command,commandPath,commandParameterPath,maxDropDownWidth,maxDropDownHeight,dropDownCssClass,isAnimated,subItemsPath,openOnHover,closeOnLeave".split(",").forEach(e=>{n[e]=this[e]});let r=n.dropDown;setAttribute(r,"dir",h?"rtl":null);n.show(i);r[Control._OWNR_KEY]=this.dropDown;return n}_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,!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(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.value&&this._canChangeValue()&&this.containsFocus()&&this.isEditable){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=(this.value,culture.Globalize.calendar.patterns[this.format]);null==n&&(n=this.format);let l=n.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=l&&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()}else this._updateTimeValue(h,l,n);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()}_getText(){let e=Globalize.format,t=this._format;return e(this.value,t)}_canChangeValue(){return!this.isReadOnly&&!this.isDisabled}getSeconds(e){return 3600*e.getHours()+60*e.getMinutes()+e.getSeconds()}_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();break;case Key.Up:case Key.Down:if(!this.isDroppedDown&&this.value&&this._canChangeValue()&&this.isEditable){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=e.keyCode==Key.Up?1:-1,n=culture.Globalize.calendar.patterns[this.format];null==n&&(n=this.format);let l=n.match(getSpecialCharsRegex());if(i-s!==t.value.length){if(!(1==h&&(null===this.max||this.getSeconds(this.value)<this.getSeconds(this.max))||-1==h&&(null===this.min||this.getSeconds(this.value)>this.getSeconds(this.min))))return;this._updateTimeValue(h,l,n);e.preventDefault()}}}super._keydown(e)}_updateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{t.forEach((e,i)=>{let h=e.replaceAll('"',""),l=s.substring(o),u=n.substring(d),c=l.indexOf(e),_=u.indexOf(h),m=l.substring(0,c);a[m]=o;r[m]=d;o=o+c+e.length;d=d+_+h.length;if(i==t.length-1&&-1!=_){m=s.substring(o);a[m]=o;r[m]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=c[u];-1!=p.indexOf("h")||-1!=p.indexOf("H")?l=DateTime.addHours(this.value,e):-1!=p.indexOf("m")?l=DateTime.addMinutes(this.value,e):-1!=p.indexOf("s")?l=DateTime.addSeconds(this.value,e):-1!=p.indexOf("t")&&(l=this.value.getHours()>=12?DateTime.addHours(this.value,-12):DateTime.addHours(this.value,12));this.value=l;this._reselectText(t,u)}_reselectText(e,t){let s=this._getText(),i=this._tbx,h=0,n=-1,l=-1;e.forEach((e,i)=>{let a=e.replaceAll('"',""),r=s.substring(h),o=r.indexOf(a),d=r.substring(0,o),u=""==d?r.length:d.length;i==t&&-1==n&&(l=(n=h)+u);h=h+o+a.length});if(-1==n){n=h;l=i.value.length}setSelectionRange(i,n,l)}_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)}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()}_mouseWheel(e){if(this.handleWheel&&!e.defaultPrevented&&!this.isDroppedDown&&this.containsFocus()&&null!=this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=clamp(-e.deltaY,-1,1),n=this.value,l=culture.Globalize.calendar.patterns[this.format];null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this.text===this._getText()&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}_keydown(e){if(!(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey)){if(this._isHiddenEditor())return;switch(e.keyCode){case Key.Up:case Key.Down:if(!this.isDroppedDown&&this.value&&this._canChangeValue()){let t=this._tbx,s=t.selectionStart,i=t.selectionEnd,h=(t.value,e.keyCode==Key.Up?1:-1),n=this.value,l=Globalize.getFullFormat(this.format);if("g"==this.format&&l.includes("г")){let e=/\"г.\" /;l=l.replace(e,"")}null==l&&(l=this.format);let a=l.match(getSpecialCharsRegex());if(i-s===t.value.length&&null!=a||this.selectionMode==DateSelectionMode.Range){n=this.selectionMode==DateSelectionMode.Month?DateTime.addMonths(this.value,h):DateTime.addDays(this.value,h);this.value=n;let e=this._getText();setSelectionRange(t,0,e.length)}else(1==h&&(null===this.max||this.value<this.max)||-1==h&&(null===this.min||this.value>this.min))&&this.text===this._getText()&&this._updateDateTimeValue(h,a,l);e.preventDefault()}}}super._keydown(e)}_updateDateTimeValue(e,t,s){let i=this._tbx,h=i.selectionStart,n=i.value,l=this.value,a={},r={},o=0,d=0,u=0,c=[],_=[];if(null==t){c=[this.format];_=["0"];t=[""]}else{let e=i.value.match(getSpecialCharsRegex());t.forEach((i,h)=>{let l=i.replaceAll('"',""),u=s.substring(o),c=n.substring(d);if(c.startsWith("г.")){c=c.replace("г. ","");d+="г. ".length}let _=u.indexOf(i),m=c.indexOf(l);if(-1==m){let t=e[h];m=c.indexOf(t)}let p=u.substring(0,_);if(""!=p){a[p]=o;r[p]=d}o=o+_+i.length;d=d+m+l.length;if(h==t.length-1&&-1!==m){p=s.substring(o);a[p]=o;r[p]=d}});c=Object.keys(a);_=Object.values(r)}let m=_.filter(e=>h>=parseInt(e.toString()));m.length>0&&(u=m.length-1);let p=new Date,g=new Date;null!==this.timeMax&&(p=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),this.timeMax.getHours(),this.timeMax.getMinutes(),this.timeMax.getSeconds()));null!==this.timeMin&&(g=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),this.timeMin.getHours(),this.timeMin.getMinutes(),this.timeMin.getSeconds()));let f=c[u];if(-1!=f.indexOf("d"))l=DateTime.addDays(this.value,e);else if(-1!=f.indexOf("M"))l=DateTime.addMonths(this.value,e);else if(-1!=f.indexOf("y"))l=DateTime.addYears(this.value,e);else if(1==e&&(null===this.timeMax||this.value<p)||-1==e&&(null===this.timeMin||this.value>g)){-1!=f.indexOf("h")||-1!=f.indexOf("H")?l=DateTime.addHours(this.value,e):-1!=f.indexOf("m")?l=DateTime.addMinutes(this.value,e):-1!=f.indexOf("s")?l=DateTime.addSeconds(this.value,e):-1!=f.indexOf("t")&&(l=this.value.getHours()>=12?DateTime.addHours(this.value,-12):DateTime.addHours(this.value,12));(this.timeMax&&l>p||this.timeMin&&l<g)&&(l=this.value)}this.value=l;this._reselectText(t,u)}_commitText(){let e=this._tbx.value,t=Globalize.parseDate(e,this.format,this.value),s=new Date,i=new Date;if(t){null!==this.timeMax&&(s=new Date(t.getFullYear(),t.getMonth(),t.getDate(),this.timeMax.getHours(),this.timeMax.getMinutes(),this.timeMax.getSeconds()));null!==this.timeMin&&(i=new Date(t.getFullYear(),t.getMonth(),t.getDate(),this.timeMin.getHours(),this.timeMin.getMinutes(),this.timeMin.getSeconds()));(this.timeMax&&t>s||this.timeMin&&t<i)&&(this.value=DateTime.fromDateTime(t,this.value));super._commitText()}else super._commitText()}}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._selItems=null;this._query="";this._inCallback=!1;this._srchProps=[];this._oldSelectedIndex=-1;this._isBlurInput=!1;this._ctrlReset=!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){if(this._itemsSourceFn!==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)}_commitText(e){if(e&&this._composing&&this.isDroppedDown&&!isFirefox()&&!isSafari()&&""==this._textIsComposing){this._isBlurInput=!0;this.isDroppedDown=!1;setTimeout(()=>{this.onLostFocus()},this.delay+1)}e&&!this._composing&&(isFirefox()||isSafari())&&getActiveElement()==this.inputElement&&this.onLostFocus()}_setText(e){if(this._isBlurInput&&0==this.text.length){this._tbx.value=e;this._isBlurInput=!1}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||(isFirefox()||isSafari())&&this._composing)){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()&&!Array.isArray(this._selItems)){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();const i=!this.containsFocus()&&e.length<this.minLength;this.collectionView&&!this.containsFocus()&&(this.collectionView.filter=null);var t=this.indexOf(e,!0),s=this.indexOf(e,!1);if(i)return;if(!this.containsFocus()&&(!e||this.trimText&&!this.text.trim().length||null!=this.collectionView&&t<0&&s<0)&&this.isRequired&&!this.isEditable){const e=this._oldSelectedIndex>-1?this._oldSelectedIndex:hasItems(this.collectionView)?0:-1;e!=this.selectedIndex&&(this.selectedIndex=e)}else if((Array.isArray(this.itemsSource)||"function"==typeof this.itemsSourceFunction)&&!this.containsFocus()&&e&&t<0&&(s<0||s!=t)&&!this.isRequired&&!this.isEditable){this._tbx.value="";this.selectedIndex=-1;this.onSelectedIndexChanged()}else{const t=this._delay>0?setTimeout:(e,t)=>e();this._pendingSearchFn=()=>{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._toSearch=t(this._pendingSearchFn,this._delay)}}}}onLostFocus(e){let t=!1;if(this.isRequired&&!this.isEditable&&this.text&&this.text.length>=this.minLength){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);this.text!==this.getDisplayText()&&this._pendingSearchFn&&this._pendingSearchFn();t=!1}super.onLostFocus(e,this._oldSelectedIndex,t)}onGotFocus(e){if(this._ctrlReset){this._oldSelectedIndex=this.selectedIndex;this._ctrlReset=!1}super.onGotFocus(e)}reset(){this._ctrlReset=!0;this._oldSelectedIndex=-1}_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._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._selItems=[];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(()=>{let e=this.collectionView;(e&&("CollectionView"==e.constructor.name||"ODataVirtualCollectionView"==e.constructor.name)||e.virtualization)&&(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);