@progress/kendo-react-dropdowns 14.0.0-develop.2 → 14.0.0
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/ComboBox/ComboBox.js +1 -1
- package/ComboBox/ComboBox.mjs +1 -0
- package/ComboBox/ComboBoxProps.d.ts +4 -0
- package/MultiColumnComboBox/MultiColumnComboBox.js +1 -1
- package/MultiColumnComboBox/MultiColumnComboBox.mjs +93 -90
- package/codemods/v14/group-mode.js +2 -0
- package/codemods/v14/index.js +2 -0
- package/codemods/v14/utils.js +2 -0
- package/dist/cdn/js/kendo-react-dropdowns.js +1 -1
- package/package-metadata.js +1 -1
- package/package-metadata.mjs +1 -1
- package/package.json +25 -10
package/ComboBox/ComboBox.js
CHANGED
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("react"),f=require("prop-types"),O=require("../common/DropDownBase.js"),h=require("@progress/kendo-react-common"),Y=require("@progress/kendo-react-labels"),d=require("../common/utils.js"),J=require("../common/SearchBar.js"),Q=require("../common/ListContainer.js"),X=require("../common/List.js"),Z=require("../common/ListFilter.js"),_=require("../common/GroupStickyHeader.js"),K=require("../package-metadata.js"),ee=require("../common/ClearButton.js"),te=require("@progress/kendo-react-buttons"),se=require("@progress/kendo-svg-icons"),k=require("../messages/index.js"),N=require("@progress/kendo-react-intl"),ie=require("@progress/kendo-react-layout"),L=require("../common/withCustomComponent.js"),oe=require("../common/AdaptiveMode.js");function ae(w){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(w){for(const e in w)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(w,e);Object.defineProperty(s,e,t.get?t:{enumerable:!0,get:()=>w[e]})}}return s.default=w,Object.freeze(s)}const m=ae($),ne="Please enter a valid value!",F=class F extends m.Component{constructor(s){super(s),this.state={},this.base=new O(this),this._element=null,this._suggested="",this._skipBlur=!1,this._input=null,this._adaptiveFilterInput=null,this._skipFocus=!1,this.itemHeight=0,this.duplicates=[],this.hasDuplicates=!1,this.scrollToFocused=!1,this.showLicenseWatermark=!1,this.focus=()=>{this._input&&this._input.focus()},this.checkForDuplicatePlainTextRecords=()=>{const e=this.props.textField!==void 0,t=this.props.dataItemKey!==void 0;if(this.props.data&&this.props.data.length>0&&!e&&!t){const i=this.props.data;this.duplicates=d.getPlainDataDuplicates(i),this.hasDuplicates=this.duplicates.length>0}},this.handleKendoPasteValue=e=>{const{data:t,textField:i,allowCustom:r}=this.props;if(!t)return;const n=e!=null?String(e):"",a=d.getItemIndexByText(t,n,i,!1,!0),p=a!==-1;let l=null;if(p?l=t[a]:r&&(l=i?{[i]:n}:n),l===null)return;const o=this.base.initState();o.syntheticEvent={target:this._element,currentTarget:this._element,nativeEvent:new Event("change",{bubbles:!0})},this.state.text!==void 0&&(o.data.text=void 0),this.triggerOnChange(l,o),this.applyState(o)},this.handleItemSelect=(e,t)=>{const{virtual:i,dataItemKey:r}=this.props,n=d.getFilteredData(this.props),a=i?i.skip:0,p=n[e-a],l=this.hasDuplicates||!d.areSame(p,this.value,r);this.triggerOnChange(p,t),this.state.text!==void 0&&(t.data.text=void 0),l&&this.base.triggerPageChangeCornerItems(p,t)},this.onPopupOpened=()=>{setTimeout(()=>{this.mobileMode&&this._adaptiveFilterInput&&(this._skipBlur=!0,this._adaptiveFilterInput.focus(),this._skipBlur=!1)},300)},this.componentRef=e=>{this._element=e,this.base.wrapper=e},this.toggleBtnClick=e=>{this._skipFocus=!0;const{skipDisabledItems:t,textField:i}=this.props,r=d.getFilteredData(this.props),n=this.getFocusedIndex(),a=this.getCurrentValueDisabledStatus(i,r,n),p=this.props.opened!==void 0?this.props.opened:this.state.opened,l=this.base.initState();if(l.syntheticEvent=e,!t&&i&&a&&this.clearValueOnToggleBtnClick(e),this.base.togglePopup(l),!p&&this.mobileMode){const o=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text||null;this.base.filterChanged(o,l)}this.applyState(l),setTimeout(()=>{this._skipFocus=!1},300)},this.closeOpenedApplyStateNonMobileMode=(e,t)=>{t&&!this.mobileMode&&this.base.togglePopup(e)},this.renderMobileListFilter=()=>{const e=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text,t=d.getItemValue(this.value,this.props.textField),i=d.isPresent(e)?e:t;return m.createElement(Z,{value:i,ref:r=>{this._adaptiveFilterInput=r&&r.element},onChange:this.handleMobileFilterChange,onKeyDown:this.onInputKeyDown,size:"large",rounded:this.props.rounded,fillMode:this.props.fillMode,placeholder:this.props.placeholder})},this.listContainerContent=()=>{const{header:e,footer:t,size:i,groupStickyHeaderItemRender:r,groupField:n,list:a,unstyled:p,virtual:l}=this.props,o=d.getFilteredData(this.props),c=p&&p.uComboBox;let{group:u}=this.state;return u===void 0&&n!==void 0&&(u=d.getItemValue(o[0],n)),m.createElement("div",{className:h.classNames(h.uComboBox.list({c,list:a,size:"large",tableSize:i,virtual:l}))},e&&m.createElement("div",{className:h.classNames(h.uComboBox.listHeader({c}))},e),!a&&u&&o.length!==0&&m.createElement(_,{group:u,render:r}),this.renderList(),t&&m.createElement("div",{className:h.classNames(h.uComboBox.listFooter({c}),this.props.footerClassName)},t))},this.handleMobileFilterChange=e=>{const t=this.base.initState();t.syntheticEvent=e.syntheticEvent,t.data.text=e.target.value,this.base.filterChanged(e.target.value,t),this.applyState(t)},this.onScroll=e=>{const{vs:t,list:i}=this.base;t.scrollHandler(e);const{groupField:r}=this.props;let n=d.getFilteredData(this.props);if(!r||!n.length)return;const a=this.itemHeight=this.itemHeight||(t.enabled?t.itemHeight:i?i.children[0].offsetHeight:0),l=e.target.scrollTop-t.skip*a;n=this.base.getGroupedDataModernMode(n,r);let o=n[0][r];for(let c=1;c<n.length&&!(a*c>l);c++)n[c]&&n[c][r]&&(o=n[c][r]);o!==this.state.group&&(this.setState({group:o}),this.props.onGroupScroll&&this.props.onGroupScroll.call(void 0,{group:o}))},this.handleItemClick=(e,t)=>{this.navigationIndex=e,this.base.handleItemClick(e,t),this._valueDuringOnChange=void 0},this.handleBlur=e=>{if(this.state.focused&&!this._skipBlur){const t=this.base.initState(),{textField:i}=this.props,r=d.getFilteredData(this.props),n=this.getFocusedIndex(),p=!(n===-1)&&this.getCurrentValueDisabledStatus(i,r,n);t.data.focused=!1,t.events.push({type:"onBlur"}),t.syntheticEvent=e,i&&p&&this.clearValueOnBlur(e),this.applyValueOnRejectSuggestions(e.currentTarget.value,t)}},this.onInputClick=e=>{const t=this.props.opened!==void 0?this.props.opened:this.state.opened,i=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text||null;if(!t&&this.mobileMode){const r=this.base.initState();r.syntheticEvent=e,this.base.togglePopup(r),this.base.filterChanged(i,r),this.applyState(r)}},this.onInputKeyDown=e=>{const{skipDisabledItems:t,textField:i,dataItemKey:r,groupField:n}=this.props,a=d.getFilteredData(this.props),p=this.value,l=Math.max(0,a.findIndex(v=>d.areSame(v,p,r))),o=e.keyCode,c=this.props.opened!==void 0?this.props.opened:this.state.opened,u=this.base.initState();if(u.syntheticEvent=e,!e.altKey&&(o===h.Keys.up||o===h.Keys.down)){if(e.preventDefault(),n!==""&&i)if(!this.props.skipDisabledItems&&c)this.onNavigate(u,o);else{let v=0;if(o===h.Keys.down||o===h.Keys.right){const g=a.slice(l+1<a.length?l+1:l).find(x=>!x.disabled&&x[i]);v=g&&a.findIndex(x=>x[i]===g[i])}else if(o===h.Keys.up||o===h.Keys.left){let g;if(l===0)g=a,v=a.findIndex(x=>!x.disabled&&x[i]);else{g=a.slice(0,l);let x=g.pop();for(;x&&x.disabled;)x=g.pop();v=x&&a.findIndex(S=>S[i]===x[i])}}if(v!==void 0){const g=v-l;this.onNavigate(u,o,g)}else v===void 0&&a.findIndex(g=>g[i]===p[i])===a.length-1&&this.onNavigate(u,o)}else if(!this.props.skipDisabledItems&&c)this.onNavigate(u,o);else{let v=null;if(o===h.Keys.down||o===h.Keys.right)v=a.slice(l+1).find(g=>!g.disabled);else if(o===h.Keys.up||o===h.Keys.left){const g=a.slice(0,l);for(v=g.pop();v&&v.disabled;)v=g.pop()}if(v){const g=v.id-l-1;this.onNavigate(u,o,g)}else this.onNavigate(u,o)}this.applyState(u)}const y=()=>{e.preventDefault(),this.base.togglePopup(u),this.applyState(u)},C=this.getFocusedIndex(),I=C===-1,b=!I&&this.getCurrentValueDisabledStatus(i,a,C);c?o===h.Keys.pageUp?(e.preventDefault(),this.base.scrollPopupByPageSize(-1)):o===h.Keys.pageDown?(e.preventDefault(),this.base.scrollPopupByPageSize(1)):e.altKey&&o===h.Keys.up?y():o===h.Keys.enter?(e.preventDefault(),(i&&!I&&e.currentTarget.value?a[C][i]:void 0)?!t&&i&&b?this.clearValueOnEnterOrEsc(e):b||this.applyValueOnEnter(e.currentTarget.value,u):this.applyValueOnEnter(e.currentTarget.value,u)):o===h.Keys.esc&&(!t&&i&&b&&this.clearValueOnEnterOrEsc(e),this.applyValueOnRejectSuggestions(e.currentTarget.value,u)):!c&&o===h.Keys.esc?this.clearValueOnEnterOrEsc(e):e.altKey&&o===h.Keys.down&&y()},this.inputOnChange=e=>{const t=this.base.initState();t.syntheticEvent=e;const i=this.props.opened!==void 0?this.props.opened:this.state.opened,r=e.currentTarget,n=r.value;if(this.props.suggest){const a=r.selectionEnd===n.length;let p=this.props.filter!==void 0?this.props.filter:this.state.text;d.isPresent(p)||(p=d.getItemValue(this.value,this.props.textField)||"");const l=p&&p===n,o=p&&p.length>n.length;l||o||!a?this._suggested="":this.suggestValue(n)}this.props.filter===void 0&&(t.data.text=n),this.state.focusedItem!==void 0&&(t.data.focusedItem=void 0),i?this.scrollToFocused=!0:this.base.togglePopup(t),this.base.filterChanged(n,t),this.applyState(t),this.setState({group:void 0})},this.clearButtonClick=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnEnterOrEsc=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnBlur=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnToggleBtnClick=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.setValidity=()=>{this._input&&this._input.setCustomValidity&&this._input.setCustomValidity(this.validity.valid?"":this.props.validationMessage||ne)},this.handleFocus=e=>{if(this._skipFocus)return;const t=this.base.initState();t.syntheticEvent=e,this.mobileMode&&!this._skipFocus&&(this._skipFocus=!0,this.base.togglePopup(t),this.applyState(t),setTimeout(()=>{this._skipFocus=!1},300)),this.base.handleFocus(e)},this.showLicenseWatermark=!h.validatePackage(K.packageMetadata,{component:"ComboBox"}),this.licenseMessage=h.getLicenseMessage(K.packageMetadata)}get _inputId(){return this.props.id}get document(){if(h.canUseDOM)return this.element&&this.element.ownerDocument||document}get element(){return this._element}get mobileMode(){var e;return!!(this.state.windowWidth&&this.props._adaptiveMode&&this.state.windowWidth<=((e=this.props._adaptiveMode)==null?void 0:e.medium)&&this.props.adaptive)}get value(){if(this._valueDuringOnChange!==void 0)return this._valueDuringOnChange;if(this.props.value!==void 0)return this.props.value;if(this.state.value!==void 0)return this.state.value;if(this.props.defaultValue!==void 0)return this.props.defaultValue}get index(){const{dataItemKey:s}=this.props,e=d.getFilteredData(this.props),t=this.value;return e.findIndex(i=>d.areSame(i,t,s))}get name(){return this.props.name}get validity(){const s=this.props.validationMessage!==void 0,e=!this.required||this.value!==null&&this.value!==""&&this.value!==void 0,t=this.props.valid!==void 0?this.props.valid:e;return{customError:s,valid:t,valueMissing:this.value===null}}get validityStyles(){return this.props.validityStyles!==void 0?this.props.validityStyles:F.defaultProps.validityStyles}get required(){return this.props.required!==void 0?this.props.required:F.defaultProps.required}componentDidUpdate(s,e){var y,C;const{dataItemKey:t,virtual:i,groupField:r="",textField:n}=this.props,a=d.getFilteredData(this.props),p=s.virtual?s.virtual.total:0,l=this.props.opened!==void 0?this.props.opened:this.state.opened,o=s.opened!==void 0?s.opened:e.opened;s.data!==a&&this.checkForDuplicatePlainTextRecords();const c=!o&&l,u=this.value;if(this._valueOnDidUpdate=u,this.base.didUpdate(),i&&i.total!==p)this.base.vs.calcScrollElementHeight(),this.base.vs.reset();else{const I=s.value!==void 0?s.value:e.value;let b=this.hasDuplicates?this.navigationIndex||0:a.findIndex(g=>d.areSame(g,u,t));n&&u&&(b=(y=this.base.getGroupedDataModernMode(a,r))==null?void 0:y.map(g=>g[n]).indexOf(u[n]));const v=!d.areSame(I,u,t);if(c&&i?this.base.scrollToVirtualItem(i,b):c&&!i?(this.onPopupOpened(),a&&a.length!==0&&this.base.resetGroupStickyHeader(a[0][r],this),this.base.scrollToItem(b)):(this.hasDuplicates||l&&o&&u&&v)&&this.base.scrollToItem(b),l&&o&&this.scrollToFocused){const g=(C=this.props.filter?this.props.filter:this.state.text)!=null?C:"";if(g){const{focusedItemIndex:x=d.itemIndexStartsWith}=this.props,S=x(a,g,n);this.base.scrollToItem(S)}else this.base.scrollToItem(0)}}this.scrollToFocused=!1,c&&this._input&&this._input.focus(),this.setValidity()}componentDidMount(){var e;this.observerResize=h.canUseDOM&&window.ResizeObserver&&new window.ResizeObserver(this.calculateMedia.bind(this)),this.base.didMount(),this.setValidity(),(e=this.document)!=null&&e.body&&this.observerResize&&this.observerResize.observe(this.document.body),this.checkForDuplicatePlainTextRecords();const s=this.props.name||this.props.id;this.KendoPasteSubscription=h.subscribeToKendoPaste(this._element,{fieldName:s,onValueChange:t=>{this.handleKendoPasteValue(t)}})}componentWillUnmount(){var s,e;(s=this.document)!=null&&s.body&&this.observerResize&&this.observerResize.disconnect(),(e=this.KendoPasteSubscription)==null||e.unsubscribe()}render(){const s=N.provideLocalizationService(this).toLanguageString(k.comboArrowBtnAriaLabelExpand,k.messages[k.comboArrowBtnAriaLabelExpand]),e=N.provideLocalizationService(this).toLanguageString(k.comboArrowBtnAriaLabelCollapse,k.messages[k.comboArrowBtnAriaLabelCollapse]),{dir:t,disabled:i,clearButton:r=F.defaultProps.clearButton,label:n,textField:a,className:p,style:l,loading:o,iconClassName:c,virtual:u,size:y,rounded:C,fillMode:I,opened:b=this.state.opened,placeholder:v,svgIcon:g,unstyled:x}=this.props,S=!this.validityStyles||this.validity.valid,D=this.props.filter!==void 0?this.props.filter:this.state.text,A=d.getItemValue(this.value,a),V=d.isPresent(D)?D:A,z=r&&(!!V||d.isPresent(this.value)),B=this.base.vs,T=this.props.id||this._inputId,E=x&&x.uComboBox;B.enabled=u!==void 0,u!==void 0&&(B.skip=u.skip,B.total=u.total,B.pageSize=u.pageSize);const[H,W]=L(this.props.prefix||m.Fragment),[j,U]=L(this.props.suffix||m.Fragment),P=m.createElement(m.Fragment,null,m.createElement("span",{className:h.classNames(h.uComboBox.wrapper({c:E,size:y,rounded:C,fillMode:I,disabled:i,invalid:!S,loading:o,required:this.required}),p),ref:this.componentRef,style:n?{...l,width:void 0}:l,dir:t,onFocus:this.handleFocus},this.props.prefix&&m.createElement(H,{...W}),this.renderSearchBar(V||"",T,v),z&&!o&&m.createElement(ee,{onClick:this.clearButtonClick,key:"clearbutton"}),o&&m.createElement(h.IconWrap,{className:h.classNames(h.uComboBox.loadingIcon({c:E})),name:"loading",key:"loading"}),this.props.suffix&&m.createElement(j,{...U}),m.createElement(te.Button,{tabIndex:-1,type:"button","aria-label":b?e:s,icon:c?void 0:"caret-alt-down",svgIcon:g||se.caretAltDownIcon,iconClass:c,size:y,fillMode:I,className:h.classNames(h.uComboBox.inputButton({c:E})),onClick:this.toggleBtnClick,onMouseDown:G=>G.preventDefault()}),!this.mobileMode&&this.renderListContainer()),this.mobileMode&&this.renderAdaptiveListContainer());return n?m.createElement(Y.FloatingLabel,{label:n,editorId:T,editorValue:V,editorValid:S,editorDisabled:i,style:{width:l?l.width:void 0},children:P,unstyled:x}):P}onNavigate(s,e,t){const{virtual:i={skip:0}}=this.props,r=d.getFilteredData(this.props),n=this.props.filter?this.props.filter:this.state.text;let a=-1,p;const l=this.base.vs,o=this.value;this._suggested="";const c=this.hasDuplicates&&this.duplicates.indexOf(o)!==-1;if(a=this.getFocusedIndex(c),a!==-1&&!d.isPresent(o))this.handleItemSelect(a,s);else if(n==="")this.handleItemSelect(0,s);else{const u=i.skip+a;p=this.base.navigation.navigate({keyCode:e,current:u,max:(l.enabled?l.total:r.length)-1,min:0,skipItems:t||void 0}),p!==void 0&&this.handleItemSelect(p,s)}this.navigationIndex=p}getCurrentValueDisabledStatus(s,e,t){return s&&e&&e[t]&&e[t].disabled}applyValueOnEnter(s,e){const{textField:t,allowCustom:i,ignoreCase:r}=this.props,n=d.getFilteredData(this.props),a=this.props.opened!==void 0?this.props.opened:this.state.opened,l=d.getItemValue(this.value,t)===s?this.index:d.getItemIndexByText(n,s,t,!1,r),o=l!==-1;let c;if(this._suggested="",o)c=n[l];else if(i)c=t!==void 0?{[t]:s}:s;else return this.selectFocusedItem(s,e);this.triggerOnChange(c,e),a&&this.base.togglePopup(e),this.props.filter===void 0&&this.state.text!==void 0&&(e.data.text=void 0),this.applyState(e)}applyValueOnRejectSuggestions(s,e){const{textField:t,allowCustom:i,ignoreCase:r}=this.props,n=d.getFilteredData(this.props),a=this.props.opened!==void 0?this.props.opened:this.state.opened,p=d.getItemValue(this.value,t);if(this._suggested="",s===p||s===""&&!d.isPresent(p))return this.closeOpenedApplyStateNonMobileMode(e,a),this.applyState(e);const l=d.getItemIndexByText(n,s,t,!0,r),o=l!==-1;let c=null;o?c=n[l]:i&&(c=s?t?{[t]:s}:s:null),this.triggerOnChange(c,e),this.state.text!==void 0&&(e.data.text=void 0,this.base.filterChanged("",e)),this.closeOpenedApplyStateNonMobileMode(e,a),this.applyState(e)}selectFocusedItem(s,e){const t=this.props.opened!==void 0?this.props.opened:this.state.opened,{textField:i,virtual:r={skip:0},focusedItemIndex:n=d.itemIndexStartsWith}=this.props,a=d.getFilteredData(this.props),p=r.skip,l=s===""&&p===0?0:n(a,s,i);return l!==-1?this.handleItemSelect(l+p,e):(this.triggerOnChange(null,e),this.state.text!==void 0&&(e.data.text=void 0)),t&&this.base.togglePopup(e),this.applyState(e)}renderAdaptiveListContainer(){const{windowWidth:s=0}=this.state,{groupField:e,adaptiveTitle:t=this.props.label,adaptiveSubtitle:i}=this.props,r=d.getFilteredData(this.props),n=this.props.opened!==void 0?this.props.opened:this.state.opened;let{group:a}=this.state;a===void 0&&e!==void 0&&(a=d.getItemValue(r[0],e));const p={title:t||this.props.label,subTitle:i,expand:n,onClose:l=>this.toggleBtnClick(l),windowWidth:s,mobileFilter:this.renderMobileListFilter()};return m.createElement(oe.AdaptiveMode,{...p},m.createElement(ie.ActionSheetContent,null,m.createElement("div",{className:"k-list-container"},this.listContainerContent())))}renderListContainer(){const s=this.base,{dir:e,header:t,footer:i,groupField:r,size:n,list:a,virtual:p,groupStickyHeaderItemRender:l,unstyled:o}=this.props,c=d.getFilteredData(this.props),u=this.props.opened!==void 0?this.props.opened:this.state.opened,y=s.getPopupSettings(),C=y.width!==void 0?y.width:s.popupWidth,I=o&&o.uComboBox;let{group:b}=this.state;return b===void 0&&r!==void 0&&(b=d.getItemValue(c[0],r)),m.createElement(Q,{width:C,popupSettings:{...y,anchor:y.anchor||this.element,show:u,popupClass:h.classNames(y.popupClass,h.uComboBox.listContainer({c:I,popup:!0}))},dir:e!==void 0?e:this.base.dirCalculated,itemsCount:[c.length]},m.createElement("div",{className:h.classNames(h.uComboBox.list({c:I,list:a,size:n,tableSize:n,virtual:p}))},t&&m.createElement("div",{className:h.classNames(h.uComboBox.listHeader({c:I}))},t),!a&&b&&c.length!==0&&m.createElement(_,{group:b,render:l}),this.renderList(),i&&m.createElement("div",{className:h.classNames(h.uComboBox.listFooter({c:I}),this.props.footerClassName)},i)),this.showLicenseWatermark&&m.createElement(h.WatermarkOverlay,{message:this.licenseMessage}))}renderList(){const s=this.base,{textField:e,dataItemKey:t,listNoDataRender:i,itemRender:r,groupHeaderItemRender:n,virtual:a={skip:0,total:void 0},unstyled:p}=this.props,l=d.getFilteredData(this.props),o=s.getPopupSettings(),c=s.vs,u=a.skip,y=this.props.opened!==void 0?this.props.opened:this.state.opened,C=`translateY(${c.translate}px)`,I=y?this.getFocusedIndex(this.hasDuplicates):void 0,b=this.props.filter!==void 0?this.props.filter:this.state.text,v=d.getItemValue(this.value,e),g=d.isPresent(b)&&b!==v?null:this.value,x=this.props.list||X,S=p&&p.uComboBox;return m.createElement(x,{id:s.listBoxId,virtual:!!a,show:y,data:l,focusedIndex:I,value:g,textField:e,valueField:t,groupField:this.props.groupField,isMultiColumn:this.props.isMultiColumn,optionsGuid:s.guid,hasDuplicates:this.hasDuplicates,listRef:D=>{c.list=this.base.list=D,this.itemHeight=0},wrapperStyle:this.mobileMode?{}:{maxHeight:o.height},wrapperCssClass:h.classNames(h.uComboBox.listContent({c:S,virtual:a})),listStyle:c.enabled?{transform:C}:void 0,key:"listkey",skip:u,onClick:this.handleItemClick,itemRender:r,groupHeaderItemRender:n,noDataRender:i,onMouseDown:D=>D.preventDefault(),onScroll:this.onScroll,wrapperRef:c.scrollerRef,scroller:this.base.renderScrollElement(),ariaSetSize:a.total})}renderSearchBar(s,e,t){const{tabIndex:i,accessKey:r,disabled:n,title:a,ariaLabelledBy:p,ariaDescribedBy:l,dataItemKey:o,virtual:c={skip:0},unstyled:u,inputAttributes:y}=this.props,C=d.getFilteredData(this.props),I=this.props.opened!==void 0?this.props.opened:this.state.opened,b=this.value,v=Math.max(0,C.findIndex(g=>d.areSame(g,b,o)));return this._suggested&&!d.areSame(this._valueOnDidUpdate,b,o)&&(this._suggested=""),m.createElement(J,{id:e,readOnly:I&&this.mobileMode,placeholder:t,tabIndex:i,accessKey:r,title:a,value:s+this._suggested,suggestedText:this._suggested,ref:g=>{this._input=g&&g.input},onClick:this.onInputClick,onKeyDown:this.onInputKeyDown,onChange:this.inputOnChange,onFocus:this.base.handleFocus,onBlur:this.handleBlur,disabled:n,expanded:I,owns:this.base.listBoxId,activedescendant:`option-${this.base.guid}-${v+c.skip}`,role:"combobox",ariaLabelledBy:p,ariaLabel:this.props.ariaLabel,ariaDescribedBy:l,ariaRequired:this.required,render:this.props.valueRender,ariaControls:this.base.listBoxId,unstyled:u,inputAttributes:y})}clearValue(){const s=this.base.initState();this._suggested="",this.navigationIndex=void 0,this.base.filterChanged("",s),this.props.filter===void 0&&this.state.text!==void 0&&(s.data.text=void 0),this.triggerOnChange(null,s);const e=this.props.opened!==void 0?this.props.opened:this.state.opened,t=this.mobileMode;e&&!t&&this.base.togglePopup(s),this.applyState(s)}triggerOnChange(s,e){const t=this.value;!this.hasDuplicates&&(!d.isPresent(t)&&!d.isPresent(s)||d.areSame(t,s,this.props.dataItemKey))||(this.props.value===void 0&&(e.data.value=s),this._valueDuringOnChange=s,e.events.push({type:"onChange"}))}getFocusedIndex(s){const e=this.value,{textField:t,dataItemKey:i,virtual:r={skip:0},focusedItemIndex:n=d.itemIndexStartsWith,skipDisabledItems:a}=this.props,p=d.getFilteredData(this.props),l=this.props.filter?this.props.filter:this.state.text;return s&&this.navigationIndex!==void 0?this.navigationIndex:d.isPresent(e)&&l===void 0?p.findIndex(o=>d.areSame(o,e,i)):l?n(p,l,t):a&&t&&!l&&r.skip===0?p.findIndex(o=>!o.disabled&&o[t]):r.skip===0?0:-1}suggestValue(s){const{data:e,textField:t}=this.props;this._suggested=d.suggestValue(s,e,t)}applyState(s){this.base.applyState(s),this._valueDuringOnChange=void 0}calculateMedia(s){for(const e of s)this.setState({windowWidth:e.target.clientWidth})}};F.displayName="ComboBox",F.propTypes={...O.propTypes,size:f.oneOf(["small","medium","large"]),rounded:f.oneOf(["small","medium","large","full","none"]),fillMode:f.oneOf(["solid","flat","outline"]),dataItemKey:f.string,groupField:f.string,isMultiColumn:f.bool,suggest:f.bool,placeholder:f.string,title:f.string,allowCustom:f.bool,ignoreCase:f.bool,clearButton:f.bool,iconClassName:f.string,svgIcon:h.svgIconPropType,validationMessage:f.string,required:f.bool,id:f.string,ariaLabelledBy:f.string,ariaLabel:f.string,ariaDescribedBy:f.string,list:f.any,valueRender:f.func,skipDisabledItems:f.bool,inputAttributes:f.object},F.defaultProps={...O.defaultProps,size:void 0,rounded:void 0,fillMode:void 0,allowCustom:!1,ignoreCase:!1,clearButton:!0,required:!1,isMultiColumn:!1,skipDisabledItems:!0,prefix:void 0,suffix:void 0};let M=F;const R=h.createPropsContext(),q=h.withIdHOC(h.withPropsContext(R,h.withUnstyledHOC(h.withAdaptiveModeContext(M))));q.displayName="KendoReactComboBox";exports.ComboBox=q;exports.ComboBoxPropsContext=R;exports.ComboBoxWithoutContext=M;
|
|
8
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("react"),f=require("prop-types"),O=require("../common/DropDownBase.js"),h=require("@progress/kendo-react-common"),Y=require("@progress/kendo-react-labels"),d=require("../common/utils.js"),J=require("../common/SearchBar.js"),Q=require("../common/ListContainer.js"),X=require("../common/List.js"),Z=require("../common/ListFilter.js"),_=require("../common/GroupStickyHeader.js"),K=require("../package-metadata.js"),ee=require("../common/ClearButton.js"),te=require("@progress/kendo-react-buttons"),se=require("@progress/kendo-svg-icons"),k=require("../messages/index.js"),N=require("@progress/kendo-react-intl"),ie=require("@progress/kendo-react-layout"),L=require("../common/withCustomComponent.js"),oe=require("../common/AdaptiveMode.js");function ae(w){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(w){for(const e in w)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(w,e);Object.defineProperty(s,e,t.get?t:{enumerable:!0,get:()=>w[e]})}}return s.default=w,Object.freeze(s)}const m=ae($),ne="Please enter a valid value!",F=class F extends m.Component{constructor(s){super(s),this.state={},this.base=new O(this),this._element=null,this._suggested="",this._skipBlur=!1,this._input=null,this._adaptiveFilterInput=null,this._skipFocus=!1,this.itemHeight=0,this.duplicates=[],this.hasDuplicates=!1,this.scrollToFocused=!1,this.showLicenseWatermark=!1,this.focus=()=>{this._input&&this._input.focus()},this.checkForDuplicatePlainTextRecords=()=>{const e=this.props.textField!==void 0,t=this.props.dataItemKey!==void 0;if(this.props.data&&this.props.data.length>0&&!e&&!t){const i=this.props.data;this.duplicates=d.getPlainDataDuplicates(i),this.hasDuplicates=this.duplicates.length>0}},this.handleKendoPasteValue=e=>{const{data:t,textField:i,allowCustom:r}=this.props;if(!t)return;const n=e!=null?String(e):"",a=d.getItemIndexByText(t,n,i,!1,!0),p=a!==-1;let l=null;if(p?l=t[a]:r&&(l=i?{[i]:n}:n),l===null)return;const o=this.base.initState();o.syntheticEvent={target:this._element,currentTarget:this._element,nativeEvent:new Event("change",{bubbles:!0})},this.state.text!==void 0&&(o.data.text=void 0),this.triggerOnChange(l,o),this.applyState(o)},this.handleItemSelect=(e,t)=>{const{virtual:i,dataItemKey:r}=this.props,n=d.getFilteredData(this.props),a=i?i.skip:0,p=n[e-a],l=this.hasDuplicates||!d.areSame(p,this.value,r);this.triggerOnChange(p,t),this.state.text!==void 0&&(t.data.text=void 0),l&&this.base.triggerPageChangeCornerItems(p,t)},this.onPopupOpened=()=>{setTimeout(()=>{this.mobileMode&&this._adaptiveFilterInput&&(this._skipBlur=!0,this._adaptiveFilterInput.focus(),this._skipBlur=!1)},300)},this.componentRef=e=>{this._element=e,this.base.wrapper=e},this.toggleBtnClick=e=>{this._skipFocus=!0;const{skipDisabledItems:t,textField:i}=this.props,r=d.getFilteredData(this.props),n=this.getFocusedIndex(),a=this.getCurrentValueDisabledStatus(i,r,n),p=this.props.opened!==void 0?this.props.opened:this.state.opened,l=this.base.initState();if(l.syntheticEvent=e,!t&&i&&a&&this.clearValueOnToggleBtnClick(e),this.base.togglePopup(l),!p&&this.mobileMode){const o=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text||null;this.base.filterChanged(o,l)}this.applyState(l),setTimeout(()=>{this._skipFocus=!1},300)},this.closeOpenedApplyStateNonMobileMode=(e,t)=>{t&&!this.mobileMode&&this.base.togglePopup(e)},this.renderMobileListFilter=()=>{const e=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text,t=d.getItemValue(this.value,this.props.textField),i=d.isPresent(e)?e:t;return m.createElement(Z,{value:i,ref:r=>{this._adaptiveFilterInput=r&&r.element},onChange:this.handleMobileFilterChange,onKeyDown:this.onInputKeyDown,size:"large",rounded:this.props.rounded,fillMode:this.props.fillMode,placeholder:this.props.placeholder})},this.listContainerContent=()=>{const{header:e,footer:t,size:i,groupStickyHeaderItemRender:r,groupField:n,list:a,unstyled:p,virtual:l}=this.props,o=d.getFilteredData(this.props),c=p&&p.uComboBox;let{group:u}=this.state;return u===void 0&&n!==void 0&&(u=d.getItemValue(o[0],n)),m.createElement("div",{className:h.classNames(h.uComboBox.list({c,list:a,size:"large",tableSize:i,virtual:l}))},e&&m.createElement("div",{className:h.classNames(h.uComboBox.listHeader({c}))},e),!a&&u&&o.length!==0&&m.createElement(_,{group:u,render:r}),this.renderList(),t&&m.createElement("div",{className:h.classNames(h.uComboBox.listFooter({c}),this.props.footerClassName)},t))},this.handleMobileFilterChange=e=>{const t=this.base.initState();t.syntheticEvent=e.syntheticEvent,t.data.text=e.target.value,this.base.filterChanged(e.target.value,t),this.applyState(t)},this.onScroll=e=>{const{vs:t,list:i}=this.base;t.scrollHandler(e);const{groupField:r}=this.props;this.props.onListScroll&&this.props.onListScroll(e);let n=d.getFilteredData(this.props);if(!r||!n.length)return;const a=this.itemHeight=this.itemHeight||(t.enabled?t.itemHeight:i?i.children[0].offsetHeight:0),l=e.target.scrollTop-t.skip*a;n=this.base.getGroupedDataModernMode(n,r);let o=n[0][r];for(let c=1;c<n.length&&!(a*c>l);c++)n[c]&&n[c][r]&&(o=n[c][r]);o!==this.state.group&&(this.setState({group:o}),this.props.onGroupScroll&&this.props.onGroupScroll.call(void 0,{group:o}))},this.handleItemClick=(e,t)=>{this.navigationIndex=e,this.base.handleItemClick(e,t),this._valueDuringOnChange=void 0},this.handleBlur=e=>{if(this.state.focused&&!this._skipBlur){const t=this.base.initState(),{textField:i}=this.props,r=d.getFilteredData(this.props),n=this.getFocusedIndex(),p=!(n===-1)&&this.getCurrentValueDisabledStatus(i,r,n);t.data.focused=!1,t.events.push({type:"onBlur"}),t.syntheticEvent=e,i&&p&&this.clearValueOnBlur(e),this.applyValueOnRejectSuggestions(e.currentTarget.value,t)}},this.onInputClick=e=>{const t=this.props.opened!==void 0?this.props.opened:this.state.opened,i=this.props.adaptiveFilter!==void 0?this.props.adaptiveFilter:this.state.text||null;if(!t&&this.mobileMode){const r=this.base.initState();r.syntheticEvent=e,this.base.togglePopup(r),this.base.filterChanged(i,r),this.applyState(r)}},this.onInputKeyDown=e=>{const{skipDisabledItems:t,textField:i,dataItemKey:r,groupField:n}=this.props,a=d.getFilteredData(this.props),p=this.value,l=Math.max(0,a.findIndex(v=>d.areSame(v,p,r))),o=e.keyCode,c=this.props.opened!==void 0?this.props.opened:this.state.opened,u=this.base.initState();if(u.syntheticEvent=e,!e.altKey&&(o===h.Keys.up||o===h.Keys.down)){if(e.preventDefault(),n!==""&&i)if(!this.props.skipDisabledItems&&c)this.onNavigate(u,o);else{let v=0;if(o===h.Keys.down||o===h.Keys.right){const g=a.slice(l+1<a.length?l+1:l).find(x=>!x.disabled&&x[i]);v=g&&a.findIndex(x=>x[i]===g[i])}else if(o===h.Keys.up||o===h.Keys.left){let g;if(l===0)g=a,v=a.findIndex(x=>!x.disabled&&x[i]);else{g=a.slice(0,l);let x=g.pop();for(;x&&x.disabled;)x=g.pop();v=x&&a.findIndex(S=>S[i]===x[i])}}if(v!==void 0){const g=v-l;this.onNavigate(u,o,g)}else v===void 0&&a.findIndex(g=>g[i]===p[i])===a.length-1&&this.onNavigate(u,o)}else if(!this.props.skipDisabledItems&&c)this.onNavigate(u,o);else{let v=null;if(o===h.Keys.down||o===h.Keys.right)v=a.slice(l+1).find(g=>!g.disabled);else if(o===h.Keys.up||o===h.Keys.left){const g=a.slice(0,l);for(v=g.pop();v&&v.disabled;)v=g.pop()}if(v){const g=v.id-l-1;this.onNavigate(u,o,g)}else this.onNavigate(u,o)}this.applyState(u)}const y=()=>{e.preventDefault(),this.base.togglePopup(u),this.applyState(u)},C=this.getFocusedIndex(),I=C===-1,b=!I&&this.getCurrentValueDisabledStatus(i,a,C);c?o===h.Keys.pageUp?(e.preventDefault(),this.base.scrollPopupByPageSize(-1)):o===h.Keys.pageDown?(e.preventDefault(),this.base.scrollPopupByPageSize(1)):e.altKey&&o===h.Keys.up?y():o===h.Keys.enter?(e.preventDefault(),(i&&!I&&e.currentTarget.value?a[C][i]:void 0)?!t&&i&&b?this.clearValueOnEnterOrEsc(e):b||this.applyValueOnEnter(e.currentTarget.value,u):this.applyValueOnEnter(e.currentTarget.value,u)):o===h.Keys.esc&&(!t&&i&&b&&this.clearValueOnEnterOrEsc(e),this.applyValueOnRejectSuggestions(e.currentTarget.value,u)):!c&&o===h.Keys.esc?this.clearValueOnEnterOrEsc(e):e.altKey&&o===h.Keys.down&&y()},this.inputOnChange=e=>{const t=this.base.initState();t.syntheticEvent=e;const i=this.props.opened!==void 0?this.props.opened:this.state.opened,r=e.currentTarget,n=r.value;if(this.props.suggest){const a=r.selectionEnd===n.length;let p=this.props.filter!==void 0?this.props.filter:this.state.text;d.isPresent(p)||(p=d.getItemValue(this.value,this.props.textField)||"");const l=p&&p===n,o=p&&p.length>n.length;l||o||!a?this._suggested="":this.suggestValue(n)}this.props.filter===void 0&&(t.data.text=n),this.state.focusedItem!==void 0&&(t.data.focusedItem=void 0),i?this.scrollToFocused=!0:this.base.togglePopup(t),this.base.filterChanged(n,t),this.applyState(t),this.setState({group:void 0})},this.clearButtonClick=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnEnterOrEsc=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnBlur=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.clearValueOnToggleBtnClick=e=>{const t=this.base.initState();t.syntheticEvent=e,e.stopPropagation(),this.clearValue()},this.setValidity=()=>{this._input&&this._input.setCustomValidity&&this._input.setCustomValidity(this.validity.valid?"":this.props.validationMessage||ne)},this.handleFocus=e=>{if(this._skipFocus)return;const t=this.base.initState();t.syntheticEvent=e,this.mobileMode&&!this._skipFocus&&(this._skipFocus=!0,this.base.togglePopup(t),this.applyState(t),setTimeout(()=>{this._skipFocus=!1},300)),this.base.handleFocus(e)},this.showLicenseWatermark=!h.validatePackage(K.packageMetadata,{component:"ComboBox"}),this.licenseMessage=h.getLicenseMessage(K.packageMetadata)}get _inputId(){return this.props.id}get document(){if(h.canUseDOM)return this.element&&this.element.ownerDocument||document}get element(){return this._element}get mobileMode(){var e;return!!(this.state.windowWidth&&this.props._adaptiveMode&&this.state.windowWidth<=((e=this.props._adaptiveMode)==null?void 0:e.medium)&&this.props.adaptive)}get value(){if(this._valueDuringOnChange!==void 0)return this._valueDuringOnChange;if(this.props.value!==void 0)return this.props.value;if(this.state.value!==void 0)return this.state.value;if(this.props.defaultValue!==void 0)return this.props.defaultValue}get index(){const{dataItemKey:s}=this.props,e=d.getFilteredData(this.props),t=this.value;return e.findIndex(i=>d.areSame(i,t,s))}get name(){return this.props.name}get validity(){const s=this.props.validationMessage!==void 0,e=!this.required||this.value!==null&&this.value!==""&&this.value!==void 0,t=this.props.valid!==void 0?this.props.valid:e;return{customError:s,valid:t,valueMissing:this.value===null}}get validityStyles(){return this.props.validityStyles!==void 0?this.props.validityStyles:F.defaultProps.validityStyles}get required(){return this.props.required!==void 0?this.props.required:F.defaultProps.required}componentDidUpdate(s,e){var y,C;const{dataItemKey:t,virtual:i,groupField:r="",textField:n}=this.props,a=d.getFilteredData(this.props),p=s.virtual?s.virtual.total:0,l=this.props.opened!==void 0?this.props.opened:this.state.opened,o=s.opened!==void 0?s.opened:e.opened;s.data!==a&&this.checkForDuplicatePlainTextRecords();const c=!o&&l,u=this.value;if(this._valueOnDidUpdate=u,this.base.didUpdate(),i&&i.total!==p)this.base.vs.calcScrollElementHeight(),this.base.vs.reset();else{const I=s.value!==void 0?s.value:e.value;let b=this.hasDuplicates?this.navigationIndex||0:a.findIndex(g=>d.areSame(g,u,t));n&&u&&(b=(y=this.base.getGroupedDataModernMode(a,r))==null?void 0:y.map(g=>g[n]).indexOf(u[n]));const v=!d.areSame(I,u,t);if(c&&i?this.base.scrollToVirtualItem(i,b):c&&!i?(this.onPopupOpened(),a&&a.length!==0&&this.base.resetGroupStickyHeader(a[0][r],this),this.base.scrollToItem(b)):(this.hasDuplicates||l&&o&&u&&v)&&this.base.scrollToItem(b),l&&o&&this.scrollToFocused){const g=(C=this.props.filter?this.props.filter:this.state.text)!=null?C:"";if(g){const{focusedItemIndex:x=d.itemIndexStartsWith}=this.props,S=x(a,g,n);this.base.scrollToItem(S)}else this.base.scrollToItem(0)}}this.scrollToFocused=!1,c&&this._input&&this._input.focus(),this.setValidity()}componentDidMount(){var e;this.observerResize=h.canUseDOM&&window.ResizeObserver&&new window.ResizeObserver(this.calculateMedia.bind(this)),this.base.didMount(),this.setValidity(),(e=this.document)!=null&&e.body&&this.observerResize&&this.observerResize.observe(this.document.body),this.checkForDuplicatePlainTextRecords();const s=this.props.name||this.props.id;this.KendoPasteSubscription=h.subscribeToKendoPaste(this._element,{fieldName:s,onValueChange:t=>{this.handleKendoPasteValue(t)}})}componentWillUnmount(){var s,e;(s=this.document)!=null&&s.body&&this.observerResize&&this.observerResize.disconnect(),(e=this.KendoPasteSubscription)==null||e.unsubscribe()}render(){const s=N.provideLocalizationService(this).toLanguageString(k.comboArrowBtnAriaLabelExpand,k.messages[k.comboArrowBtnAriaLabelExpand]),e=N.provideLocalizationService(this).toLanguageString(k.comboArrowBtnAriaLabelCollapse,k.messages[k.comboArrowBtnAriaLabelCollapse]),{dir:t,disabled:i,clearButton:r=F.defaultProps.clearButton,label:n,textField:a,className:p,style:l,loading:o,iconClassName:c,virtual:u,size:y,rounded:C,fillMode:I,opened:b=this.state.opened,placeholder:v,svgIcon:g,unstyled:x}=this.props,S=!this.validityStyles||this.validity.valid,D=this.props.filter!==void 0?this.props.filter:this.state.text,A=d.getItemValue(this.value,a),V=d.isPresent(D)?D:A,z=r&&(!!V||d.isPresent(this.value)),B=this.base.vs,T=this.props.id||this._inputId,E=x&&x.uComboBox;B.enabled=u!==void 0,u!==void 0&&(B.skip=u.skip,B.total=u.total,B.pageSize=u.pageSize);const[H,W]=L(this.props.prefix||m.Fragment),[j,U]=L(this.props.suffix||m.Fragment),P=m.createElement(m.Fragment,null,m.createElement("span",{className:h.classNames(h.uComboBox.wrapper({c:E,size:y,rounded:C,fillMode:I,disabled:i,invalid:!S,loading:o,required:this.required}),p),ref:this.componentRef,style:n?{...l,width:void 0}:l,dir:t,onFocus:this.handleFocus},this.props.prefix&&m.createElement(H,{...W}),this.renderSearchBar(V||"",T,v),z&&!o&&m.createElement(ee,{onClick:this.clearButtonClick,key:"clearbutton"}),o&&m.createElement(h.IconWrap,{className:h.classNames(h.uComboBox.loadingIcon({c:E})),name:"loading",key:"loading"}),this.props.suffix&&m.createElement(j,{...U}),m.createElement(te.Button,{tabIndex:-1,type:"button","aria-label":b?e:s,icon:c?void 0:"caret-alt-down",svgIcon:g||se.caretAltDownIcon,iconClass:c,size:y,fillMode:I,className:h.classNames(h.uComboBox.inputButton({c:E})),onClick:this.toggleBtnClick,onMouseDown:G=>G.preventDefault()}),!this.mobileMode&&this.renderListContainer()),this.mobileMode&&this.renderAdaptiveListContainer());return n?m.createElement(Y.FloatingLabel,{label:n,editorId:T,editorValue:V,editorValid:S,editorDisabled:i,style:{width:l?l.width:void 0},children:P,unstyled:x}):P}onNavigate(s,e,t){const{virtual:i={skip:0}}=this.props,r=d.getFilteredData(this.props),n=this.props.filter?this.props.filter:this.state.text;let a=-1,p;const l=this.base.vs,o=this.value;this._suggested="";const c=this.hasDuplicates&&this.duplicates.indexOf(o)!==-1;if(a=this.getFocusedIndex(c),a!==-1&&!d.isPresent(o))this.handleItemSelect(a,s);else if(n==="")this.handleItemSelect(0,s);else{const u=i.skip+a;p=this.base.navigation.navigate({keyCode:e,current:u,max:(l.enabled?l.total:r.length)-1,min:0,skipItems:t||void 0}),p!==void 0&&this.handleItemSelect(p,s)}this.navigationIndex=p}getCurrentValueDisabledStatus(s,e,t){return s&&e&&e[t]&&e[t].disabled}applyValueOnEnter(s,e){const{textField:t,allowCustom:i,ignoreCase:r}=this.props,n=d.getFilteredData(this.props),a=this.props.opened!==void 0?this.props.opened:this.state.opened,l=d.getItemValue(this.value,t)===s?this.index:d.getItemIndexByText(n,s,t,!1,r),o=l!==-1;let c;if(this._suggested="",o)c=n[l];else if(i)c=t!==void 0?{[t]:s}:s;else return this.selectFocusedItem(s,e);this.triggerOnChange(c,e),a&&this.base.togglePopup(e),this.props.filter===void 0&&this.state.text!==void 0&&(e.data.text=void 0),this.applyState(e)}applyValueOnRejectSuggestions(s,e){const{textField:t,allowCustom:i,ignoreCase:r}=this.props,n=d.getFilteredData(this.props),a=this.props.opened!==void 0?this.props.opened:this.state.opened,p=d.getItemValue(this.value,t);if(this._suggested="",s===p||s===""&&!d.isPresent(p))return this.closeOpenedApplyStateNonMobileMode(e,a),this.applyState(e);const l=d.getItemIndexByText(n,s,t,!0,r),o=l!==-1;let c=null;o?c=n[l]:i&&(c=s?t?{[t]:s}:s:null),this.triggerOnChange(c,e),this.state.text!==void 0&&(e.data.text=void 0,this.base.filterChanged("",e)),this.closeOpenedApplyStateNonMobileMode(e,a),this.applyState(e)}selectFocusedItem(s,e){const t=this.props.opened!==void 0?this.props.opened:this.state.opened,{textField:i,virtual:r={skip:0},focusedItemIndex:n=d.itemIndexStartsWith}=this.props,a=d.getFilteredData(this.props),p=r.skip,l=s===""&&p===0?0:n(a,s,i);return l!==-1?this.handleItemSelect(l+p,e):(this.triggerOnChange(null,e),this.state.text!==void 0&&(e.data.text=void 0)),t&&this.base.togglePopup(e),this.applyState(e)}renderAdaptiveListContainer(){const{windowWidth:s=0}=this.state,{groupField:e,adaptiveTitle:t=this.props.label,adaptiveSubtitle:i}=this.props,r=d.getFilteredData(this.props),n=this.props.opened!==void 0?this.props.opened:this.state.opened;let{group:a}=this.state;a===void 0&&e!==void 0&&(a=d.getItemValue(r[0],e));const p={title:t||this.props.label,subTitle:i,expand:n,onClose:l=>this.toggleBtnClick(l),windowWidth:s,mobileFilter:this.renderMobileListFilter()};return m.createElement(oe.AdaptiveMode,{...p},m.createElement(ie.ActionSheetContent,null,m.createElement("div",{className:"k-list-container"},this.listContainerContent())))}renderListContainer(){const s=this.base,{dir:e,header:t,footer:i,groupField:r,size:n,list:a,virtual:p,groupStickyHeaderItemRender:l,unstyled:o}=this.props,c=d.getFilteredData(this.props),u=this.props.opened!==void 0?this.props.opened:this.state.opened,y=s.getPopupSettings(),C=y.width!==void 0?y.width:s.popupWidth,I=o&&o.uComboBox;let{group:b}=this.state;return b===void 0&&r!==void 0&&(b=d.getItemValue(c[0],r)),m.createElement(Q,{width:C,popupSettings:{...y,anchor:y.anchor||this.element,show:u,popupClass:h.classNames(y.popupClass,h.uComboBox.listContainer({c:I,popup:!0}))},dir:e!==void 0?e:this.base.dirCalculated,itemsCount:[c.length]},m.createElement("div",{className:h.classNames(h.uComboBox.list({c:I,list:a,size:n,tableSize:n,virtual:p}))},t&&m.createElement("div",{className:h.classNames(h.uComboBox.listHeader({c:I}))},t),!a&&b&&c.length!==0&&m.createElement(_,{group:b,render:l}),this.renderList(),i&&m.createElement("div",{className:h.classNames(h.uComboBox.listFooter({c:I}),this.props.footerClassName)},i)),this.showLicenseWatermark&&m.createElement(h.WatermarkOverlay,{message:this.licenseMessage}))}renderList(){const s=this.base,{textField:e,dataItemKey:t,listNoDataRender:i,itemRender:r,groupHeaderItemRender:n,virtual:a={skip:0,total:void 0},unstyled:p}=this.props,l=d.getFilteredData(this.props),o=s.getPopupSettings(),c=s.vs,u=a.skip,y=this.props.opened!==void 0?this.props.opened:this.state.opened,C=`translateY(${c.translate}px)`,I=y?this.getFocusedIndex(this.hasDuplicates):void 0,b=this.props.filter!==void 0?this.props.filter:this.state.text,v=d.getItemValue(this.value,e),g=d.isPresent(b)&&b!==v?null:this.value,x=this.props.list||X,S=p&&p.uComboBox;return m.createElement(x,{id:s.listBoxId,virtual:!!a,show:y,data:l,focusedIndex:I,value:g,textField:e,valueField:t,groupField:this.props.groupField,isMultiColumn:this.props.isMultiColumn,optionsGuid:s.guid,hasDuplicates:this.hasDuplicates,listRef:D=>{c.list=this.base.list=D,this.itemHeight=0},wrapperStyle:this.mobileMode?{}:{maxHeight:o.height},wrapperCssClass:h.classNames(h.uComboBox.listContent({c:S,virtual:a})),listStyle:c.enabled?{transform:C}:void 0,key:"listkey",skip:u,onClick:this.handleItemClick,itemRender:r,groupHeaderItemRender:n,noDataRender:i,onMouseDown:D=>D.preventDefault(),onScroll:this.onScroll,wrapperRef:c.scrollerRef,scroller:this.base.renderScrollElement(),ariaSetSize:a.total})}renderSearchBar(s,e,t){const{tabIndex:i,accessKey:r,disabled:n,title:a,ariaLabelledBy:p,ariaDescribedBy:l,dataItemKey:o,virtual:c={skip:0},unstyled:u,inputAttributes:y}=this.props,C=d.getFilteredData(this.props),I=this.props.opened!==void 0?this.props.opened:this.state.opened,b=this.value,v=Math.max(0,C.findIndex(g=>d.areSame(g,b,o)));return this._suggested&&!d.areSame(this._valueOnDidUpdate,b,o)&&(this._suggested=""),m.createElement(J,{id:e,readOnly:I&&this.mobileMode,placeholder:t,tabIndex:i,accessKey:r,title:a,value:s+this._suggested,suggestedText:this._suggested,ref:g=>{this._input=g&&g.input},onClick:this.onInputClick,onKeyDown:this.onInputKeyDown,onChange:this.inputOnChange,onFocus:this.base.handleFocus,onBlur:this.handleBlur,disabled:n,expanded:I,owns:this.base.listBoxId,activedescendant:`option-${this.base.guid}-${v+c.skip}`,role:"combobox",ariaLabelledBy:p,ariaLabel:this.props.ariaLabel,ariaDescribedBy:l,ariaRequired:this.required,render:this.props.valueRender,ariaControls:this.base.listBoxId,unstyled:u,inputAttributes:y})}clearValue(){const s=this.base.initState();this._suggested="",this.navigationIndex=void 0,this.base.filterChanged("",s),this.props.filter===void 0&&this.state.text!==void 0&&(s.data.text=void 0),this.triggerOnChange(null,s);const e=this.props.opened!==void 0?this.props.opened:this.state.opened,t=this.mobileMode;e&&!t&&this.base.togglePopup(s),this.applyState(s)}triggerOnChange(s,e){const t=this.value;!this.hasDuplicates&&(!d.isPresent(t)&&!d.isPresent(s)||d.areSame(t,s,this.props.dataItemKey))||(this.props.value===void 0&&(e.data.value=s),this._valueDuringOnChange=s,e.events.push({type:"onChange"}))}getFocusedIndex(s){const e=this.value,{textField:t,dataItemKey:i,virtual:r={skip:0},focusedItemIndex:n=d.itemIndexStartsWith,skipDisabledItems:a}=this.props,p=d.getFilteredData(this.props),l=this.props.filter?this.props.filter:this.state.text;return s&&this.navigationIndex!==void 0?this.navigationIndex:d.isPresent(e)&&l===void 0?p.findIndex(o=>d.areSame(o,e,i)):l?n(p,l,t):a&&t&&!l&&r.skip===0?p.findIndex(o=>!o.disabled&&o[t]):r.skip===0?0:-1}suggestValue(s){const{data:e,textField:t}=this.props;this._suggested=d.suggestValue(s,e,t)}applyState(s){this.base.applyState(s),this._valueDuringOnChange=void 0}calculateMedia(s){for(const e of s)this.setState({windowWidth:e.target.clientWidth})}};F.displayName="ComboBox",F.propTypes={...O.propTypes,size:f.oneOf(["small","medium","large"]),rounded:f.oneOf(["small","medium","large","full","none"]),fillMode:f.oneOf(["solid","flat","outline"]),dataItemKey:f.string,groupField:f.string,isMultiColumn:f.bool,suggest:f.bool,placeholder:f.string,title:f.string,allowCustom:f.bool,ignoreCase:f.bool,clearButton:f.bool,iconClassName:f.string,svgIcon:h.svgIconPropType,validationMessage:f.string,required:f.bool,id:f.string,ariaLabelledBy:f.string,ariaLabel:f.string,ariaDescribedBy:f.string,list:f.any,valueRender:f.func,skipDisabledItems:f.bool,inputAttributes:f.object},F.defaultProps={...O.defaultProps,size:void 0,rounded:void 0,fillMode:void 0,allowCustom:!1,ignoreCase:!1,clearButton:!0,required:!1,isMultiColumn:!1,skipDisabledItems:!0,prefix:void 0,suffix:void 0};let M=F;const R=h.createPropsContext(),q=h.withIdHOC(h.withPropsContext(R,h.withUnstyledHOC(h.withAdaptiveModeContext(M))));q.displayName="KendoReactComboBox";exports.ComboBox=q;exports.ComboBoxPropsContext=R;exports.ComboBoxWithoutContext=M;
|
package/ComboBox/ComboBox.mjs
CHANGED
|
@@ -121,6 +121,7 @@ const Ft = "Please enter a valid value!", M = class M extends u.Component {
|
|
|
121
121
|
const { vs: e, list: i } = this.base;
|
|
122
122
|
e.scrollHandler(t);
|
|
123
123
|
const { groupField: r } = this.props;
|
|
124
|
+
this.props.onListScroll && this.props.onListScroll(t);
|
|
124
125
|
let n = y(this.props);
|
|
125
126
|
if (!r || !n.length)
|
|
126
127
|
return;
|
|
@@ -477,6 +477,10 @@ export interface ComboBoxProps extends FormComponentProps {
|
|
|
477
477
|
onGroupScroll?: (event: {
|
|
478
478
|
group?: string;
|
|
479
479
|
}) => void;
|
|
480
|
+
/**
|
|
481
|
+
* @hidden
|
|
482
|
+
*/
|
|
483
|
+
onListScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
480
484
|
/**
|
|
481
485
|
* Sets the header component of the ComboBox ([see example](https://www.telerik.com/kendo-react-ui/components/dropdowns/combobox/custom-rendering#toc-headers-and-footers)).
|
|
482
486
|
*
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
8
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ce=require("react"),de=require("prop-types"),pe=require("../common/MultiColumnList.js"),n=require("@progress/kendo-react-common"),j=require("../ComboBox/ComboBox.js"),me=require("../common/utils.js"),W=require("../common/withCustomComponent.js");function fe(a){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const e in a)if(e!=="default"){const c=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(i,e,c.get?c:{enumerable:!0,get:()=>a[e]})}}return i.default=a,Object.freeze(i)}const t=fe(ce),ge=(a,i)=>a?typeof a=="number"?a+"px":a:i,G=n.createPropsContext(),y=t.forwardRef((a,i)=>{const e=n.usePropsContext(G,a),c=t.useRef(null),d=t.useRef(null),S=n.getScrollbarWidth(),{columns:l=u.columns,popupSettings:g=u.popupSettings,size:L=u.size,rounded:z=u.rounded,fillMode:_=u.fillMode,className:D,prefix:$=void 0,suffix:V=void 0,onOpen:w,onClose:R,onFocus:F,onBlur:N,onChange:H,onFilterChange:M,onPageChange:E,...A}=e;t.useImperativeHandle(c,()=>{var o;return{element:((o=d.current)==null?void 0:o.element)||null,focus(){d.current&&d.current.focus()},get value(){var r;return(r=d.current)==null?void 0:r.value},get name(){var r;return(r=d.current)==null?void 0:r.name},props:e}}),t.useImperativeHandle(i,()=>c.current);const m=t.useMemo(()=>{if(e.groupField!==void 0&&e.data)return me.getItemValue(e.data[0],e.groupField)},[e.data,e.groupField]),[h,b]=t.useState(m),[q,B]=t.useState(!0),k=t.useRef(null),[J]=$?W(e.prefix||t.Fragment):[],[Q]=V?W(e.suffix||t.Fragment):[],U=t.useMemo(()=>{const o=t.createElement("th",{className:"k-table-th",colSpan:l.length},h);return t.createElement(t.Fragment,null,e.header,t.createElement("div",{ref:k,className:"k-table-header-wrap"},t.createElement("table",{className:"k-table",role:"presentation"},t.createElement("colgroup",null,l.map((r,f)=>t.createElement("col",{key:r.uniqueKey?r.uniqueKey:f,style:{width:r.width?r.width:u.width}}))),t.createElement("thead",{className:"k-table-thead"},t.createElement("tr",{className:"k-table-row"},l.map((r,f)=>t.createElement("th",{className:"k-table-th",key:r.uniqueKey?r.uniqueKey:f},r.header||" "))),h&&q&&t.createElement("tr",{className:"k-table-group-row"},e.groupStickyHeaderItemRender?e.groupStickyHeaderItemRender.call(void 0,o,{}):o)))))},[e.header,l,h,q]),X=t.useMemo(()=>`calc(${l.map(o=>ge(o.width,u.width)).filter(Boolean).join(" + ")} + ${S}px + 4px)`,[l,S]),I=e.virtual?e.virtual.skip:0,Y=t.useCallback((o,r)=>{const f=l.map((p,ie)=>t.createElement("span",{className:e.itemRender?void 0:"k-table-td",style:e.itemRender?void 0:{width:p.width?p.width:u.width},key:p.uniqueKey?p.uniqueKey:ie},p.field?String(n.getter(p.field)(r.dataItem)):""));let O,C,v,x,P=e.data||[];const T=r.index-I;e.groupField!==void 0&&(x=n.getter(e.groupField),C=x(P[T]),v=x(P[T-1]),C&&v&&C!==v&&(O=C));const K=t.cloneElement(o,{...o.props,className:n.classNames("k-table-row",{"k-table-alt-row":r.index%2!==0,"k-focus":r.focused,"k-selected":r.selected,"k-first":!!O,"k-disabled":r.dataItem.disabled})},f);return e.itemRender?e.itemRender.call(void 0,K,r):K},[l,e.groupField,e.itemRender,e.data,I]),s=t.useCallback((o,r)=>{o&&o.call(void 0,{...r,target:c.current})},[]),Z=t.useCallback(o=>(e.virtual||b(m),s(w,o)),[s,w,e.virtual,m]),ee=t.useCallback(o=>s(R,o),[R]),te=t.useCallback(o=>s(F,o),[F]),oe=t.useCallback(o=>s(N,o),[N]),re=t.useCallback(o=>s(H,o),[H]),ae=t.useCallback(o=>s(E,o),[E]),ne=t.useCallback(o=>(b(m),s(M,{...o,mobileMode:o.target.mobileMode})),[M]),le=t.useCallback(o=>{b(o.group)},[]),se=t.useCallback(o=>{k.current&&(k.current.scrollLeft=o.target.scrollLeft)},[]);t.useEffect(()=>{n.setScrollbarWidth()}),t.useEffect(()=>{const o=e.data;b(m),o&&o.length!==0?B(!0):B(!1)},[e.data]);const ue=t.useCallback(o=>t.createElement(pe.MultiColumnList,{...o}),[]);return t.createElement(j.ComboBox,{...A,list:ue,popupSettings:{...g,popupClass:n.classNames("k-dropdowngrid-popup",g.popupClass),width:g.width||X,className:g.className},ref:d,header:U,itemRender:Y,groupHeaderItemRender:e.groupHeaderItemRender,size:L,rounded:z,fillMode:_,groupField:e.groupField,isMultiColumn:!0,onOpen:Z,onClose:ee,onFocus:te,onBlur:oe,onChange:re,onFilterChange:ne,onPageChange:ae,onGroupScroll:le,onListScroll:se,className:n.classNames("k-dropdowngrid",D),required:e.required,adaptive:e.adaptive,adaptiveFilter:e.adaptiveFilter,adaptiveTitle:e.adaptiveTitle,adaptiveSubtitle:e.adaptiveSubtitle,footer:e.footer,footerClassName:"k-table-footer",prefix:J,suffix:Q})}),be={...j.ComboBoxWithoutContext.propTypes,columns:de.any.isRequired},u={columns:[],popupSettings:{},width:"200px",size:void 0,rounded:void 0,fillMode:void 0};y.displayName="KendoMultiColumnComboBox";y.propTypes=be;exports.MultiColumnComboBox=y;exports.MultiColumnComboBoxPropsContext=G;
|
|
@@ -6,46 +6,46 @@
|
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
8
|
import * as e from "react";
|
|
9
|
-
import
|
|
10
|
-
import { MultiColumnList as
|
|
11
|
-
import { usePropsContext as
|
|
12
|
-
import { ComboBox as
|
|
13
|
-
import { getItemValue as
|
|
14
|
-
import
|
|
15
|
-
const
|
|
9
|
+
import ue from "prop-types";
|
|
10
|
+
import { MultiColumnList as de } from "../common/MultiColumnList.mjs";
|
|
11
|
+
import { usePropsContext as ce, getScrollbarWidth as pe, getter as T, classNames as x, setScrollbarWidth as me, createPropsContext as fe } from "@progress/kendo-react-common";
|
|
12
|
+
import { ComboBox as ge, ComboBoxWithoutContext as he } from "../ComboBox/ComboBox.mjs";
|
|
13
|
+
import { getItemValue as Ce } from "../common/utils.mjs";
|
|
14
|
+
import L from "../common/withCustomComponent.mjs";
|
|
15
|
+
const be = (s, g) => s ? typeof s == "number" ? s + "px" : s : g, ke = fe(), P = e.forwardRef(
|
|
16
16
|
(s, g) => {
|
|
17
|
-
const t =
|
|
18
|
-
columns:
|
|
17
|
+
const t = ce(ke, s), h = e.useRef(null), i = e.useRef(null), y = pe(), {
|
|
18
|
+
columns: a = l.columns,
|
|
19
19
|
popupSettings: p = l.popupSettings,
|
|
20
20
|
size: z = l.size,
|
|
21
21
|
rounded: O = l.rounded,
|
|
22
|
-
fillMode:
|
|
23
|
-
className:
|
|
24
|
-
prefix:
|
|
25
|
-
suffix:
|
|
26
|
-
onOpen:
|
|
27
|
-
onClose:
|
|
22
|
+
fillMode: $ = l.fillMode,
|
|
23
|
+
className: j,
|
|
24
|
+
prefix: V = void 0,
|
|
25
|
+
suffix: A = void 0,
|
|
26
|
+
onOpen: w,
|
|
27
|
+
onClose: S,
|
|
28
28
|
onFocus: F,
|
|
29
|
-
onBlur:
|
|
30
|
-
onChange:
|
|
29
|
+
onBlur: H,
|
|
30
|
+
onChange: R,
|
|
31
31
|
onFilterChange: E,
|
|
32
32
|
onPageChange: N,
|
|
33
|
-
...
|
|
33
|
+
...D
|
|
34
34
|
} = t;
|
|
35
35
|
e.useImperativeHandle(h, () => {
|
|
36
|
-
var
|
|
36
|
+
var r;
|
|
37
37
|
return {
|
|
38
|
-
element: ((
|
|
38
|
+
element: ((r = i.current) == null ? void 0 : r.element) || null,
|
|
39
39
|
focus() {
|
|
40
40
|
i.current && i.current.focus();
|
|
41
41
|
},
|
|
42
42
|
get value() {
|
|
43
|
-
var
|
|
44
|
-
return (
|
|
43
|
+
var o;
|
|
44
|
+
return (o = i.current) == null ? void 0 : o.value;
|
|
45
45
|
},
|
|
46
46
|
get name() {
|
|
47
|
-
var
|
|
48
|
-
return (
|
|
47
|
+
var o;
|
|
48
|
+
return (o = i.current) == null ? void 0 : o.name;
|
|
49
49
|
},
|
|
50
50
|
props: t
|
|
51
51
|
};
|
|
@@ -55,106 +55,109 @@ const he = (s, g) => s ? typeof s == "number" ? s + "px" : s : g, Ce = pe(), P =
|
|
|
55
55
|
);
|
|
56
56
|
const d = e.useMemo(() => {
|
|
57
57
|
if (t.groupField !== void 0 && t.data)
|
|
58
|
-
return
|
|
59
|
-
}, [t.data, t.groupField]), [C, m] = e.useState(d), [
|
|
60
|
-
const
|
|
61
|
-
return /* @__PURE__ */ e.createElement(e.Fragment, null, t.header, /* @__PURE__ */ e.createElement("div", { className: "k-table-header-wrap
|
|
58
|
+
return Ce(t.data[0], t.groupField);
|
|
59
|
+
}, [t.data, t.groupField]), [C, m] = e.useState(d), [M, B] = e.useState(!0), b = e.useRef(null), [J] = V ? L(t.prefix || e.Fragment) : [], [Q] = A ? L(t.suffix || e.Fragment) : [], U = e.useMemo(() => {
|
|
60
|
+
const r = /* @__PURE__ */ e.createElement("th", { className: "k-table-th", colSpan: a.length }, C);
|
|
61
|
+
return /* @__PURE__ */ e.createElement(e.Fragment, null, t.header, /* @__PURE__ */ e.createElement("div", { ref: b, className: "k-table-header-wrap" }, /* @__PURE__ */ e.createElement("table", { className: "k-table", role: "presentation" }, /* @__PURE__ */ e.createElement("colgroup", null, a.map((o, c) => /* @__PURE__ */ e.createElement(
|
|
62
62
|
"col",
|
|
63
63
|
{
|
|
64
|
-
key:
|
|
65
|
-
style: { width:
|
|
64
|
+
key: o.uniqueKey ? o.uniqueKey : c,
|
|
65
|
+
style: { width: o.width ? o.width : l.width }
|
|
66
66
|
}
|
|
67
|
-
))), /* @__PURE__ */ e.createElement("thead", { className: "k-table-thead" }, /* @__PURE__ */ e.createElement("tr", { className: "k-table-row" },
|
|
68
|
-
}, [t.header,
|
|
67
|
+
))), /* @__PURE__ */ e.createElement("thead", { className: "k-table-thead" }, /* @__PURE__ */ e.createElement("tr", { className: "k-table-row" }, a.map((o, c) => /* @__PURE__ */ e.createElement("th", { className: "k-table-th", key: o.uniqueKey ? o.uniqueKey : c }, o.header || " "))), C && M && /* @__PURE__ */ e.createElement("tr", { className: "k-table-group-row" }, t.groupStickyHeaderItemRender ? t.groupStickyHeaderItemRender.call(void 0, r, {}) : r)))));
|
|
68
|
+
}, [t.header, a, C, M]), X = e.useMemo(
|
|
69
69
|
() => (
|
|
70
70
|
// These additional 4px are coming from the child elements side borders (fixes horizontal scrollbar)
|
|
71
|
-
`calc(${
|
|
71
|
+
`calc(${a.map((r) => be(r.width, l.width)).filter(Boolean).join(" + ")} + ${y}px + 4px)`
|
|
72
72
|
),
|
|
73
|
-
[
|
|
74
|
-
),
|
|
75
|
-
(
|
|
76
|
-
const c =
|
|
73
|
+
[a, y]
|
|
74
|
+
), q = t.virtual ? t.virtual.skip : 0, Y = e.useCallback(
|
|
75
|
+
(r, o) => {
|
|
76
|
+
const c = a.map((u, ie) => /* @__PURE__ */ e.createElement(
|
|
77
77
|
"span",
|
|
78
78
|
{
|
|
79
79
|
className: t.itemRender ? void 0 : "k-table-td",
|
|
80
80
|
style: t.itemRender ? void 0 : { width: u.width ? u.width : l.width },
|
|
81
|
-
key: u.uniqueKey ? u.uniqueKey :
|
|
81
|
+
key: u.uniqueKey ? u.uniqueKey : ie
|
|
82
82
|
},
|
|
83
|
-
u.field ? String(T(u.field)(
|
|
83
|
+
u.field ? String(T(u.field)(o.dataItem)) : ""
|
|
84
84
|
));
|
|
85
|
-
let
|
|
86
|
-
const
|
|
87
|
-
t.groupField !== void 0 && (
|
|
85
|
+
let I, f, k, v, K = t.data || [];
|
|
86
|
+
const W = o.index - q;
|
|
87
|
+
t.groupField !== void 0 && (v = T(t.groupField), f = v(K[W]), k = v(K[W - 1]), f && k && f !== k && (I = f));
|
|
88
88
|
const G = e.cloneElement(
|
|
89
|
-
|
|
89
|
+
r,
|
|
90
90
|
{
|
|
91
|
-
...
|
|
92
|
-
className:
|
|
93
|
-
"k-table-alt-row":
|
|
94
|
-
"k-focus":
|
|
95
|
-
"k-selected":
|
|
96
|
-
"k-first": !!
|
|
97
|
-
"k-disabled":
|
|
91
|
+
...r.props,
|
|
92
|
+
className: x("k-table-row", {
|
|
93
|
+
"k-table-alt-row": o.index % 2 !== 0,
|
|
94
|
+
"k-focus": o.focused,
|
|
95
|
+
"k-selected": o.selected,
|
|
96
|
+
"k-first": !!I,
|
|
97
|
+
"k-disabled": o.dataItem.disabled
|
|
98
98
|
})
|
|
99
99
|
},
|
|
100
100
|
c
|
|
101
101
|
);
|
|
102
|
-
return t.itemRender ? t.itemRender.call(void 0, G,
|
|
102
|
+
return t.itemRender ? t.itemRender.call(void 0, G, o) : G;
|
|
103
103
|
},
|
|
104
|
-
[
|
|
105
|
-
), n = e.useCallback((
|
|
106
|
-
|
|
107
|
-
...
|
|
104
|
+
[a, t.groupField, t.itemRender, t.data, q]
|
|
105
|
+
), n = e.useCallback((r, o) => {
|
|
106
|
+
r && r.call(void 0, {
|
|
107
|
+
...o,
|
|
108
108
|
target: h.current
|
|
109
109
|
});
|
|
110
|
-
}, []),
|
|
111
|
-
(
|
|
112
|
-
[n,
|
|
113
|
-
),
|
|
114
|
-
(
|
|
115
|
-
...
|
|
116
|
-
mobileMode:
|
|
110
|
+
}, []), Z = e.useCallback(
|
|
111
|
+
(r) => (t.virtual || m(d), n(w, r)),
|
|
112
|
+
[n, w, t.virtual, d]
|
|
113
|
+
), _ = e.useCallback((r) => n(S, r), [S]), ee = e.useCallback((r) => n(F, r), [F]), te = e.useCallback((r) => n(H, r), [H]), re = e.useCallback((r) => n(R, r), [R]), oe = e.useCallback((r) => n(N, r), [N]), ae = e.useCallback(
|
|
114
|
+
(r) => (m(d), n(E, {
|
|
115
|
+
...r,
|
|
116
|
+
mobileMode: r.target.mobileMode
|
|
117
117
|
})),
|
|
118
118
|
[E]
|
|
119
|
-
),
|
|
120
|
-
m(
|
|
119
|
+
), ne = e.useCallback((r) => {
|
|
120
|
+
m(r.group);
|
|
121
|
+
}, []), le = e.useCallback((r) => {
|
|
122
|
+
b.current && (b.current.scrollLeft = r.target.scrollLeft);
|
|
121
123
|
}, []);
|
|
122
124
|
e.useEffect(() => {
|
|
123
|
-
|
|
125
|
+
me();
|
|
124
126
|
}), e.useEffect(() => {
|
|
125
|
-
const
|
|
126
|
-
m(d),
|
|
127
|
+
const r = t.data;
|
|
128
|
+
m(d), r && r.length !== 0 ? B(!0) : B(!1);
|
|
127
129
|
}, [t.data]);
|
|
128
|
-
const
|
|
130
|
+
const se = e.useCallback((r) => /* @__PURE__ */ e.createElement(de, { ...r }), []);
|
|
129
131
|
return /* @__PURE__ */ e.createElement(
|
|
130
|
-
|
|
132
|
+
ge,
|
|
131
133
|
{
|
|
132
|
-
...
|
|
133
|
-
list:
|
|
134
|
+
...D,
|
|
135
|
+
list: se,
|
|
134
136
|
popupSettings: {
|
|
135
137
|
...p,
|
|
136
|
-
popupClass:
|
|
137
|
-
width: p.width ||
|
|
138
|
+
popupClass: x("k-dropdowngrid-popup", p.popupClass),
|
|
139
|
+
width: p.width || X,
|
|
138
140
|
className: p.className
|
|
139
141
|
},
|
|
140
142
|
ref: i,
|
|
141
|
-
header:
|
|
142
|
-
itemRender:
|
|
143
|
+
header: U,
|
|
144
|
+
itemRender: Y,
|
|
143
145
|
groupHeaderItemRender: t.groupHeaderItemRender,
|
|
144
146
|
size: z,
|
|
145
147
|
rounded: O,
|
|
146
|
-
fillMode:
|
|
148
|
+
fillMode: $,
|
|
147
149
|
groupField: t.groupField,
|
|
148
150
|
isMultiColumn: !0,
|
|
149
|
-
onOpen:
|
|
150
|
-
onClose:
|
|
151
|
-
onFocus:
|
|
152
|
-
onBlur:
|
|
153
|
-
onChange:
|
|
151
|
+
onOpen: Z,
|
|
152
|
+
onClose: _,
|
|
153
|
+
onFocus: ee,
|
|
154
|
+
onBlur: te,
|
|
155
|
+
onChange: re,
|
|
154
156
|
onFilterChange: ae,
|
|
155
157
|
onPageChange: oe,
|
|
156
|
-
onGroupScroll:
|
|
157
|
-
|
|
158
|
+
onGroupScroll: ne,
|
|
159
|
+
onListScroll: le,
|
|
160
|
+
className: x("k-dropdowngrid", j),
|
|
158
161
|
required: t.required,
|
|
159
162
|
adaptive: t.adaptive,
|
|
160
163
|
adaptiveFilter: t.adaptiveFilter,
|
|
@@ -162,14 +165,14 @@ const he = (s, g) => s ? typeof s == "number" ? s + "px" : s : g, Ce = pe(), P =
|
|
|
162
165
|
adaptiveSubtitle: t.adaptiveSubtitle,
|
|
163
166
|
footer: t.footer,
|
|
164
167
|
footerClassName: "k-table-footer",
|
|
165
|
-
prefix:
|
|
166
|
-
suffix:
|
|
168
|
+
prefix: J,
|
|
169
|
+
suffix: Q
|
|
167
170
|
}
|
|
168
171
|
);
|
|
169
172
|
}
|
|
170
|
-
),
|
|
171
|
-
...
|
|
172
|
-
columns:
|
|
173
|
+
), ve = {
|
|
174
|
+
...he.propTypes,
|
|
175
|
+
columns: ue.any.isRequired
|
|
173
176
|
}, l = {
|
|
174
177
|
columns: [],
|
|
175
178
|
popupSettings: {},
|
|
@@ -179,8 +182,8 @@ const he = (s, g) => s ? typeof s == "number" ? s + "px" : s : g, Ce = pe(), P =
|
|
|
179
182
|
fillMode: void 0
|
|
180
183
|
};
|
|
181
184
|
P.displayName = "KendoMultiColumnComboBox";
|
|
182
|
-
P.propTypes =
|
|
185
|
+
P.propTypes = ve;
|
|
183
186
|
export {
|
|
184
187
|
P as MultiColumnComboBox,
|
|
185
|
-
|
|
188
|
+
ke as MultiColumnComboBoxPropsContext
|
|
186
189
|
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("./utils.js"),a=["ComboBox","DropDownList","MultiSelect","MultiColumnComboBox","AutoComplete"],d="@progress/kendo-react-dropdowns";function m(n,s){const o=s.jscodeshift,t=o(n.source);return a.forEach(e=>{const c=r.findImportedName(o,t,e,d)||e;t.find(o.JSXOpeningElement,{name:{type:"JSXIdentifier",name:c}}).forEach(i=>{const u=i.node.attributes||[];r.removeAttribute(u,"groupMode")})}),t.toSource()}module.exports=m;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbW9kZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcGRvd25zL2NvZGVtb2RzL3YxNC9ncm91cC1tb2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSSwgRmlsZUluZm8sIEpTQ29kZXNoaWZ0IH0gZnJvbSAnanNjb2Rlc2hpZnQnO1xuaW1wb3J0IHsgZmluZEltcG9ydGVkTmFtZSwgcmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IERST1BET1dOX0NPTVBPTkVOVFMgPSBbJ0NvbWJvQm94JywgJ0Ryb3BEb3duTGlzdCcsICdNdWx0aVNlbGVjdCcsICdNdWx0aUNvbHVtbkNvbWJvQm94JywgJ0F1dG9Db21wbGV0ZSddO1xuY29uc3QgUEFDS0FHRV9TT1VSQ0UgPSAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWRyb3Bkb3ducyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybWVyKGZpbGU6IEZpbGVJbmZvLCBhcGk6IEFQSSkge1xuICAgIGNvbnN0IGo6IEpTQ29kZXNoaWZ0ID0gYXBpLmpzY29kZXNoaWZ0O1xuICAgIGNvbnN0IHJvb3QgPSBqKGZpbGUuc291cmNlKTtcblxuICAgIERST1BET1dOX0NPTVBPTkVOVFMuZm9yRWFjaCgoY29tcG9uZW50TmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhbE5hbWUgPSBmaW5kSW1wb3J0ZWROYW1lKGosIHJvb3QsIGNvbXBvbmVudE5hbWUsIFBBQ0tBR0VfU09VUkNFKSB8fCBjb21wb25lbnROYW1lO1xuXG4gICAgICAgIHJvb3QuZmluZChqLkpTWE9wZW5pbmdFbGVtZW50LCB7XG4gICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdKU1hJZGVudGlmaWVyJywgbmFtZTogbG9jYWxOYW1lIH1cbiAgICAgICAgfSkuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXR0cnMgPSBwYXRoLm5vZGUuYXR0cmlidXRlcyB8fCBbXTtcbiAgICAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRycyBhcyBhbnlbXSwgJ2dyb3VwTW9kZScpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiByb290LnRvU291cmNlKCk7XG59XG4iXSwibmFtZXMiOlsiRFJPUERPV05fQ09NUE9ORU5UUyIsIlBBQ0tBR0VfU09VUkNFIiwidHJhbnNmb3JtZXIiLCJmaWxlIiwiYXBpIiwiaiIsInJvb3QiLCJjb21wb25lbnROYW1lIiwibG9jYWxOYW1lIiwiZmluZEltcG9ydGVkTmFtZSIsInBhdGgiLCJhdHRycyIsInJlbW92ZUF0dHJpYnV0ZSJdLCJtYXBwaW5ncyI6IjJDQUdNQSxFQUFzQixDQUFDLFdBQVksZUFBZ0IsY0FBZSxzQkFBdUIsY0FBYyxFQUN2R0MsRUFBaUIsa0NBRXZCLFNBQXdCQyxFQUFZQyxFQUFnQkMsRUFBVSxDQUMxRCxNQUFNQyxFQUFpQkQsRUFBSSxZQUNyQkUsRUFBT0QsRUFBRUYsRUFBSyxNQUFNLEVBRTFCLE9BQUFILEVBQW9CLFFBQVNPLEdBQWtCLENBQzNDLE1BQU1DLEVBQVlDLEVBQUFBLGlCQUFpQkosRUFBR0MsRUFBTUMsRUFBZU4sQ0FBYyxHQUFLTSxFQUU5RUQsRUFBSyxLQUFLRCxFQUFFLGtCQUFtQixDQUMzQixLQUFNLENBQUUsS0FBTSxnQkFBaUIsS0FBTUcsQ0FBQSxDQUFVLENBQ2xELEVBQUUsUUFBU0UsR0FBUyxDQUNqQixNQUFNQyxFQUFRRCxFQUFLLEtBQUssWUFBYyxDQUFBLEVBQ3RDRSxFQUFBQSxnQkFBZ0JELEVBQWdCLFdBQVcsQ0FDL0MsQ0FBQyxDQUNMLENBQUMsRUFFTUwsRUFBSyxTQUFBLENBQ2hCIn0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./group-mode.js");exports.GroupMode=e;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=(e,n,t,i)=>{if(i==="class"){if(n.size()>0&&n.get(0).node.value.body){const r=n.get(0).node.value.body.body;if(r){const o=e.emptyStatement();o.comments=[e.commentBlock(` ${t} `)],r.unshift(o)}}}else{let r;if(n.get(0).node.declarations&&n.get(0).node.declarations[0].init?r=n.get(0).node.declarations[0].init.body.body:n.get(0).node.body&&(r=n.get(0).node.body.body),r){const o=e.emptyStatement();o.comments=[e.commentBlock(` ${t} `)],r.unshift(o)}}},b=(e,n,t,i)=>{const r=n.find(e.ImportDeclaration,{source:{value:i}});if(r.size()>0){const o=r.get(0).node.specifiers;o.some(s=>s.type==="ImportSpecifier"&&s.imported.name===t)||o.push(e.importSpecifier(e.identifier(t)))}else{const o=e.importDeclaration([e.importSpecifier(e.identifier(t))],e.literal(i));n.get().node.program.body.unshift(o)}},y=(e,n)=>{let t=n.parentPath,i=!1,r=!1;for(;t;){if(e.ClassDeclaration.check(t.node)){i=!0;break}else if(e.FunctionDeclaration.check(t.node)||e.FunctionExpression.check(t.node)||e.ArrowFunctionExpression.check(t.node)){r=!0;break}t=t.parentPath}return{isClassComponent:i,isFunctionalComponent:r,parentNode:t}},x=(e,n)=>{let t=e,i=1;for(;n.has(t);)t=`${e}$${i}`,i++;return t},p=(e,n)=>e.find(t=>t.type==="JSXAttribute"&&t.name.name===n),h=(e,n)=>e.some(t=>t.type==="JSXAttribute"&&t.name.name===n),l=(e,n,t,i)=>{if(n.value&&n.value.type==="JSXExpressionContainer"){const r=n.value.expression;r.type==="ObjectExpression"&&r.properties.push(e.property("init",e.identifier(t),e.identifier(i)))}},u=(e,n,t,i,r)=>{const o=e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(i),e.identifier(r))])));n.push(o)},S=(e,n)=>{const t=e?.findIndex(i=>i.type==="JSXAttribute"&&i.name.name===n);return t!==-1?(e.splice(t,1),!0):!1},A=(e,n,t,i,r)=>{const o=p(n,t);o?l(e,o,i,r):u(e,n,t,i,r)},E=(e,n,t,i)=>e.jsxAttribute(e.jsxIdentifier(n),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(t),e.identifier(i))]))),g=(e,n,t,i)=>{n.type==="ObjectExpression"&&n.properties.push(e.property("init",e.identifier(t),e.identifier(i)))},C=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,[e.identifier(t?`event: ${i}`:"event")],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))]))),v=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression([e.identifier(`(event${t?`: ${i}`:""})`)],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))])))]),D=(e,n,t,i)=>{i?n.node.body.body.push(t):(n.node.body.body||n.node.body).unshift(t)},f=(e,n,t,i)=>{const r=n.find(e.ImportDeclaration,{source:{value:i}});if(r.size()>0){const o=r.find(e.ImportSpecifier,{imported:{name:t}});if(o.size()>0)return o.get(0).node.local.name}return null},I=(e,n,t,i)=>{const r=n.node.body.body.find(o=>o.type==="ClassProperty"&&o.key.name==="state");r&&r.value.type==="ObjectExpression"?r.value.properties.some(a=>a.key.name===t)||r.value.properties.push(e.property("init",e.identifier(t),i)):n.node.body.body.unshift(e.classProperty(e.identifier("state"),e.objectExpression([e.property("init",e.identifier(t),i)])))},F=(e,n)=>e?.some(t=>t.type==="JSXAttribute"&&t.name.name===n)||!1,w=(e,n,t,i,r,o,a)=>{const s=e.variableDeclaration("const",[e.variableDeclarator(e.arrayPattern([e.identifier(t),e.identifier(i)]),e.callExpression(e.identifier(`React.useState${o?`<${a}>`:""}`),[r]))]);n.node.body.body.unshift(s)},k=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},P=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},$=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,t.map(r=>e.identifier(r)),e.blockStatement(i))),B=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression(t.map(r=>e.identifier(r)),e.blockStatement(i)))]),M=(e,n,t,i)=>{const r=f(e,n,t,i);if(r)return r;const o=n.find(e.ImportDeclaration,{source:{value:i}}).filter(d=>d.node.importKind==="type").at(0);if(o.size()>0)return o.get().node.specifiers.push(e.importSpecifier(e.identifier(t))),t;const a=e.importSpecifier(e.identifier(t)),s=e.importDeclaration([a],e.literal(i));s.importKind="type";const c=n.find(e.ImportDeclaration).at(0);return c.size()>0?c.insertBefore(s):n.get().node.program.body.unshift(s),t};exports.addCommentToMethod=m;exports.addEventAttribute=k;exports.addMethodToComponent=D;exports.addNewAttribute=u;exports.addPropertyToObjectExpression=g;exports.addStateAttribute=P;exports.addStateDeclaration=I;exports.addUseStateDeclaration=w;exports.createArrowFunction=B;exports.createArrowFunctionForFunctionalComponent=v;exports.createAttribute=E;exports.createClassMethod=$;exports.createMethodForClassComponent=C;exports.doesAttributeExist=h;exports.ensureAttributeExists=A;exports.ensureImportExists=b;exports.ensureTypeImport=M;exports.findAttribute=p;exports.findImportedName=f;exports.findParentComponent=y;exports.generateUniqueName=x;exports.hasJSXAttribute=F;exports.modifyExistingAttribute=l;exports.removeAttribute=S;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ryb3Bkb3ducy9jb2RlbW9kcy92MTQvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb2xsZWN0aW9uLFxuICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgSlNDb2Rlc2hpZnQsXG4gICAgSlNYQXR0cmlidXRlLFxuICAgIEpTWFNwcmVhZEF0dHJpYnV0ZSxcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uXG59IGZyb20gJ2pzY29kZXNoaWZ0JztcblxuZXhwb3J0IGNvbnN0IGFkZENvbW1lbnRUb01ldGhvZCA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBtZXRob2Q6IENvbGxlY3Rpb248VmFyaWFibGVEZWNsYXJhdGlvbj4gfCBDb2xsZWN0aW9uPEZ1bmN0aW9uRGVjbGFyYXRpb24+LFxuICAgIGNvbW1lbnRUZXh0OiBzdHJpbmcsXG4gICAgcGFyZW50VHlwZTogJ2NsYXNzJyB8ICdmdW5jdGlvbidcbikgPT4ge1xuICAgIGlmIChwYXJlbnRUeXBlID09PSAnY2xhc3MnKSB7XG4gICAgICAgIGlmIChtZXRob2Quc2l6ZSgpID4gMCAmJiBtZXRob2QuZ2V0KDApLm5vZGUudmFsdWUuYm9keSkge1xuICAgICAgICAgICAgY29uc3QgbWV0aG9kQm9keSA9IG1ldGhvZC5nZXQoMCkubm9kZS52YWx1ZS5ib2R5LmJvZHk7XG5cbiAgICAgICAgICAgIGlmIChtZXRob2RCb2R5KSB7XG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgY29tbWVudCBhbmQgYXR0YWNoIGl0IHRvIGFuIGVtcHR5IHN0YXRlbWVudFxuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU3RhdGVtZW50ID0gai5lbXB0eVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyU3RhdGVtZW50LmNvbW1lbnRzID0gW2ouY29tbWVudEJsb2NrKGAgJHtjb21tZW50VGV4dH0gYCldO1xuXG4gICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBwbGFjZWhvbGRlciBzdGF0ZW1lbnQgd2l0aCB0aGUgY29tbWVudCB0byB0aGUgbWV0aG9kIGJvZHlcbiAgICAgICAgICAgICAgICBtZXRob2RCb2R5LnVuc2hpZnQocGxhY2Vob2xkZXJTdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1ldGhvZEJvZHk7XG5cbiAgICAgICAgaWYgKG1ldGhvZC5nZXQoMCkubm9kZS5kZWNsYXJhdGlvbnMgJiYgbWV0aG9kLmdldCgwKS5ub2RlLmRlY2xhcmF0aW9uc1swXS5pbml0KSB7XG4gICAgICAgICAgICBtZXRob2RCb2R5ID0gbWV0aG9kLmdldCgwKS5ub2RlLmRlY2xhcmF0aW9uc1swXS5pbml0LmJvZHkuYm9keTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QuZ2V0KDApLm5vZGUuYm9keSkge1xuICAgICAgICAgICAgbWV0aG9kQm9keSA9IG1ldGhvZC5nZXQoMCkubm9kZS5ib2R5LmJvZHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWV0aG9kQm9keSkge1xuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJTdGF0ZW1lbnQgPSBqLmVtcHR5U3RhdGVtZW50KCk7XG4gICAgICAgICAgICBwbGFjZWhvbGRlclN0YXRlbWVudC5jb21tZW50cyA9IFtqLmNvbW1lbnRCbG9jayhgICR7Y29tbWVudFRleHR9IGApXTtcblxuICAgICAgICAgICAgbWV0aG9kQm9keS51bnNoaWZ0KHBsYWNlaG9sZGVyU3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBlbnN1cmVJbXBvcnRFeGlzdHMgPSAoajogSlNDb2Rlc2hpZnQsIHJvb3Q6IENvbGxlY3Rpb24sIGltcG9ydE5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbXBvcnREZWNsYXJhdGlvbiA9IHJvb3QuZmluZChqLkltcG9ydERlY2xhcmF0aW9uLCB7XG4gICAgICAgIHNvdXJjZTogeyB2YWx1ZTogc291cmNlIH1cbiAgICB9KTtcblxuICAgIGlmIChpbXBvcnREZWNsYXJhdGlvbi5zaXplKCkgPiAwKSB7XG4gICAgICAgIC8vIElmIHRoZSBpbXBvcnQgc3RhdGVtZW50IGV4aXN0cywgYWRkIHRoZSBuZXcgaW1wb3J0IG5hbWUgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgICBjb25zdCBzcGVjaWZpZXJzID0gaW1wb3J0RGVjbGFyYXRpb24uZ2V0KDApLm5vZGUuc3BlY2lmaWVycztcbiAgICAgICAgY29uc3QgYWxyZWFkeUltcG9ydGVkID0gc3BlY2lmaWVycy5zb21lKFxuICAgICAgICAgICAgKHNwZWNpZmllcjogYW55KSA9PiBzcGVjaWZpZXIudHlwZSA9PT0gJ0ltcG9ydFNwZWNpZmllcicgJiYgc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUgPT09IGltcG9ydE5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWFscmVhZHlJbXBvcnRlZCkge1xuICAgICAgICAgICAgc3BlY2lmaWVycy5wdXNoKGouaW1wb3J0U3BlY2lmaWVyKGouaWRlbnRpZmllcihpbXBvcnROYW1lKSkpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZG9lc24ndCBleGlzdCwgY3JlYXRlIGEgbmV3IG9uZVxuICAgICAgICBjb25zdCBuZXdJbXBvcnQgPSBqLmltcG9ydERlY2xhcmF0aW9uKFtqLmltcG9ydFNwZWNpZmllcihqLmlkZW50aWZpZXIoaW1wb3J0TmFtZSkpXSwgai5saXRlcmFsKHNvdXJjZSkpO1xuICAgICAgICByb290LmdldCgpLm5vZGUucHJvZ3JhbS5ib2R5LnVuc2hpZnQobmV3SW1wb3J0KTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFBhcmVudENvbXBvbmVudCA9IChqOiBKU0NvZGVzaGlmdCwgcGF0aDogYW55KSA9PiB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBwYXRoLnBhcmVudFBhdGg7XG4gICAgbGV0IGlzQ2xhc3NDb21wb25lbnQgPSBmYWxzZTtcbiAgICBsZXQgaXNGdW5jdGlvbmFsQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgICB3aGlsZSAocGFyZW50Tm9kZSkge1xuICAgICAgICBpZiAoai5DbGFzc0RlY2xhcmF0aW9uLmNoZWNrKHBhcmVudE5vZGUubm9kZSkpIHtcbiAgICAgICAgICAgIGlzQ2xhc3NDb21wb25lbnQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBqLkZ1bmN0aW9uRGVjbGFyYXRpb24uY2hlY2socGFyZW50Tm9kZS5ub2RlKSB8fFxuICAgICAgICAgICAgai5GdW5jdGlvbkV4cHJlc3Npb24uY2hlY2socGFyZW50Tm9kZS5ub2RlKSB8fFxuICAgICAgICAgICAgai5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbi5jaGVjayhwYXJlbnROb2RlLm5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaXNGdW5jdGlvbmFsQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudFBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgaXNDbGFzc0NvbXBvbmVudCwgaXNGdW5jdGlvbmFsQ29tcG9uZW50LCBwYXJlbnROb2RlIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVVbmlxdWVOYW1lID0gKGJhc2VOYW1lOiBzdHJpbmcsIGV4aXN0aW5nTmFtZXM6IFNldDxzdHJpbmc+KTogc3RyaW5nID0+IHtcbiAgICBsZXQgbmFtZSA9IGJhc2VOYW1lO1xuICAgIGxldCBjb3VudGVyID0gMTtcbiAgICB3aGlsZSAoZXhpc3RpbmdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmFtZSA9IGAke2Jhc2VOYW1lfSQke2NvdW50ZXJ9YDtcbiAgICAgICAgY291bnRlcisrO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kQXR0cmlidXRlID0gKGF0dHJpYnV0ZXM6IGFueVtdLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYXR0cmlidXRlcy5maW5kKChhdHRyKSA9PiBhdHRyLnR5cGUgPT09ICdKU1hBdHRyaWJ1dGUnICYmIGF0dHIubmFtZS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkb2VzQXR0cmlidXRlRXhpc3QgPSAoYXR0cmlidXRlczogYW55W10sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhdHRyaWJ1dGVzLnNvbWUoKGF0dHIpID0+IGF0dHIudHlwZSA9PT0gJ0pTWEF0dHJpYnV0ZScgJiYgYXR0ci5uYW1lLm5hbWUgPT09IGF0dHJpYnV0ZU5hbWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vZGlmeUV4aXN0aW5nQXR0cmlidXRlID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIGV4aXN0aW5nQXR0cmlidXRlOiBhbnksXG4gICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlWYWx1ZTogc3RyaW5nXG4pID0+IHtcbiAgICBpZiAoZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUgJiYgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUudHlwZSA9PT0gJ0pTWEV4cHJlc3Npb25Db250YWluZXInKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZS5leHByZXNzaW9uO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbi50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb24ucHJvcGVydGllcy5wdXNoKGoucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgai5pZGVudGlmaWVyKHByb3BlcnR5VmFsdWUpKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTmV3QXR0cmlidXRlID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIGF0dHJpYnV0ZXM6IGFueVtdLFxuICAgIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eVZhbHVlOiBzdHJpbmdcbikgPT4ge1xuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZSA9IGouanN4QXR0cmlidXRlKFxuICAgICAgICBqLmpzeElkZW50aWZpZXIoYXR0cmlidXRlTmFtZSksXG4gICAgICAgIGouanN4RXhwcmVzc2lvbkNvbnRhaW5lcihcbiAgICAgICAgICAgIGoub2JqZWN0RXhwcmVzc2lvbihbai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBqLmlkZW50aWZpZXIocHJvcGVydHlWYWx1ZSkpXSlcbiAgICAgICAgKVxuICAgICk7XG4gICAgYXR0cmlidXRlcy5wdXNoKG5ld0F0dHJpYnV0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQXR0cmlidXRlID0gKGF0dHJpYnV0ZXM6IGFueVtdLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVJbmRleCA9IGF0dHJpYnV0ZXM/LmZpbmRJbmRleChcbiAgICAgICAgKGF0dHIpID0+IGF0dHIudHlwZSA9PT0gJ0pTWEF0dHJpYnV0ZScgJiYgYXR0ci5uYW1lLm5hbWUgPT09IGF0dHJpYnV0ZU5hbWVcbiAgICApO1xuXG4gICAgaWYgKGF0dHJpYnV0ZUluZGV4ICE9PSAtMSkge1xuICAgICAgICBhdHRyaWJ1dGVzLnNwbGljZShhdHRyaWJ1dGVJbmRleCwgMSk7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBJbmRpY2F0ZXMgdGhlIGF0dHJpYnV0ZSB3YXMgZm91bmQgYW5kIHJlbW92ZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIEluZGljYXRlcyB0aGUgYXR0cmlidXRlIHdhcyBub3QgZm91bmRcbn07XG5cbmV4cG9ydCBjb25zdCBlbnN1cmVBdHRyaWJ1dGVFeGlzdHMgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgYXR0cmlidXRlczogYW55W10sXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdBdHRyaWJ1dGUgPSBmaW5kQXR0cmlidXRlKGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpO1xuXG4gICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlKSB7XG4gICAgICAgIG1vZGlmeUV4aXN0aW5nQXR0cmlidXRlKGosIGV4aXN0aW5nQXR0cmlidXRlLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZE5ld0F0dHJpYnV0ZShqLCBhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBdHRyaWJ1dGUgPSAoajogSlNDb2Rlc2hpZnQsIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBqLmpzeEF0dHJpYnV0ZShcbiAgICAgICAgai5qc3hJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUpLFxuICAgICAgICBqLmpzeEV4cHJlc3Npb25Db250YWluZXIoXG4gICAgICAgICAgICBqLm9iamVjdEV4cHJlc3Npb24oW2oucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgai5pZGVudGlmaWVyKHByb3BlcnR5VmFsdWUpKV0pXG4gICAgICAgIClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFByb3BlcnR5VG9PYmplY3RFeHByZXNzaW9uID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIGV4cHJlc3Npb246IGFueSxcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eVZhbHVlOiBzdHJpbmdcbikgPT4ge1xuICAgIGlmIChleHByZXNzaW9uLnR5cGUgPT09ICdPYmplY3RFeHByZXNzaW9uJykge1xuICAgICAgICBleHByZXNzaW9uLnByb3BlcnRpZXMucHVzaChqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGouaWRlbnRpZmllcihwcm9wZXJ0eVZhbHVlKSkpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNZXRob2RGb3JDbGFzc0NvbXBvbmVudCA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgaXNUeXBlU2NyaXB0OiBib29sZWFuLFxuICAgIHR5cGVOYW1lOiBzdHJpbmdcbikgPT4ge1xuICAgIHJldHVybiBqLm1ldGhvZERlZmluaXRpb24oXG4gICAgICAgICdtZXRob2QnLFxuICAgICAgICBqLmlkZW50aWZpZXIobWV0aG9kTmFtZSksXG4gICAgICAgIGouZnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIFtqLmlkZW50aWZpZXIoaXNUeXBlU2NyaXB0ID8gYGV2ZW50OiAke3R5cGVOYW1lfWAgOiAnZXZlbnQnKV0sXG4gICAgICAgICAgICBqLmJsb2NrU3RhdGVtZW50KFtqLnJldHVyblN0YXRlbWVudChqLmpzeEZyYWdtZW50KGouanN4T3BlbmluZ0ZyYWdtZW50KCksIGouanN4Q2xvc2luZ0ZyYWdtZW50KCksIFtdKSldKVxuICAgICAgICApXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBcnJvd0Z1bmN0aW9uRm9yRnVuY3Rpb25hbENvbXBvbmVudCA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICBpc1R5cGVTY3JpcHQ6IGJvb2xlYW4sXG4gICAgdHlwZU5hbWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgcmV0dXJuIGoudmFyaWFibGVEZWNsYXJhdGlvbignY29uc3QnLCBbXG4gICAgICAgIGoudmFyaWFibGVEZWNsYXJhdG9yKFxuICAgICAgICAgICAgai5pZGVudGlmaWVyKGZ1bmN0aW9uTmFtZSksXG4gICAgICAgICAgICBqLmFycm93RnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgIFtqLmlkZW50aWZpZXIoYChldmVudCR7aXNUeXBlU2NyaXB0ID8gYDogJHt0eXBlTmFtZX1gIDogJyd9KWApXSxcbiAgICAgICAgICAgICAgICBqLmJsb2NrU3RhdGVtZW50KFtqLnJldHVyblN0YXRlbWVudChqLmpzeEZyYWdtZW50KGouanN4T3BlbmluZ0ZyYWdtZW50KCksIGouanN4Q2xvc2luZ0ZyYWdtZW50KCksIFtdKSldKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgXSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTWV0aG9kVG9Db21wb25lbnQgPSAoajogSlNDb2Rlc2hpZnQsIHBhcmVudE5vZGU6IGFueSwgbWV0aG9kOiBhbnksIGlzQ2xhc3NDb21wb25lbnQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNDbGFzc0NvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBjbGFzc0JvZHkgPSBwYXJlbnROb2RlLm5vZGUuYm9keS5ib2R5O1xuICAgICAgICBjbGFzc0JvZHkucHVzaChtZXRob2QpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEJvZHkgPSBwYXJlbnROb2RlLm5vZGUuYm9keS5ib2R5IHx8IHBhcmVudE5vZGUubm9kZS5ib2R5O1xuICAgICAgICBwYXJlbnRCb2R5LnVuc2hpZnQobWV0aG9kKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEltcG9ydGVkTmFtZSA9IChqOiBKU0NvZGVzaGlmdCwgcm9vdDogYW55LCBvcmlnaW5hbE5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICBjb25zdCBpbXBvcnREZWNsYXJhdGlvbiA9IHJvb3QuZmluZChqLkltcG9ydERlY2xhcmF0aW9uLCB7XG4gICAgICAgIHNvdXJjZTogeyB2YWx1ZTogc291cmNlIH1cbiAgICB9KTtcblxuICAgIGlmIChpbXBvcnREZWNsYXJhdGlvbi5zaXplKCkgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwZWNpZmllciA9IGltcG9ydERlY2xhcmF0aW9uLmZpbmQoai5JbXBvcnRTcGVjaWZpZXIsIHtcbiAgICAgICAgICAgIGltcG9ydGVkOiB7IG5hbWU6IG9yaWdpbmFsTmFtZSB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzcGVjaWZpZXIuc2l6ZSgpID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbG9jYWxOYW1lID0gc3BlY2lmaWVyLmdldCgwKS5ub2RlLmxvY2FsLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxOYW1lOyAvLyBSZXR1cm4gdGhlIHNoYWRvdyBuYW1lIG9yIHRoZSBvcmlnaW5hbCBuYW1lXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgdGhlIGltcG9ydCBpcyBub3QgZm91bmRcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTdGF0ZURlY2xhcmF0aW9uID0gKGo6IEpTQ29kZXNoaWZ0LCBwYXJlbnROb2RlOiBhbnksIHN0YXRlTmFtZTogc3RyaW5nLCBpbml0aWFsVmFsdWU6IGFueSkgPT4ge1xuICAgIGNvbnN0IHN0YXRlUHJvcGVydHkgPSBwYXJlbnROb2RlLm5vZGUuYm9keS5ib2R5LmZpbmQoXG4gICAgICAgIChub2RlOiBhbnkpID0+IG5vZGUudHlwZSA9PT0gJ0NsYXNzUHJvcGVydHknICYmIG5vZGUua2V5Lm5hbWUgPT09ICdzdGF0ZSdcbiAgICApO1xuXG4gICAgaWYgKHN0YXRlUHJvcGVydHkgJiYgc3RhdGVQcm9wZXJ0eS52YWx1ZS50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgY29uc3QgaGFzU3RhdGUgPSBzdGF0ZVByb3BlcnR5LnZhbHVlLnByb3BlcnRpZXMuc29tZSgocHJvcDogYW55KSA9PiBwcm9wLmtleS5uYW1lID09PSBzdGF0ZU5hbWUpO1xuICAgICAgICBpZiAoIWhhc1N0YXRlKSB7XG4gICAgICAgICAgICBzdGF0ZVByb3BlcnR5LnZhbHVlLnByb3BlcnRpZXMucHVzaChqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHN0YXRlTmFtZSksIGluaXRpYWxWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50Tm9kZS5ub2RlLmJvZHkuYm9keS51bnNoaWZ0KFxuICAgICAgICAgICAgai5jbGFzc1Byb3BlcnR5KFxuICAgICAgICAgICAgICAgIGouaWRlbnRpZmllcignc3RhdGUnKSxcbiAgICAgICAgICAgICAgICBqLm9iamVjdEV4cHJlc3Npb24oW2oucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIoc3RhdGVOYW1lKSwgaW5pdGlhbFZhbHVlKV0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGhhc0pTWEF0dHJpYnV0ZSA9IChcbiAgICBhdHRyaWJ1dGVzOiAoSlNYQXR0cmlidXRlIHwgSlNYU3ByZWFkQXR0cmlidXRlKVtdIHwgdW5kZWZpbmVkLFxuICAgIGF0dHJpYnV0ZU5hbWU6IHN0cmluZ1xuKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM/LnNvbWUoKGF0dHIpID0+IGF0dHIudHlwZSA9PT0gJ0pTWEF0dHJpYnV0ZScgJiYgYXR0ci5uYW1lLm5hbWUgPT09IGF0dHJpYnV0ZU5hbWUpIHx8IGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFVzZVN0YXRlRGVjbGFyYXRpb24gPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgcGFyZW50Tm9kZTogYW55LFxuICAgIHN0YXRlTmFtZTogc3RyaW5nLFxuICAgIHNldFN0YXRlTmFtZTogc3RyaW5nLFxuICAgIGluaXRpYWxWYWx1ZTogYW55LFxuICAgIGlzVHlwZVNjcmlwdDogYm9vbGVhbixcbiAgICB0eXBlTmFtZTogc3RyaW5nXG4pID0+IHtcbiAgICBjb25zdCB1c2VTdGF0ZURlY2xhcmF0aW9uID0gai52YXJpYWJsZURlY2xhcmF0aW9uKCdjb25zdCcsIFtcbiAgICAgICAgai52YXJpYWJsZURlY2xhcmF0b3IoXG4gICAgICAgICAgICBqLmFycmF5UGF0dGVybihbai5pZGVudGlmaWVyKHN0YXRlTmFtZSksIGouaWRlbnRpZmllcihzZXRTdGF0ZU5hbWUpXSksXG4gICAgICAgICAgICBqLmNhbGxFeHByZXNzaW9uKGouaWRlbnRpZmllcihgUmVhY3QudXNlU3RhdGUke2lzVHlwZVNjcmlwdCA/IGA8JHt0eXBlTmFtZX0+YCA6ICcnfWApLCBbaW5pdGlhbFZhbHVlXSlcbiAgICAgICAgKVxuICAgIF0pO1xuICAgIHBhcmVudE5vZGUubm9kZS5ib2R5LmJvZHkudW5zaGlmdCh1c2VTdGF0ZURlY2xhcmF0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRFdmVudEF0dHJpYnV0ZSA9IChqOiBKU0NvZGVzaGlmdCwgYXR0cmlidXRlczogYW55W10sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgaGFuZGxlck5hbWU6IHN0cmluZykgPT4ge1xuICAgIGF0dHJpYnV0ZXMucHVzaChcbiAgICAgICAgai5qc3hBdHRyaWJ1dGUoai5qc3hJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUpLCBqLmpzeEV4cHJlc3Npb25Db250YWluZXIoai5pZGVudGlmaWVyKGhhbmRsZXJOYW1lKSkpXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTdGF0ZUF0dHJpYnV0ZSA9IChqOiBKU0NvZGVzaGlmdCwgYXR0cmlidXRlczogYW55W10sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgc3RhdGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyaWJ1dGVzLnB1c2goai5qc3hBdHRyaWJ1dGUoai5qc3hJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUpLCBqLmpzeEV4cHJlc3Npb25Db250YWluZXIoai5pZGVudGlmaWVyKHN0YXRlTmFtZSkpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NNZXRob2QgPSAoajogSlNDb2Rlc2hpZnQsIG1ldGhvZE5hbWU6IHN0cmluZywgcGFyYW1zOiBzdHJpbmdbXSwgYm9keVN0YXRlbWVudHM6IGFueVtdKSA9PiB7XG4gICAgcmV0dXJuIGoubWV0aG9kRGVmaW5pdGlvbihcbiAgICAgICAgJ21ldGhvZCcsXG4gICAgICAgIGouaWRlbnRpZmllcihtZXRob2ROYW1lKSxcbiAgICAgICAgai5mdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgcGFyYW1zLm1hcCgocGFyYW0pID0+IGouaWRlbnRpZmllcihwYXJhbSkpLFxuICAgICAgICAgICAgai5ibG9ja1N0YXRlbWVudChib2R5U3RhdGVtZW50cylcbiAgICAgICAgKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXJyb3dGdW5jdGlvbiA9IChqOiBKU0NvZGVzaGlmdCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIHBhcmFtczogc3RyaW5nW10sIGJvZHlTdGF0ZW1lbnRzOiBhbnlbXSkgPT4ge1xuICAgIHJldHVybiBqLnZhcmlhYmxlRGVjbGFyYXRpb24oJ2NvbnN0JywgW1xuICAgICAgICBqLnZhcmlhYmxlRGVjbGFyYXRvcihcbiAgICAgICAgICAgIGouaWRlbnRpZmllcihmdW5jdGlvbk5hbWUpLFxuICAgICAgICAgICAgai5hcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICBwYXJhbXMubWFwKChwYXJhbSkgPT4gai5pZGVudGlmaWVyKHBhcmFtKSksXG4gICAgICAgICAgICAgICAgai5ibG9ja1N0YXRlbWVudChib2R5U3RhdGVtZW50cylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuc3VyZVR5cGVJbXBvcnQgPSAoajogSlNDb2Rlc2hpZnQsIHJvb3Q6IGFueSwgdHlwZU5hbWU6IHN0cmluZywgcGtnOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nTG9jYWwgPSBmaW5kSW1wb3J0ZWROYW1lKGosIHJvb3QsIHR5cGVOYW1lLCBwa2cpO1xuICAgIGlmIChleGlzdGluZ0xvY2FsKSB7IHJldHVybiBleGlzdGluZ0xvY2FsOyB9XG5cbiAgICAvLyBUcnkgdG8gYXBwZW5kIHRvIGFuIGV4aXN0aW5nIHR5cGUtb25seSBpbXBvcnQgZnJvbSB0aGUgc2FtZSBwa2dcbiAgICBjb25zdCB0eXBlT25seUltcG9ydDogQ29sbGVjdGlvbjxhbnk+ID0gcm9vdC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24sIHtcbiAgICAgIHNvdXJjZTogeyB2YWx1ZTogcGtnIH1cbiAgICB9KS5maWx0ZXIoKHA6IGFueSkgPT4gKHAubm9kZSBhcyBhbnkpLmltcG9ydEtpbmQgPT09ICd0eXBlJykuYXQoMCk7XG5cbiAgICBpZiAodHlwZU9ubHlJbXBvcnQuc2l6ZSgpID4gMCkge1xuICAgICAgY29uc3QgZGVjbCA9IHR5cGVPbmx5SW1wb3J0LmdldCgpLm5vZGU7XG4gICAgICAoZGVjbC5zcGVjaWZpZXJzIGFzIGFueVtdKS5wdXNoKGouaW1wb3J0U3BlY2lmaWVyKGouaWRlbnRpZmllcih0eXBlTmFtZSkpKTtcbiAgICAgIHJldHVybiB0eXBlTmFtZTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGNyZWF0ZSBhIG5ldyB0eXBlLW9ubHkgaW1wb3J0XG4gICAgY29uc3Qgc3BlYyA9IGouaW1wb3J0U3BlY2lmaWVyKGouaWRlbnRpZmllcih0eXBlTmFtZSkpO1xuICAgIGNvbnN0IHR5cGVEZWNsID0gai5pbXBvcnREZWNsYXJhdGlvbihbc3BlY10sIGoubGl0ZXJhbChwa2cpKTtcbiAgICAodHlwZURlY2wgYXMgYW55KS5pbXBvcnRLaW5kID0gJ3R5cGUnO1xuICAgIGNvbnN0IGZpcnN0SW1wb3J0ID0gcm9vdC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24pLmF0KDApO1xuICAgIGlmIChmaXJzdEltcG9ydC5zaXplKCkgPiAwKSB7XG4gICAgICBmaXJzdEltcG9ydC5pbnNlcnRCZWZvcmUodHlwZURlY2wpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290LmdldCgpLm5vZGUucHJvZ3JhbS5ib2R5LnVuc2hpZnQodHlwZURlY2wpO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZU5hbWU7XG4gIH07XG4iXSwibmFtZXMiOlsiYWRkQ29tbWVudFRvTWV0aG9kIiwiaiIsIm1ldGhvZCIsImNvbW1lbnRUZXh0IiwicGFyZW50VHlwZSIsIm1ldGhvZEJvZHkiLCJwbGFjZWhvbGRlclN0YXRlbWVudCIsImVuc3VyZUltcG9ydEV4aXN0cyIsInJvb3QiLCJpbXBvcnROYW1lIiwic291cmNlIiwiaW1wb3J0RGVjbGFyYXRpb24iLCJzcGVjaWZpZXJzIiwic3BlY2lmaWVyIiwibmV3SW1wb3J0IiwiZmluZFBhcmVudENvbXBvbmVudCIsInBhdGgiLCJwYXJlbnROb2RlIiwiaXNDbGFzc0NvbXBvbmVudCIsImlzRnVuY3Rpb25hbENvbXBvbmVudCIsImdlbmVyYXRlVW5pcXVlTmFtZSIsImJhc2VOYW1lIiwiZXhpc3RpbmdOYW1lcyIsIm5hbWUiLCJjb3VudGVyIiwiZmluZEF0dHJpYnV0ZSIsImF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0ciIsImRvZXNBdHRyaWJ1dGVFeGlzdCIsIm1vZGlmeUV4aXN0aW5nQXR0cmlidXRlIiwiZXhpc3RpbmdBdHRyaWJ1dGUiLCJwcm9wZXJ0eU5hbWUiLCJwcm9wZXJ0eVZhbHVlIiwiZXhwcmVzc2lvbiIsImFkZE5ld0F0dHJpYnV0ZSIsIm5ld0F0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImF0dHJpYnV0ZUluZGV4IiwiZW5zdXJlQXR0cmlidXRlRXhpc3RzIiwiY3JlYXRlQXR0cmlidXRlIiwiYWRkUHJvcGVydHlUb09iamVjdEV4cHJlc3Npb24iLCJjcmVhdGVNZXRob2RGb3JDbGFzc0NvbXBvbmVudCIsIm1ldGhvZE5hbWUiLCJpc1R5cGVTY3JpcHQiLCJ0eXBlTmFtZSIsImNyZWF0ZUFycm93RnVuY3Rpb25Gb3JGdW5jdGlvbmFsQ29tcG9uZW50IiwiZnVuY3Rpb25OYW1lIiwiYWRkTWV0aG9kVG9Db21wb25lbnQiLCJmaW5kSW1wb3J0ZWROYW1lIiwib3JpZ2luYWxOYW1lIiwiYWRkU3RhdGVEZWNsYXJhdGlvbiIsInN0YXRlTmFtZSIsImluaXRpYWxWYWx1ZSIsInN0YXRlUHJvcGVydHkiLCJub2RlIiwicHJvcCIsImhhc0pTWEF0dHJpYnV0ZSIsImFkZFVzZVN0YXRlRGVjbGFyYXRpb24iLCJzZXRTdGF0ZU5hbWUiLCJ1c2VTdGF0ZURlY2xhcmF0aW9uIiwiYWRkRXZlbnRBdHRyaWJ1dGUiLCJoYW5kbGVyTmFtZSIsImFkZFN0YXRlQXR0cmlidXRlIiwiY3JlYXRlQ2xhc3NNZXRob2QiLCJwYXJhbXMiLCJib2R5U3RhdGVtZW50cyIsInBhcmFtIiwiY3JlYXRlQXJyb3dGdW5jdGlvbiIsImVuc3VyZVR5cGVJbXBvcnQiLCJwa2ciLCJleGlzdGluZ0xvY2FsIiwidHlwZU9ubHlJbXBvcnQiLCJwIiwic3BlYyIsInR5cGVEZWNsIiwiZmlyc3RJbXBvcnQiXSwibWFwcGluZ3MiOiJnRkFTTyxNQUFNQSxFQUFxQixDQUM5QkMsRUFDQUMsRUFDQUMsRUFDQUMsSUFDQyxDQUNELEdBQUlBLElBQWUsU0FDZixHQUFJRixFQUFPLE9BQVMsR0FBS0EsRUFBTyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sS0FBTSxDQUNwRCxNQUFNRyxFQUFhSCxFQUFPLElBQUksQ0FB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
|