UNPKG

@mescius/wijmo.input

Version:

UI library for pure JS, Angular, React, Vue and more...

14 lines (13 loc) 214 kB
/*! * * Wijmo Library 5.20251.40 * https://developer.mescius.com/wijmo * * Copyright(c) MESCIUS inc. All rights reserved. * * Licensed under the End-User License Agreement For MESCIUS Wijmo Software. * us.sales@mescius.com * https://developer.mescius.com/wijmo/licensing * */ 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,ControlStateClsNames,GlyphClsNames,ControlClsNames,InputFormElementsClsNames,tryCast,createElement,hasItems,isObject,isString,asArray,asFunction,asNumber,asType,asCollectionView,closest,escapeHtml,toPlainText,setCss,Binding,Rect,DateTime,assert,isFirefox,_CLS_STATE_DISABLED,UtilitesClsNames,_setAriaLabelBy,getUniqueId,isNumber,enable,isFunction,escapeRegExp,isSafari,setText,isDate,isBoolean,asDate,asInt,Globalize,_ClickRepeater,CollectionView,format,uidGenerator,moveFocus,_isMacOS,clamp,Color,_MaskProvider,getSpecialCharsRegex,isEmpty,isNullOrUndefined,isEdge,setChecked,Point,isArray,getElementRect,PopupPosition,getElement,isUndefined,_registerModule}from"@mescius/wijmo";import*as selfModule from"@mescius/wijmo.input";export const AutoCompleteClsNames={hostElement:"wj-autocomplete"};export const CalendarClsNames={buttonsOutside:"wj-btns-outside",calendarHeader:"wj-calendar-header",calendarMonth:"wj-calendar-month",calendarMultiMonth:"wj-calendar-multimonth",calendarOuter:"wj-calendar-outer",calendarYear:"wj-calendar-year",dayOtherMonth:"wj-day-othermonth",dayToday:"wj-day-today",dayWeekend:"wj-day-weekend",header:"wj-header",hostElement:"wj-calendar",monthSelect:"wj-month-select",weekAfter:"wj-week-after",weekBefore:"wj-week-before",yearPicker:"wj-yearpicker",focused:"wj-state-focus",selectedYear:"wj-select-year",confirmationButtonContainer:"wj-calendar-confirmation-button-container",button:"wj-calendar-button"};export const CollectionViewNavigatorClsNames={hostElement:"wj-collectionview-navigator",pager:"wj-pager"};export const ColorPickerClsNames={colorBox:"wj-colorbox",hostElement:"wj-colorpicker"};export const ComboBoxClsNames={hostElement:"wj-combobox",stateMatch:"wj-state-match"};export const DropDownClsNames={dropDownPanel:"wj-dropdown-panel",hostElement:"wj-dropdown"};export const InputClsNames={input:"wj-input",inputBtnVisible:"wj-input-btn-visible",inputGroup:"wj-input-group",inputGroupBtn:"wj-input-group-btn"};export const InputColorClsNames={hostElement:"wj-inputcolor",inputColorBox:"wj-inputcolorbox"};export const InputDateClsNames={hostElement:"wj-inputdate",inputDateDropDown:"wj-inputdate-dropdown"};export const InputDateRangeClsNames={hostElement:"wj-inputdaterange"};export const InputDateTimeClsNames={hostElement:"wj-inputdatetime"};export const InputMaskClsNames={hostElement:"wj-inputmask"};export const InputNumberClsNames={hostElement:"wj-inputnumber",numeric:"wj-numeric",showSpinner:"wj-input-show-spinner"};export const InputTimeClsNames={hostElement:"wj-inputtime"};export const ListBoxClsNames={header:"wj-header",hostElement:"wj-listbox",listBoxItem:"wj-listbox-item"};export const MenuClsNames={hostElement:"wj-menu",menuItems:"wj-menu-items",subItems:"wj-subitems"};export const MultiAutoCompleteClsNames={hostElement:"wj-multi-autocomplete",token:"wj-token",tokenActive:"wj-token-active",tokenClose:"wj-token-close",tokenHelper:"wj-token-helper",tokenLabel:"wj-token-label"};export const MultiSelectClsNames={hostElement:"wj-multiselect"};export const MultiSelectListBoxClsNames={header:"wj-header",hostElement:"wj-multiselectlistbox",selectAll:"wj-select-all"};export const PopupClsNames={dialogHeader:"wj-dialog-header",hostElement:"wj-popup",popupBackDrop:"wj-popup-backdrop",dialogBody:"wj-dialog-body",dialogFooter:"wj-dialog-footer"};_addCultureInfo("InputNumber",{ariaLabels:{incVal:"Increase Value",decVal:"Decrease Value",inputNumberInput:"InputNumber Input",inputNumber:"Input Number"}});export class InputNumber extends Control{constructor(t,e){super(t);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._inputElementAriaLabel=culture.InputNumber.ariaLabels.inputNumberInput;this._ariaLabelledby=null;this.textChanged=new Event;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${InputNumberClsNames.hostElement}`,s,{_tbx:"input",_btnUp:"btn-inc",_btnDn:"btn-dec"},"input");const i=this.inputElement;this.hostElement;setAttribute(i,"role","spinbutton",!0);this._updateInputAriaLabel();let n=culture.InputNumber.ariaLabels;setAriaLabel(this._btnUp.querySelector("button"),n.incVal);setAriaLabel(this._btnDn.querySelector("button"),n.decVal);this._tbx.type.match(/number/i)&&(this.inputType="");let l=this._tbx;l.autocomplete="off";l.spellcheck=!1;this._updateSymbols();let a=this.addEventListener.bind(this);a(l,"keypress",this._keypress.bind(this));a(l,"keydown",this._keydown.bind(this));a(l,"input",this._input.bind(this));a(l,"blur",()=>{this.text!=this._oldText&&this._setText(this.text)});a(l,"paste",()=>{this._fromKb=!1});a(l,"compositionstart",()=>{this._composing=!0});a(l,"compositionend",()=>{this._composing=!1;setTimeout(()=>{let t=this.text,e=this._oldText,s=this._chrPct;e&&e.indexOf(s)>-1&&t.indexOf(s)<0&&(t+=s);this._setText(t)})});let h=this._clickSpinner.bind(this);a(this._btnUp,"click",h);a(this._btnDn,"click",h);this._rptUp=new _ClickRepeater(this._btnUp.querySelector("button"));this._rptDn=new _ClickRepeater(this._btnDn.querySelector("button"));a(l,"wheel",t=>{if(this.handleWheel&&!t.defaultPrevented&&!t.ctrlKey&&this._isEditable()&&this.containsFocus()){let e=clamp(-t.deltaY,-1,1);this._increment((this.step||1)*e);setTimeout(()=>this.selectAll());t.preventDefault()}});this.value=0;this.isRequired=!0;this.initialize(e)}static get controlTemplate(){InputNumber._ctrlTemplate||(InputNumber._ctrlTemplate=`<div class="${ControlClsNames.template}">`+`<div class="${InputClsNames.input}">`+`<div class="${InputClsNames.inputGroup}">`+`<span wj-part="btn-dec" class="${InputClsNames.inputGroupBtn}" tabindex="-1">`+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}" tabindex="-1">-</button>`+"</span>"+`<input type="tel" inputmode="numeric" wj-part="input" class="${InputFormElementsClsNames.formControl} ${InputNumberClsNames.numeric}"/>`+`<span wj-part="btn-inc" class="${InputClsNames.inputGroupBtn}" tabindex="-1">`+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}" tabindex="-1">+</button>`+"</span></div></div></div>");return InputNumber._ctrlTemplate}static set controlTemplate(t){InputNumber._ctrlTemplate=t}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(t){this._tbx.type=asString(t)}get value(){return this._value}set value(t){if(t!=this._value)if(null==(t=asNumber(t,!this.isRequired||null==t&&null==this._value)))this._setText("");else if(!isNaN(t)){let e=Globalize.format(t,this.format);this._setText(e)}}get isRequired(){return this._tbx.required}set isRequired(t){this._tbx.required=asBoolean(t)}get isReadOnly(){return this._readOnly}set isReadOnly(t){this._readOnly=asBoolean(t);this.inputElement.readOnly=this._readOnly;toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}get handleWheel(){return this._handleWheel}set handleWheel(t){this._handleWheel=asBoolean(t)}get min(){return this._min}set min(t){if(t!=this._min){this._min=asNumber(t,!0);this._updateAria()}}get max(){return this._max}set max(t){if(t!=this._max){this._max=asNumber(t,!0);this._updateAria()}}get step(){return this._step}set step(t){this._step=asNumber(t,!0);this._updateBtn()}get format(){return this._format}set format(t){if(t!=this.format){this._format=asString(t);this.refresh()}}get text(){return this._tbx.value}set text(t){if(t!=this.text){this._oldText=this.text;this._setText(t)}}get placeholder(){return this._tbx.placeholder}set placeholder(t){this._tbx.placeholder=t}get showSpinner(){return this._showBtn}set showSpinner(t){this._showBtn=asBoolean(t);this._updateBtn()}get repeatButtons(){return!this._rptUp.disabled}set repeatButtons(t){this._rptUp.disabled=this._rptDn.disabled=!asBoolean(t)}get ariaLabelledBy(){return this._ariaLabelledby}set ariaLabelledBy(t){_setAriaLabelBy(this,this._tbx,t,this._updateInputAriaLabel.bind(this))}selectAll(){let t=this._tbx;setSelectionRange(t,0,t.value.length)}clamp(t){return clamp(t,this.min,this.max)}onTextChanged(t){this.textChanged.raise(this,t);this._updateState()}onValueChanged(t){this._updateAria();this.valueChanged.raise(this,t)}dispose(){this._rptUp.element=null;this._rptDn.element=null;super.dispose()}onGotFocus(t){this._oldValue=this.value;if(!this.isTouching){this._tbx.focus();this.selectAll()}super.onGotFocus(t)}onLostFocus(t){if(this._composing){this._composing=!1;this._setText(this.text)}if(this._isEditable()){let t=this.clamp(this.value);if(t==this.value||this.onInvalidInput(new CancelEventArgs)){let e=Globalize.format(t,this.format);this._setText(e)}}super.onLostFocus(t)}refresh(t=!0){super.refresh(t);if(this.hostElement){this._updateSymbols();let t=Globalize.format(this.value,this.format);this._setText(t)}}_isEditable(){return!this.isReadOnly&&!this.isDisabled}_updateSymbols(){let t=culture.Globalize.numberFormat,e=Globalize._parseNumericFormat(this.format);this._chrDec=t["."]||".";this._chrTho=t[","]||",";this._chrNeg=t["-"]||"-";this._chrPls=t["+"]||"+";this._chrPct=t["%"]||"%";this._chrCur=e.curr||t.currency.symbol||"$";this._fmtSpc=e.spec;this._fmtPrc=e.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(t,e){let s=t==this._chrDec||t>="0"&&t<="9",i="x"==this._fmtSpc;!s&&i&&(s=t>="a"&&t<="f"||t>="A"&&t<="F");s||e||i||(s=t==this._chrPls||t==this._chrNeg||"("==t||")"==t);return s}_getInputRange(t){let e=[0,0],s=this.text,i=!1;for(let n=0;n<s.length;n++)if(this._isNumeric(s[n],t)){if(!i){e[0]=n;i=!0}e[1]=n+1}return e}_flipSign(){let t=this._getSelStartDigits();this.value*=-1;this._setSelStartDigits(t)}_getSelStartDigits(){let t=0,e=this._tbx.selectionStart,s=this._tbx.value;for(let i=0;i<s.length&&i<e;i++)this._isNumeric(s[i],!0)&&t++;return t}_setSelStartDigits(t){let e=this._tbx.value;for(let s=0;s<e.length&&t>=0;s++)if(this._isNumeric(e[s],!0)){if(!t){setSelectionRange(this._tbx,s);break}t--}else if(!t){setSelectionRange(this._tbx,s);break}}_increment(t){if(t){let e=this.clamp(isNumber(this.value)?this.value+t:0),s=Globalize.format(e,this.format,!1,!1);this._setText(s)}}_updateBtn(){let t=this.showSpinner&&!!this.step,e=t;setCss([this._btnUp,this._btnDn],{display:t?"":"none"});toggleClass(this.hostElement,InputNumberClsNames.showSpinner,t);enable(this._btnUp,e);enable(this._btnDn,e);this._updateAria()}_setText(t,e=!1,s=!1){if(this._composing)return;let i=this._tbx,n=this._chrDec,l=this._rxNeg.test(t),a=this._delKey,h=this.containsFocus();t&&this._rxSym.test(t)&&h&&(t=this.isRequired||!a?(l?"-0":"0")+(t.indexOf(n)>-1?n:""):"");this._delKey=!1;a&&0==this.value&&!this.isRequired&&(t="");if(!t){if(!this.isRequired||s){i.value="";if(this._oldText){this._oldText=t;this.onTextChanged()}if(null!=this._value){this._value=null;this.onValueChanged()}this._updateBtn();return}t="0"}let o=t.indexOf(n),r=this._format||(o>-1?"n2":"n0"),d=Globalize.parseFloat(t,r);isFinite(d)||(d=this.clamp(d));if(isNaN(d)){if(this.onInvalidInput(new CancelEventArgs))i.value=this._oldText;else{i.value=t;this.focus()}return}let u=h&&o>-1?2:null,c=Globalize.format(d,r,!1,e,u);l&&d>=0&&!a&&(c=this._chrNeg+c);h&&o>-1&&"g"==this._fmtSpc&&0!=this._fmtPrc&&(c=t).indexOf(n)<0&&(c+=n);if(i.value!=c){i.value=c;d=Globalize.parseFloat(c,r)}if(this.text!=this._oldText){this._oldText=this.text;this.onTextChanged()}if(d!=this._value){this._value=d;this.onValueChanged()}this._updateBtn();this._updateState()}_keypress(t){if(!t.defaultPrevented&&!this._composing&&this._isEditable()&&t.charCode&&!t.ctrlKey&&!t.metaKey&&t.keyCode!=Key.Enter){let e=this._tbx,s=String.fromCharCode(t.charCode);if(this._isNumeric(s,!1)){let s=e.maxLength;if(s>-1&&e.value.length>=s&&e.selectionEnd==e.selectionStart){t.preventDefault();return}let i=this._getInputRange(!0),n=e.selectionStart,l=e.selectionEnd;if(n<i[0]&&l<e.value.length){l=Math.max(l,i[0]);setSelectionRange(e,i[0],l)}if(n>=i[1]){let s=null!=this._fmtPrc?this._fmtPrc:2,i=e.value.indexOf(this._chrDec);i>-1&&n-i>s&&t.preventDefault()}}else t.preventDefault();switch(s){case"-":case this._chrNeg:if(this.clamp(-1)>=0)this.value<0&&this._flipSign();else if(this.value&&e.selectionStart==e.selectionEnd)this._flipSign();else if(this.clamp(-1)<0){e.value=this._chrNeg;setSelectionRange(e,1)}t.preventDefault();break;case"+":case this._chrPls:this.value<0&&this._flipSign();t.preventDefault();break;case".":case this._chrDec:if(0==this._fmtPrc)t.preventDefault();else{let s=e.value.indexOf(this._chrDec);if(s>-1){e.selectionStart<=s&&s++;setSelectionRange(e,s);t.preventDefault()}}}if(!t.defaultPrevented&&isIE()){let i=e.value,n=e.selectionStart,l=e.selectionEnd;if(n==l){e.value=i.substr(0,n)+s+i.substr(l);setSelectionRange(e,n+1);t.preventDefault();this._input()}}}}_keydown(t){this._delKey=!1;if(t.defaultPrevented||this._composing)return;var e=hasClass(this._tbx,"wj-grid-ime");if(e&&t.keyCode!=Key.Back&&t.keyCode!=Key.Delete)return;let s=this._tbx,i=s.value,n=s.selectionStart,l=s.selectionEnd;switch(t.keyCode){case 65:if(t.ctrlKey){setTimeout(()=>{this.selectAll()});t.preventDefault()}break;case Key.Up:case Key.Down:if(this.step&&this._isEditable()){this._increment(this.step*(t.keyCode==Key.Up?1:-1));setTimeout(()=>{this.selectAll()});t.preventDefault()}break;case Key.Back:this._delKey=!0;if(l-n<2&&this._isEditable()){let e=i[l-1];if(e==this._chrDec||e==this._chrPct||e==this._chrTho||")"==e){setTimeout(()=>{l=e==this._chrPct?this._getInputRange(!0)[1]:l-1;setSelectionRange(s,l)});t.preventDefault()}}break;case Key.Delete:this._delKey=!0;if(l-n<2&&this._isEditable())if("0"==i&&1==n)setSelectionRange(s,0);else{let e=i[n];if(e==this._chrDec||e==this._chrPct){setTimeout(()=>{setSelectionRange(s,n+1)});t.preventDefault()}}break;case Key.Escape:this.value=this._oldValue;this.selectAll()}e&&this._delKey&&this._isEditable()&&this._setText(null,!1,!0)}_input(){this._composing?this._fromKb=!0:setTimeout(()=>{let t=this._tbx,e=t.value,s=e.indexOf(this._chrDec),i=t.selectionStart,n=this._getSelStartDigits();"p"==this._fmtSpc&&e.length&&e.indexOf(this._chrPct)<0&&(e+=this._chrPct);this._setText(e,this._fromKb);this._fromKb=!0;if(this.containsFocus()){let l=t.value,a=l.indexOf(this._chrDec),h=this._getInputRange(!0);if(e==this._chrNeg+this._chrDec&&a>-1){setSelectionRange(t,a+1);return}if(e[0]==this._chrNeg&&l[0]!=this._chrNeg){1==l.length?setSelectionRange(t,1):this._setSelStartDigits(n);return}e?e==this._chrDec&&a>-1?i=a+1:i<=s&&a>-1||s<0&&a<0?i+=l.length-e.length:s<0&&a>-1&&(i=a):i=a>-1?a:h[1];i=clamp(i,h[0],h[1]);setSelectionRange(t,i)}})}_clickSpinner(t){if(!t.defaultPrevented&&this._isEditable()&&this.step){this._increment(this.step*(contains(this._btnUp,t.target)?1:-1));if(!this.isTouching){Control.sharedState.InvalidScroll=isEdge();setTimeout(()=>this.selectAll())}}}_updateAria(){const t=this.inputElement;if(this.hostElement){setAttribute(t,"aria-valuemin",this.min);setAttribute(t,"aria-valuemax",this.max);setAttribute(t,"aria-valuenow",this.value);setAttribute(t,"aria-valuetext",this.text);setAttribute(t,"step",this.step);enable(this._btnDn,null==this.min||this.value>this.min);enable(this._btnUp,null==this.max||this.value<this.max)}}_updateInputAriaLabel(){const t=this.inputElement;!t||t.id||this._ariaLabelledby?setAttribute(t,"aria-label",null):setAttribute(t,"aria-label",this._inputElementAriaLabel)}getAriaLabelForScreenReader(){return culture.InputNumber.ariaLabels.inputNumber}}InputNumber._ctrlTemplate="";_addCultureInfo("InputMask",{ariaLabels:{inputMask:"Input Mask"}});export class InputMask extends Control{constructor(t,e){super(t);this._fullEdit=!1;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${InputMaskClsNames.hostElement}`,s,{_tbx:"input"},"input");if("INPUT"==this._orgTag){let t=this._tbx.getAttribute("value");t&&(this.value=t)}this._msk=new _MaskProvider(this._tbx);this.isRequired=!0;this.initialize(e);this.addEventListener(this._tbx,"input",()=>{this.onValueChanged()});this.addEventListener(this._tbx,"blur",this._commitText.bind(this));this.addEventListener(this._tbx,"keydown",t=>{t.keyCode==Key.Enter&&this._commitText()})}static get controlTemplate(){InputMask._ctrlTemplate||(InputMask._ctrlTemplate=`<div class="${InputClsNames.input}">`+`<div class="${InputClsNames.inputGroup}">`+`<input wj-part="input" class="${InputFormElementsClsNames.formControl}"/>`+"</div></div>");return InputMask._ctrlTemplate}static set controlTemplate(t){InputMask._ctrlTemplate=t}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(t){this._tbx.type=asString(t)}get value(){return this._tbx.value}set value(t){if(t!=this.value){this._tbx.value=asString(t);t=this._msk._applyMask();this._tbx.value=t;this.onValueChanged()}}get rawValue(){return this._msk.getRawValue()}set rawValue(t){t!=this.rawValue&&(this.value=asString(t))}get mask(){return this._msk.mask||""}set mask(t){let e=this.value;this._msk.mask=asString(t);this.value!=e&&this.onValueChanged()}get promptChar(){return this._msk.promptChar}set promptChar(t){let e=this.value;this._msk.promptChar=t;this.value!=e&&this.onValueChanged()}get overwriteMode(){return this._msk.overwriteMode}set overwriteMode(t){this._msk.overwriteMode=asBoolean(t)}get placeholder(){return this._tbx.placeholder}set placeholder(t){this._tbx.placeholder=t}get maskFull(){return this._msk.maskFull}get isRequired(){return this._tbx.required}set isRequired(t){this._tbx.required=asBoolean(t)}get isReadOnly(){return this._tbx.readOnly}set isReadOnly(t){this._tbx.readOnly=asBoolean(t);toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}selectAll(){let t=this._msk.getMaskRange();setSelectionRange(this._tbx,t[0],t[1]+1)}onValueChanged(t){if(this.value!=this._oldValue){this._oldValue=this.value;this.valueChanged.raise(this,t)}this._updateState()}_commitText(){(this.rawValue||this.isRequired)&&(this.maskFull||this.onInvalidInput(new CancelEventArgs));this._updateState()}dispose(){this._msk.input=null;super.dispose()}refresh(t=!0){super.refresh(t);this.hostElement&&this._msk.refresh()}onGotFocus(t){this.selectAll();super.onGotFocus(t)}getAriaLabelForScreenReader(){return culture.InputMask.ariaLabels.inputMask}}InputMask._ctrlTemplate="";export class ColorPicker extends Control{constructor(t,e){super(t);this._hsb=[.5,1,1];this._alpha=1;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ColorPickerClsNames.hostElement}`,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),n=this.removeEventListener.bind(this),l=document;i(this.hostElement,"mousedown",t=>{i(l,"mousemove",mouseMove);i(l,"mouseup",mouseUp);this._mouseDown(t)});i(this.hostElement,"touchstart",t=>{i(l,"touchmove",mouseMove);i(l,"touchend",mouseUp);this._mouseDown(t)});let mouseMove=t=>{this._mouseMove(t)},mouseUp=t=>{n(l,"mousemove",mouseMove);n(l,"mouseup",mouseUp);n(l,"touchmove",mouseMove);n(l,"touchend",mouseUp);this._mouseUp(t)};i(this.hostElement,"click",t=>{let e=t.target;if(e&&"DIV"==e.tagName&&contains(this._ePal,e)){let t=e.style.backgroundColor;t&&(this.value=new Color(t).toString())}});this.value="#ffffff";this.initialize(e);this._updatePanels()}static get controlTemplate(){ColorPicker._ctrlTemplate||(ColorPicker._ctrlTemplate='<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="${ColorPickerClsNames.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="${ColorPickerClsNames.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="${ColorPickerClsNames.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="${ColorPickerClsNames.colorBox}" style="position:static"></div>`+"</div></div></div>");return ColorPicker._ctrlTemplate}static set controlTemplate(t){ColorPicker._ctrlTemplate=t}get showAlphaChannel(){return"none"!=this._eAlpha.parentElement.style.display}set showAlphaChannel(t){this._eAlpha.parentElement.style.display=asBoolean(t)?"":"none"}get showColorString(){return"none"!=this._eText.style.display}set showColorString(t){this._eText.style.display=asBoolean(t)?"":"none"}get value(){return this._value}set value(t){if(t!=this.value){t=(t=asString(t)).trim();let e=Color.fromString(t);if(e){this._value=t;this._eText.innerText=t;let s=e.getHsb();if(this._hsb[0]!=s[0]||this._hsb[1]!=s[1]||this._hsb[2]!=s[2]||this._alpha!=e.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=e.a;this._updatePanels();this.onValueChanged()}}}}get palette(){return this._palette}set palette(t){if((t=(t=asArray(t)).slice(0,10)).every(t=>null!=Color.fromString(t))){this._palette=t;this._updatePalette()}}onValueChanged(t){this._updatePanels();this.valueChanged.raise(this,t)}_mouseDown(t){this._htDown=this._getTargetPanel(t);if(this._htDown){t.preventDefault();this.focus();this._mouseMove(t)}}_mouseMove(t){var e=t.touches?t.touches[0]:t,s=this._htDown;if(s){let t=s.getBoundingClientRect(),i=this._hsb;if(s==this._eHue)i[0]=clamp((e.clientY-t.top)/t.height,0,.99);else if(s==this._eSB){i[1]=clamp((e.clientX-t.left)/t.width,0,1);i[2]=clamp(1-(e.clientY-t.top)/t.height,0,1)}else s==this._eAlpha&&(this._alpha=clamp((e.clientX-t.left)/t.width,0,1));this._updateColor()}}_mouseUp(t){this._htDown=null}_updateColor(){let t=Color.fromHsb(this._hsb[0],this._hsb[1],this._hsb[2],this._alpha);this.value=t.toString();this._updatePanels()}_updatePalette(){let t=new Color("#fff"),e=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">'),n=new Color(this._palette[s]),l=n.getHsb();i.appendChild(this._makePalEntry(n,4));for(let s=0;s<5;s++){if(0==l[1]){let i=.1*s+(l[2]>.5?.05:.55);n=Color.interpolate(t,e,i)}else n=Color.fromHsb(l[0],.1+.2*s,1-.1*s);i.appendChild(this._makePalEntry(n,0))}this._ePal.appendChild(i)}}_makePalEntry(t,e){let s=document.createElement("div");setCss(s,{cursor:"pointer",backgroundColor:t.toString(),marginBottom:e||""});s.innerHTML="&nbsp";return s}_updatePanels(){let t=Color.fromHsb(this._hsb[0],1,1,1),e=Color.fromHsb(this._hsb[0],this._hsb[1],this._hsb[2],1);this._eSB.style.backgroundColor=t.toString();this._eAlpha.style.background="linear-gradient(to right, transparent 0%, "+e.toString()+" 100%)";navigator.appVersion.indexOf("MSIE 9")>-1&&(this._eAlpha.style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr="+e.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(t){let e=t.target;return contains(this._eSB,e)?this._eSB:contains(this._eHue,e)?this._eHue:contains(this._eAlpha,e)?this._eAlpha:null}}ColorPicker._ctrlTemplate="";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>';_addCultureInfo("CollectionViewNavigator",{ariaLabels:{byPage:{btnFirst:"Navigate to first page",btnPrev:"Navigate to previous page",btnNext:"Navigate to next page",btnLast:"Navigate to last page"},byItem:{btnFirst:"Navigate to first item",btnPrev:"Navigate to previous item",btnNext:"Navigate to next item",btnLast:"Navigate to last item"}}});export class CollectionViewNavigator extends Control{constructor(t,e){super(t);this._view=null;this._byPage=!1;this._fmt="{current:n0} / {count:n0}";this._liveRegionON=!1;this._ariaLabel="";let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${CollectionViewNavigatorClsNames.pager} ${CollectionViewNavigatorClsNames.hostElement}`,s,{_btnFirst:"btn-first",_btnPrev:"btn-prev",_txtCurr:"txt-curr",_btnNext:"btn-next",_btnLast:"btn-last"},"input");this.hostElement.tabIndex=-1;this._updateAriaLabels();const i=uidGenerator();this._txtCurr.id=i;[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(t=>{setAttribute(t.firstElementChild,"aria-controls",this._txtCurr.id)});setAttribute(this.hostElement.firstElementChild,"role","group");setAttribute(this._txtCurr,"role","status");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.addEventListener(this.hostElement,"keydown",this._keydown.bind(this));setAttribute(this.hostElement,"role","navigation");this._addA11yRelatedHandlers();this.initialize(e);this._update()}static get controlTemplate(){CollectionViewNavigator._ctrlTemplate||(CollectionViewNavigator._ctrlTemplate=`<div class="${InputClsNames.inputGroup}">`+`<span wj-part="btn-first" class="${InputClsNames.inputGroupBtn}">`+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}">`+`<span class="${GlyphClsNames.stepBackward}"></span>`+"</button></span>"+`<span wj-part="btn-prev" class="${InputClsNames.inputGroupBtn}"> `+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}">`+`<span class="${GlyphClsNames.left}"></span> `+'</button></span><span wj-part="txt-curr" tabIndex="0"></span>'+`<span wj-part="btn-next" class="${InputClsNames.inputGroupBtn}">`+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}">`+`<span class="${GlyphClsNames.right}"></span>`+"</button></span>"+`<span wj-part="btn-last" class="${InputClsNames.inputGroupBtn}">`+`<button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}">`+`<span class="${GlyphClsNames.stepForward}"></span>`+"</button></span></div>");return CollectionViewNavigator._ctrlTemplate}static set controlTemplate(t){CollectionViewNavigator._ctrlTemplate=t}get cv(){return this._view}set cv(t){if(t!=this._view){let e=this._view;if(e){e.collectionChanged.removeHandler(this._collectionChanged);e.currentChanged.removeHandler(this._currentChanged)}e=this._view=asType(t,"ICollectionView",!0);this._update();if(e){e.collectionChanged.addHandler(this._collectionChanged,this);e.currentChanged.addHandler(this._currentChanged,this)}}}get byPage(){return this._byPage}set byPage(t){if(t!=this._byPage){this._byPage=asBoolean(t);this._update();this._updateAriaLabels()}}get headerFormat(){return this._fmt}set headerFormat(t){if(t!=this._fmt){this._fmt=asString(t);this._update()}}get repeatButtons(){return!this._rptNext.disabled}set repeatButtons(t){this._rptNext.disabled=this._rptPrev.disabled=!asBoolean(t)}get ariaLabel(){if(this.hostElement){const t=this.hostElement.getAttribute("aria-label");if(t)return t}return this._ariaLabel}set ariaLabel(t){if(this.ariaLabel!==t){this._ariaLabel=t;this.hostElement&&setAttribute(this.hostElement,"aria-label",t)}}get isDisabled(){return this._isDisabled}set isDisabled(t){this._setIsDisabled(t)}focus(){let t=this._e;t&&t.offsetHeight&&(this.isDisabled||moveFocus(t,0)||this._txtCurr.tabIndex>=0&&this._txtCurr.focus())}_update(){let t=this._view,e=this._byPage,s=t?e?t.pageIndex:t.currentPosition:0,i=t?e?t.pageCount:t.itemCount:0;if(!this.isDisabled){enable(this._btnFirst,t&&s>0);enable(this._btnPrev,t&&s>0);enable(this._txtCurr,null!=t);enable(this._btnNext,t&&s<i-1);enable(this._btnLast,t&&s<i-1)}[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(t=>{t.firstElementChild.disabled?t.firstElementChild.setAttribute("tabindex","-1"):t.firstElementChild.setAttribute("tabindex",this._orgTabIndex.toString())});this._txtCurr.textContent=format(this._fmt,{current:t?s+1:0,count:t?i:0,currentItem:t?t.currentPosition+1:0,itemCount:t?t.itemCount:0,currentPage:t?t.pageIndex+1:0,pageCount:t?t.pageCount:0})}_currentChanged(){this._update()}_collectionChanged(){this._update()}_click(t){let e=t.target,s=this._view,i=this._byPage;if(s){contains(this._btnFirst,e)?i?s.moveToFirstPage():s.moveCurrentToFirst():contains(this._btnPrev,e)?i?s.moveToPreviousPage():s.moveCurrentToPrevious():contains(this._btnNext,e)?i?s.moveToNextPage():s.moveCurrentToNext():contains(this._btnLast,e)&&(i?s.moveToLastPage():s.moveCurrentToLast());(this.byPage?s.pageIndex>=s.pageCount-1||s.pageIndex<=0:s.currentPosition>=s.itemCount-1||s.currentPosition<=0)&&!this.isDisabled&&this._txtCurr.tabIndex>=0&&this._txtCurr.focus();t.preventDefault()}}_updateAriaLabels(){let t=culture.CollectionViewNavigator.ariaLabels[this._byPage?"byPage":"byItem"];setAttribute(this._btnFirst.firstElementChild,"aria-label",t.btnFirst);setAttribute(this._btnPrev.firstElementChild,"aria-label",t.btnPrev);setAttribute(this._btnNext.firstElementChild,"aria-label",t.btnNext);setAttribute(this._btnLast.firstElementChild,"aria-label",t.btnLast)}_addA11yRelatedHandlers(){this.addEventListener(this._txtCurr,"focus",t=>{if(this._txtCurr===document.activeElement){setAttribute(this._txtCurr,"aria-live","off");setAttribute(this._txtCurr,"aria-label",this._txtCurr.textContent);this._liveRegionON=!1}});this.addEventListener(this._txtCurr,"blur",t=>{this._txtCurr!==document.activeElement&&this._txtCurr.removeAttribute("aria-label")});[this._btnFirst.firstElementChild,this._btnPrev.firstElementChild,this._btnNext.firstElementChild,this._btnLast.firstElementChild].forEach(t=>{this.addEventListener(t,"focus",t=>{setTimeout(()=>{if(!this._liveRegionON){const t=_isMacOS()?"polite":"assertive";setAttribute(this._txtCurr,"aria-live",t);this._liveRegionON=!0}})})})}_setTabOrder(t){let e=this._e,s=null!=this._txtCurr.getAttribute("disabled");this._orgTabIndex=t;if(this.isDisabled||s){e.tabIndex=-1;this._txtCurr.tabIndex=-1}else s||(this._txtCurr.tabIndex=this._orgTabIndex)}_keydown(t){if(contains(this._txtCurr,t.target)&&(t.ctrlKey||t.metaKey)&&("A"===t.key||"a"===t.key)){t.preventDefault();const e=document.createRange();e.selectNodeContents(this._txtCurr);const s=window.getSelection();s.removeAllRanges();s.addRange(e)}}_setIsDisabled(t){if((t=!!asBoolean(t,!0))!=this.isDisabled){let e=this._e;if(e){this._isDisabled=t;toggleClass(e,ControlStateClsNames.disabled,t);[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(e=>{if(t){e.firstElementChild.setAttribute("disabled","");e.firstElementChild.setAttribute("tabindex","-1")}else{e.firstElementChild.removeAttribute("disabled");e.firstElementChild.setAttribute("tabindex",this._orgTabIndex.toString())}toggleClass(e,ControlStateClsNames.disabled,t)});this._txtCurr.tabIndex=t?-1:this._orgTabIndex;toggleClass(this._txtCurr,ControlStateClsNames.disabled,t)}}}}CollectionViewNavigator._ctrlTemplate="";_addCultureInfo("Listbox",{ariaLabels:{listBox:"list box"}});export class ListBox extends Control{constructor(t,e){super(t,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._isShiftDown=!1;this._shouldClearOnShift=!0;this._vThreshold=ListBox._VTHRESH;this._isVirtual=!1;this._children=[];this._ignoreItemFormatterTextArray=[];this._itemFormatterHelper=document.createElement("div");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._ariaLabel=culture.Listbox.ariaLabels.listBox;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._handleKeyUp=t=>{if("Shift"===t.key){this._isShiftDown=!1;this._shouldClearOnShift=!0}};this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ListBoxClsNames.hostElement}`,null,null);let s=this.hostElement;setAttribute(s,"role","listbox",!0);this._updateAriaLabel();"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,"keyup",this._handleKeyUp.bind(this));this.addEventListener(s,"wheel",t=>{if(s.scrollHeight>s.offsetHeight&&(t.deltaY<0&&0==s.scrollTop||t.deltaY>0&&s.scrollTop+s.offsetHeight>=s.scrollHeight)){t.preventDefault();t.stopPropagation();t.stopImmediatePropagation()}});[this._eSizer,this._ePadTop,this._ePadBot].forEach(t=>{t.tabIndex=-1;setAttribute(t,"aria-hidden",!0);setCss(t,{pointerEvents:"none",opacity:"0"})});this.initialize(e);this._updateViewRange();this.addEventListener(this.hostElement,"scroll",t=>{this._updateViewRange()})}get ariaLabelledBy(){return this.hostElement.getAttribute("aria-labelledby")}set ariaLabelledBy(t){_setAriaLabelBy(this,this.hostElement,t,this._updateAriaLabel.bind(this))}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);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(t){if(t!=this._vThreshold){let e=this._getVirtual();this._vThreshold=asNumber(t,!1,!0);e!=this._getVirtual()&&this._populateList()}}get showGroups(){return this._shGroups}set showGroups(t){if(t!=this._shGroups){this._shGroups=asBoolean(t);this._populateList()}}get isContentHtml(){return this._html}set isContentHtml(t){if(t!=this._html){this._html=asBoolean(t);this._populateList()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this._populateList()}}get displayMemberPath(){return this._pathDisplay.path}set displayMemberPath(t){if(t!=this.displayMemberPath){this._pathDisplay.path=asString(t);this._populateList()}}get selectedValuePath(){return this._pathValue.path}set selectedValuePath(t){this._pathValue.path=asString(t)}get checkedMemberPath(){return this._pathChecked.path}set checkedMemberPath(t){if(t!=this.checkedMemberPath){this._pathChecked.path=asString(t);setAttribute(this.hostElement,"aria-multiselectable",""!==this.checkedMemberPath?"true":"false");this._populateList()}}get caseSensitiveSearch(){return this._caseSensitive}set caseSensitiveSearch(t){this._caseSensitive=asBoolean(t)}get itemRole(){return this._itemRole}set itemRole(t){if(t!=this.itemRole){this._itemRole=asString(t);this._populateList()}}getDisplayValue(t,e){let s=null;if(t>-1&&hasItems(this._cv)){s=this._cv.items[t];this.displayMemberPath&&(s=this._pathDisplay.getValue(s))}let i=null!=s?s.toString():"";this._itemFormatter&&!e&&(i=this._itemFormatter(t,i));return i}getDisplayText(t){return this._getDisplayText(t)}_getDisplayText(t,e){if(e&&this._ignoreItemFormatterTextArray[t])return this._ignoreItemFormatterTextArray[t];let s=this._getChild(t);return null!=s?s.textContent:""}isItemEnabled(t){var e=this._getChild(t);return null!=e&&!e.hasAttribute("disabled")&&!hasClass(e,ControlStateClsNames.disabled)&&!hasClass(e,UtilitesClsNames.separator)}get selectedIndex(){return this._cv?this._cv.currentPosition:-1}set selectedIndex(t){if(this._cv){this._oldSelectedIndex=this._cv.currentPosition;this._cv.moveCurrentToPosition(asNumber(t))}}get selectedItem(){return this._cv?this._cv.currentItem:null}set selectedItem(t){this._cv&&this._cv.moveCurrentTo(t)}get selectedValue(){let t=this.selectedItem;t&&this.selectedValuePath&&(t=this._pathValue.getValue(t));return t}set selectedValue(t){let e=this._cv,s=e?e.items:null,i=this.selectedValuePath,n=-1;if(s){for(let e=0;e<s.length;e++){let l=s[e],a=i?this._pathValue.getValue(l):l;if(a===t||DateTime.equals(a,t)){n=e;break}if(this.isContentHtml&&isString(a)&&a.indexOf("<")>-1&&toPlainText(a)===t){n=e;break}}this.selectedIndex=n}}get maxHeight(){let t=this.hostElement,e=t?parseFloat(t.style.maxHeight):null;return isNaN(e)?null:e}set maxHeight(t){let e=this.hostElement;if(e){t=asNumber(t,!0);e.style.maxHeight=null==t?"":t+"px"}}showSelection(t=this.containsFocus()){let e=this.hostElement,s=this._children,i=this._getSelectedElement(!1),n=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?n=this._getBoundingClientRect(i):this._children.length>0&&(n=this._getBoundingClientRect(this._getChild(0)));let l=this._getBoundingClientRect(e),a=0;if(this._shGroups){a=this._itemHeight;if(!this._isVirtual){let t=s[0];t&&t.offsetHeight&&hasClass(t,ListBoxClsNames.header)&&(a=t.offsetHeight)}}n.bottom>l.bottom?e.scrollTop+=n.bottom-l.bottom:n.top<l.top+a&&(e.scrollTop-=l.top+a-n.top);this._updateViewRange();i=this._getSelectedElement(!0);setAttribute(e,"aria-activedescendant",i?i.id:null);if(t){(i&&!contains(i,getActiveElement())?i:e).focus()}e.tabIndex=i?-1:this._orgTabIndex}loadList(){this._populateList()}getItemChecked(t){let e=this._cv.items[t],s=this._pathChecked;return isObject(e)&&s.path?s.getValue(e):this._getCheckboxState(t)}setItemChecked(t,e){this._setItemChecked(t,e,!0)}toggleItemChecked(t){this.setItemChecked(t,!this.getItemChecked(t))}get checkedItems(){return this._checkedItems}set checkedItems(t){t=Array.from(new Set(t));let e=asArray(t,!1);if(!this._arrayEquals(e,this._checkedItems)){this._updateCheckedList(e);if(!this._arrayEquals(e,this._checkedItems)){this._checkedItems=e;this.onCheckedItemsChanged()}}}indexOf(t){return(t=closest(t,`.${ListBoxClsNames.listBoxItem}`))?t[ListBox._DIDX_KEY]:-1}onSelectedIndexChanged(t){this.selectedIndexChanged.raise(this,t)}onItemsChanged(t){this.itemsChanged.raise(this,t)}onLoadingItems(t){this.loadingItems.raise(this,t)}onLoadedItems(t){this.loadedItems.raise(this,t)}onItemChecked(t){this.itemChecked.raise(this,t)}onCheckedItemsChanged(t){this.checkedItemsChanged.raise(this,t)}onFormatItem(t){this.formatItem.raise(this,t)}refresh(t=!0){super.refresh(t);if(this.hostElement){let t=this._cv?this._cv.items.length:0,e=this.formatItem.handlerCount;if(t!=this._itemCount||e!=this._fmtItemHandlers){this._fmtItemHandlers=e;this._populateList()}else this._updateViewRange()}}_updateAriaLabel(){this.hostElement&&(this.ariaLabelledBy?setAriaLabel(this.hostElement,null):setAriaLabel(this.hostElement,this._ariaLabel))}_updateCheckedList(t){let e=this._cv,s=this._pathChecked,i=new Map;if(s&&e){let n=e.sourceCollection;if(n&&n.length){isObject(n[0])||(s=null);t.forEach(t=>i.set(t,!0));this._checking=!0;let e=[];n.forEach(t=>{let n=i.has(t);n&&e.push(t);s&&s.setValue(t,n)});this._checking=!1;t=e}e.items.forEach((t,e)=>{this._setItemChecked(e,i.has(t),!1)})}}_getBoundingClientRect(t){if(!t.offsetHeight){let e=this.indexOf(t),s=this.hostElement;if(e>-1&&s){e=this._getElementIndex(e);let t=s.getBoundingClientRect();return new Rect(0,t.top-s.scrollTop+e*this._itemHeight,t.width,this._itemHeight)}}return Rect.fromBoundingRect(t.getBoundingClientRect())}_updateItemAttributes(t,e){if(t){const s=this.checkedMemberPath?"true"===t.getAttribute("aria-selected"):null;toggleClass(t,ControlStateClsNames.selected,e);setAttribute(t,"aria-selected",this._getAriaSelected(e,s));t.tabIndex=e?this._orgTabIndex:-1}}_getCheckedItems(){let t=this._cv,e=this._pathChecked,s=[];t&&e&&e.path&&(s=t.sourceCollection.filter((s,i)=>{if(t.filter&&!t.filter(s))return!!this._addMode&&e.getValue(s);if(isObject(s))return e.getValue(s);{let e=t.items[i]==s?i:t.items.indexOf(s);return this.getItemChecked(e)}}));return s}_arrayEquals(t,e){if(t==e)return!0;if(!t||!e||t.length!=e.length)return!1;for(let s=0;s<t.length;s++)if(!this._isEqual(t[s],e[s]))return!1;return!0}_getChild(t){t=this._getElementIndex(t);return this._children[t]}_getElementIndex(t){if(this._shGroups){let e=this._children;for(let s=0;s<=t&&s<e.length;s++){let i=e[s];hasClass(i,ListBoxClsNames.header)&&t++}}return t}_setItemChecked(t,e,s=!0){let i=this._cv.items[t],n=this._pathChecked,l=!1,a=this.selectedIndex,h=this._checking;if(isObject(i)&&n.path){if(!!n.getValue(i)!=e){let t=tryCast(this._cv,"IEditableCollectionView");l=!0;this._checking=!0;if(t){t.editItem(i);n.setValue(i,e);t.commitEdit()}else{n.setValue(i,e);t.refresh()}this._checking=h}}else if(s){let t=this._findArrayItem(this._checkedItems,i);(e&&t<0||!e&&t>=0)&&(l=!0)}this._setCheckboxState(t,e);if(s){if(l){this._checkedItems=this._checkedItemsUpdate(i,e);this.onItemChecked();this.onCheckedItemsChanged()}a!=this.selectedIndex&&this.onSelectedIndexChanged()}return l}_checkedItemsUpdate(t,e){let s=this._cv.sourceCollection,i=this._checkedItems,n=0;if(e){for(var l=0;l<s.length;l++){let e=s[l];if(n<i.length&&this._isEqual(e,i[n]))n++;else if(this._isEqual(e,t))return i.slice(0,n).concat([t]).concat(i.slice(n))}return i}{let e=this._findArrayItem(i,t);return i.slice(0,e).concat(i.slice(e+1))}}_isEqual(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}_findArrayItem(t,e){if(!Number.isNaN(e))return t.indexOf(e);for(var s=0;s<t.length;s++)if(Number.isNaN(t[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 t=this.hostElement,e=this._cv;this._itemCount=e?e.items.length:0;this._isVirtual=this._getVirtual();this._oldSel=null;this._itemsAbove=-1;this._itemsBelow=-1;if(t){let s,i=this.containsFocus();this.onLoadingItems();let n=this._children=[];t.textContent="";if(e){let i,l=0,a=[];this._ignoreItemFormatterTextArray=[];if(this._shGroups&&e.groups&&e.groups.length){s={};for(let t=0;t<e.groups.length;t++){let n=e.groups[t];s[l]=n;i=this._createHeaderItem(n,t);a.push(i);for(let e=0;e<n.items.length;e++,l++){i=this._createItem(l,t);a.push(i)}}}else for(let t=0;t<e.items.length;t++,l++){i=this._createItem(l);a.push(i)}let h=this._isVirtual?document.createElement("div"):t,o=0;h.innerHTML=a.join("");for(let t=0;t<h.children.length;t++){let s=h.children[t];o==e.currentPosition&&(this._oldSel=s);s[ListBox._DIDX_KEY]=s.className.indexOf(ListBoxClsNames.header)<0?o++:-1;n.push(s)}}if(this.formatItem.hasHandlers&&e){let t=0,i=e.items,l=new FormatItemEventArgs(0,null,null);for(let e=0;e<n.length;e++){l._item=n[e];if(this._shGroups&&hasClass(l._item,ListBoxClsNames.header)){l._index=-1;l._data=s[t]}else{l._index=t;l._data=i[t++]}this.onFormatItem(l)}}if(this._isVirtual){let e=this._getCanvasContext(),s=null,i=0;for(let t=0;t<n.length;t++){let l=n[t],a=e.measureText(l.textContent);if(a.width>i){s=l;i=a.width}}if(s){let e=!1,i=t.style.display,l=t.style.position;if(!t.parentElement){e=!0;(this._container||document.body).appendChild(t);setCss(t,{display:"",position:"absolute"})}t.appendChild(s);let a=s.style.whiteSpace;s.style.whiteSpace="nowrap";this._ePadTop.style.width=s.offsetWidth+"px";this._itemHeight=s.offsetHeight||this._itemHeight;s.style.whiteSpace=a;this._eSizer.style.height=n.length*this._itemHeight+"px";t.appendChild(this._eSizer);this._clientHeight=t.clientHeight;removeChild(this._eSizer);if(e){removeChild(t);setCss(t,{display:i,position:l})}removeChild(s)}else this._ePadTop.style.width="";this._updateViewRange()}this.checkedItems=this._getCheckedItems();let l=this._getSelectedElement(!0);if(i){(l||t).focus()}else l&&this.showSelection();t.tabIndex=l?-1:this._orgTabIndex;this.onLoadedItems()}}_getCanvasContext(){let t=document.createElement("canvas").getContext("2d"),e=getComputedStyle(this.hostElement);e.fontSize&&e.fontFamily&&(t.font=e.fontSize+" "+e.fontFamily.split(",")[0]);return t}_getVirtual(){if(this._itemCount<=this._vThreshold)return!1;let t=this.hostElement;if(t){let e=getComputedStyle(t);if(parseInt(e.columnCount)>1||e.display.indexOf("flex")>-1||e.display.indexOf("grid")>-1)return!1}return!0}_getMaxSupportedCssHeight(){let t=265e5;isIE()?t=15e5:isFirefox()&&(t=175e5);return t}_updateViewRange(){let t=this.hostElement,e=this._itemHeight,s=this._children;if(!(t&&t.parentElement&&this._isVirtual&&s))return!1;let i=t.scrollTop;assert(e*s.length<this._getMaxSupportedCssHeight(),`The number of items (${s.length}) exceeds the maximum number of items (${Math.floor(this._getMaxSupportedCssHeight()/e)}) allowed for this browser.`);let n=Math.max(t.clientHeight,this._clientHeight),l=Math.floor(i/e),a=Math.min(s.length,Math.ceil((i+n)/e)-l),h=Math.max(0,s.length-l-a);if(l==this._itemsAbove&&h==this._itemsBelow)return!1;this._itemsAbove=l;this._itemsBelow=h;let o=document.createDocumentFragment(),r=this.containsFocus();this._ePadTop.style.height=l*e+"px";o.appendChild(this._ePadTop);if(this.showGroups&&!hasClass(s[l],ListBoxClsNames.header))for(let t=l;t>=0;t--)if(hasClass(s[t],ListBoxClsNames.header)){o.appendChild(s[t]);break}for(let t=l;t<=l+a&&t<s.length;t++)o.appendChild(s[t]);this._ePadBot.style.height=h*e+"px";o.appendChild(this._ePadBot);t.textContent="";t.appendChild(o);let d=(l+a+h)*e-t.scrollHeight;this._ePadBot.style.height=this._ePadBot.offsetHeight-d+"px";let u=this._getSelectedElement(!0);if(r){(u||t).focus({preventScroll:!0})}t.tabIndex=u?-1:this._orgTabIndex;return!0}_getSelectedElement(t){let e=this.selectedIndex,s=this._getElementIndex(e),i=s>-1?this._children[s]:null;t&&i&&!i.offsetHeight&&(i=null);return i}_handleResize(){this._updateViewRange()}_createItem(t,e){let s=this._cv.items[t],i=t==this._cv.currentPosition,n=this.getDisplayValue(t),l=this.getDisplayValue(t,void 0!==this.itemFormatter);if(1!=this._html){n=escapeHtml(n);l=es