@syncfusion/ej2-multicolumn-combobox 30.1.39 → 30.2.4
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/dist/ej2-multicolumn-combobox.umd.min.js +2 -2
- package/dist/ej2-multicolumn-combobox.umd.min.js.map +1 -1
- package/dist/es6/ej2-multicolumn-combobox.es2015.js +4 -7
- package/dist/es6/ej2-multicolumn-combobox.es2015.js.map +1 -1
- package/dist/es6/ej2-multicolumn-combobox.es5.js +4 -7
- package/dist/es6/ej2-multicolumn-combobox.es5.js.map +1 -1
- package/dist/global/ej2-multicolumn-combobox.min.js +2 -2
- package/dist/global/ej2-multicolumn-combobox.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +3 -3
- package/src/multicolumn-combobox/multi-column-combo-box.js +4 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, getValue } from '@syncfusion/ej2-base';\nimport { ChildProperty, prepend, Collection, getUniqueID, Complex, isNullOrUndefined as isNOU, select, L10n, Browser } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass, removeClass, Event, Animation } from '@syncfusion/ej2-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Grid, Resize, VirtualScroll, Group as GridGroup, Edit, Sort } from '@syncfusion/ej2-grids';\nvar DROPDOWNICON = 'e-input-group-icon e-multicolumn-list-icon e-icons';\nvar CONTENT = 'e-popup-content';\nvar ICONANIMATION = 'e-icon-anim';\nvar NODATA = 'e-nodata';\nvar DISABLED = 'e-disabled';\nvar INPUTFOCUS = 'e-input-focus';\nvar MULTICOLUMNLIST = 'e-multicolumn-list';\nvar HIDDENELEMENT = 'e-multicolumn-list-hidden';\nvar MULTICOLUMNGRID = 'e-multicolumn-grid';\nvar MultiColumnGrid = /** @class */ (function () {\n function MultiColumnGrid() {\n }\n /**\n * Injecting required modules for component.\n *\n * @returns {void}\n * @private\n */\n MultiColumnGrid.prototype.InjectModules = function () {\n Grid.Inject(VirtualScroll, GridGroup, Edit, Sort, Resize);\n };\n return MultiColumnGrid;\n}());\nexport { MultiColumnGrid };\n/**\n * Defines the filter type.\n */\nexport var FilterType;\n(function (FilterType) {\n /**\n * Checks whether a value begins with the specified value.\n */\n FilterType[\"StartsWith\"] = \"StartsWith\";\n /**\n * Checks whether a value ends with specified value.\n */\n FilterType[\"EndsWith\"] = \"EndsWith\";\n /**\n * Checks whether a value contains with specified value.\n */\n FilterType[\"Contains\"] = \"Contains\";\n})(FilterType || (FilterType = {}));\n/**\n * Specifies the sortOrder to sort the data source.\n */\nexport var SortOrder;\n(function (SortOrder) {\n /**\n * The datasource is not sorting. Default value is None.\n */\n SortOrder[\"None\"] = \"None\";\n /**\n * The datasource is sorting with ascending order.\n */\n SortOrder[\"Ascending\"] = \"Ascending\";\n /**\n * The data source is sorting with descending order.\n */\n SortOrder[\"Descending\"] = \"Descending\";\n})(SortOrder || (SortOrder = {}));\n/**\n * Specifies the type of sorting to be applied for the columns.\n */\nexport var SortType;\n(function (SortType) {\n /**\n * Allow sorting only one column\n */\n SortType[\"OneColumn\"] = \"OneColumn\";\n /**\n * Allow sorting multiple columns\n */\n SortType[\"MultipleColumns\"] = \"MultipleColumns\";\n})(SortType || (SortType = {}));\n/**\n * Specifies the type of wrap mode to be applied for the grid cells.\n */\nexport var WrapMode;\n(function (WrapMode) {\n /**\n * Specifies that both header and content text wrapping are enabled.\n */\n WrapMode[\"Both\"] = \"Both\";\n /**\n * Specifies that only content text wrapping is enabled.\n */\n WrapMode[\"Content\"] = \"Content\";\n /**\n * Specifies that only header text wrapping is enabled.\n */\n WrapMode[\"Header\"] = \"Header\";\n})(WrapMode || (WrapMode = {}));\n/**\n * The fields property maps the columns of the data table and binds the data to the component.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies the number of columns and its respective fields to be displayed in the dropdown popup.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"displayAsCheckBox\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Specifies the configuration of the columns in the popup content.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property('Default')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(WrapMode.Both)\n ], GridSettings.prototype, \"textWrapMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n/**\n * The `MultiColumnComboBox` allows the user to search and select values from a list. It provides a list of options that can be selected using a filter input.\n * The selected value will be displayed in the input element.\n *\n * ```html\n * <input type='text' id='multi-column'></input>\n * ```\n * ```typescript\n * let multiColObj: MultiColumnComboBox = new MultiColumnComboBox();\n * multiColObj.appendTo('#multi-column');\n * ```\n */\nvar MultiColumnComboBox = /** @class */ (function (_super) {\n __extends(MultiColumnComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {MultiColumnComboBoxModel} options - Specifies the MultiColumnComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiColumnComboBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.gridInject = new MultiColumnGrid();\n _this.isShowSpinner = true;\n _this.gridInject.InjectModules();\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n MultiColumnComboBox.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveUp: 'uparrow'\n };\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n this.persistData();\n };\n MultiColumnComboBox.prototype.getDirective = function () {\n return 'EJS-MULTICOLUMNCOMBOBOX';\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n MultiColumnComboBox.prototype.getModuleName = function () {\n return 'multicolumncombobox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n MultiColumnComboBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n MultiColumnComboBox.prototype.persistData = function () {\n if (this.enablePersistence) {\n this.element.id += '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n MultiColumnComboBox.prototype.render = function () {\n this.renderInput();\n if (this.gridData == null) {\n this.setGridData(this.dataSource);\n }\n this.renderGrid();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.appendChild(this.gridEle);\n this.setHTMLAttributes();\n this.renderPopup();\n this.wireEvents();\n };\n MultiColumnComboBox.prototype.setGridData = function (dataSource, query) {\n var _this = this;\n this.trigger('actionBegin', { cancel: false, query: query }, function (args) {\n if (!args.cancel) {\n if (dataSource instanceof DataManager) {\n if (_this.isShowSpinner) {\n _this.showHideSpinner(true);\n }\n dataSource.executeQuery(_this.getQuery(query)).then(function (e) {\n _this.gridData = e.result;\n _this.trigger('actionComplete', e, function (e) {\n _this.showHideSpinner(false);\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }).catch(function (e) {\n _this.trigger('actionFailure', e, null);\n });\n }\n else {\n var dataManager = new DataManager(dataSource);\n var listItems = (_this.getQuery(query)).executeLocal(dataManager);\n _this.gridData = listItems;\n _this.trigger('actionComplete', { result: listItems }, function (e) {\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }\n }\n });\n };\n MultiColumnComboBox.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n if ((this.allowFiltering && this.typedString && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, true, false);\n }\n }\n else {\n filterQuery = (this.customFilterQuery != null) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n MultiColumnComboBox.prototype.setHiddenValue = function () {\n if (isNOU(this.value)) {\n this.hiddenElement.innerHTML = '';\n return;\n }\n var existingOption = this.hiddenElement.querySelector('option');\n if (!isNOU(existingOption)) {\n existingOption.textContent = this.text;\n existingOption.setAttribute('value', this.value.toString());\n }\n else if (!isNOU(this.hiddenElement)) {\n var newOption = document.createElement('option');\n newOption.text = this.text;\n newOption.setAttribute('value', this.value.toString());\n newOption.setAttribute('selected', '');\n this.hiddenElement.appendChild(newOption);\n }\n };\n MultiColumnComboBox.prototype.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n this.gridObj = new Grid({\n dataSource: this.gridData,\n columns: gridColumns,\n allowSorting: this.allowSorting,\n enableStickyHeader: true,\n gridLines: this.gridSettings.gridLines,\n rowHeight: this.gridSettings.rowHeight,\n enableAltRow: this.gridSettings.enableAltRow,\n enableVirtualization: this.enableVirtualization,\n enableRtl: this.enableRtl,\n editSettings: { allowAdding: false },\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowResizing: this.gridSettings.allowResizing,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n beforeDataBound: function () {\n if (_this.dataSource instanceof DataManager && _this.isShowSpinner) {\n _this.showHideSpinner(true);\n _this.isShowSpinner = false;\n }\n },\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionComplete: this.handleActionComplete.bind(this),\n keyPressed: this.handleKeyPressed.bind(this),\n resizing: function (args) {\n if (_this.gridSettings.resizing) {\n _this.gridSettings.resizing.call(_this, args);\n }\n },\n resizeStart: function (args) {\n if (_this.gridSettings.resizeStart) {\n _this.gridSettings.resizeStart.call(_this, args);\n }\n },\n resizeStop: function (args) {\n if (_this.gridSettings.resizeStop) {\n _this.gridSettings.resizeStop.call(_this, args);\n }\n }\n });\n this.gridEle = this.createElement('div', { id: this.element.id + \"_\" + getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n if (gridColumns.length > 0) {\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\n }\n if (sortOrder !== 'none') {\n this.gridObj.sortSettings = { columns: [{ field: this.fields.text, direction: sortOrder === 'ascending' ?\n SortOrder.Ascending : SortOrder.Descending }] };\n }\n this.gridObj.appendTo(this.gridEle);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n var _this = this;\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\n }\n if (Array.isArray(args.rows) && this.isDataFiltered) {\n var rows = args.rows;\n var rowHeight_1 = 0;\n rows.forEach(function (row) {\n var rowElement = _this.gridObj.getRowElementByUID(row.uid);\n if (rowElement) {\n rowHeight_1 += rowElement.getBoundingClientRect().height;\n }\n });\n this.popupRowHeight = rowHeight_1 || parseFloat(this.popupHeight);\n this.updateGridHeight(true, true);\n }\n this.popupObj.refreshPosition();\n this.gridObj.element.querySelector('.e-content').scrollTop = 0;\n };\n MultiColumnComboBox.prototype.handleKeyPressed = function (args) {\n if (args.key === 'Enter') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n if (this.isPopupOpen) {\n this.selectedGridRow(this.gridObj.getRows()[this.gridObj.selectedRowIndex], args, true);\n this.hidePopup(args);\n this.focusIn(args);\n }\n }\n if (this.fields.groupBy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n this.gridKeyActionHandler(args, true);\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var flattenData = function (data) {\n var result = [];\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(function (item) { return result.push.apply(result, flattenData(item)); });\n }\n else {\n Object.keys(data).forEach(function (key) { return result.push.apply(result, flattenData(data[\"\" + key])); });\n }\n }\n else if (data != null) {\n result.push(String(data));\n }\n return result;\n };\n var flattenedValues = flattenData(data);\n return (flattenedValues.indexOf(selectedValue) !== -1 && flattenedValues.indexOf(selectedText) !== -1);\n };\n MultiColumnComboBox.prototype.updateRowSelection = function (args) {\n var _this = this;\n if (args) {\n var dataRows = args.rows;\n dataRows.forEach(function (row) {\n _this.selectDataRow(row.data, row.index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ?\n this.value.toString() : '', this.text ? this.text.toString() : '');\n if (isPresent) {\n this.gridObj.selectRow(index);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.index = index;\n this.isProtectedOnChange = prevOnChange;\n return;\n }\n };\n MultiColumnComboBox.prototype.findIndex = function (arr, obj) {\n return arr.findIndex(function (item) {\n // eslint-disable-next-line\n return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (_a) {\n var field = _a.field, header = _a.header, width = _a.width, textAlign = _a.textAlign, format = _a.format, displayAsCheckBox = _a.displayAsCheckBox, template = _a.template, headerTemplate = _a.headerTemplate, customAttributes = _a.customAttributes;\n return ({\n field: field,\n headerText: header,\n width: width,\n textAlign: textAlign.toString() === '' && _this.enableRtl ? 'Right' : textAlign,\n format: format,\n displayAsCheckBox: displayAsCheckBox,\n template: template,\n headerTemplate: headerTemplate,\n customAttributes: customAttributes,\n type: displayAsCheckBox && !format ? 'boolean' : undefined\n });\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n var groupByField = this.fields.groupBy;\n var isGroupByValid = groupByField !== '' && !isNOU(groupByField);\n if (isGroupByValid) {\n if (this.sortType.toString().toLowerCase() !== 'multiplecolumns') {\n this.gridEle.classList.add('e-multicolumn-group');\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.allowGrouping = true;\n this.gridObj.groupSettings = {\n showDropArea: false,\n columns: [groupByField]\n };\n if (this.groupTemplate && isGroupByValid) {\n this.gridObj.groupSettings.captionTemplate = this.groupTemplate;\n }\n if (this.isVue) {\n this.gridObj.isVue = this.isVue;\n }\n this.isProtectedOnChange = prevOnChange;\n }\n };\n MultiColumnComboBox.prototype.onDataBound = function () {\n var _this = this;\n if (this.isLocaleChanged) {\n this.isLocaleChanged = false;\n this.unWireEvents();\n this.wireEvents();\n }\n var dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n var hasNoDataClass = this.popupDiv.classList.contains(NODATA);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (hasNoDataClass && dataCount >= 1) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n }\n if (this.isInitialRender) {\n var gridContentRow = this.popupDiv.querySelector('.e-gridcontent tr');\n var rowHeight = !hasNoDataClass ? gridContentRow ?\n gridContentRow.getBoundingClientRect().height : 0 :\n this.popupDiv.getBoundingClientRect().height;\n this.popupRowHeight = rowHeight;\n this.popupObj.hide();\n this.popupEle.style.visibility = 'unset';\n this.isInitialRender = false;\n }\n var rowElements = this.gridObj.element.querySelectorAll('.e-row');\n if (this.isDataFiltered && rowElements.length > 0 && this.inputEle.value !== '') {\n var firstRowEle = rowElements[0];\n firstRowEle.classList.add('e-row-focus');\n }\n if (this.dataSource instanceof DataManager) {\n setTimeout(function () {\n _this.showHideSpinner(false);\n });\n }\n };\n MultiColumnComboBox.prototype.showHideSpinner = function (isShow) {\n if (isShow) {\n showSpinner(this.dropdownElement);\n }\n else {\n hideSpinner(this.dropdownElement);\n }\n };\n MultiColumnComboBox.prototype.onActionFailure = function (args) {\n this.trigger('actionFailure', args);\n this.l10nUpdate(true);\n addClass([this.popupDiv], [NODATA]);\n };\n MultiColumnComboBox.prototype.renderInput = function () {\n var allowedAttributes = ['aria-expanded', 'aria-readOnly', 'aria-disabled', 'autocomplete',\n 'autocapitalize', 'spellcheck', 'tabindex'];\n var setAttributes = function (element, attributes) {\n for (var key in attributes) {\n // eslint-disable-next-line no-prototype-builtins\n if (attributes.hasOwnProperty(key) && allowedAttributes.indexOf(key) !== -1 && isNOU(element.getAttribute(key))) {\n element.setAttribute(key, attributes[key]);\n }\n }\n };\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'combobox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n setAttributes(this.inputEle, {\n 'aria-expanded': 'false',\n 'aria-readOnly': this.readonly.toString(),\n 'aria-disabled': this.disabled.toString(),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: 'false',\n tabindex: '0'\n });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n buttons: [DROPDOWNICON],\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: !this.disabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n cssClass: this.cssClass\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n this.inputWrapper.classList.add(MULTICOLUMNLIST);\n this.inputWrapper.setAttribute('spellcheck', 'false');\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT\n }\n });\n prepend([this.hiddenElement], this.inputWrapper);\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n this.dropdownElement = this.inputWrapper.querySelector('.e-input-group-icon.e-multicolumn-list-icon.e-icons');\n createSpinner({\n target: this.dropdownElement\n });\n };\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n if (isNOU(inputWidth)) {\n return;\n }\n var ddElement = this.inputWrapper;\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = inputWidth.match(/px|%|em/) ? inputWidth : formatUnit(inputWidth);\n }\n };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n var _this = this;\n var htmlAttributes = this.htmlAttributes;\n var inputEle = this.inputEle;\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class':\n this.inputWrapper.classList.add(htmlAttributes[htmlAttr]);\n break;\n case 'disabled':\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n break;\n case 'readonly':\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n break;\n case 'style': {\n var styles = htmlAttributes[htmlAttr];\n this.inputWrapper.style.cssText = '';\n if (styles) {\n styles.split(';').forEach(function (styleProperty) {\n var _a = styleProperty.split(':').map(function (part) { return part.trim(); }), property = _a[0], value = _a[1];\n if (property && value) {\n _this.inputWrapper.style.setProperty(property, value);\n }\n });\n }\n break;\n }\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(htmlAttributes[htmlAttr], inputEle);\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n /* To set enable property */\n MultiColumnComboBox.prototype.setEnable = function () {\n Input.setEnabled(!this.disabled, this.inputEle);\n if (!this.disabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.setAriaDisabled('false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.setAriaDisabled('true');\n }\n };\n MultiColumnComboBox.prototype.setAriaDisabled = function (value) {\n this.inputEle.setAttribute('aria-disabled', value);\n this.inputWrapper.setAttribute('aria-disabled', value);\n };\n MultiColumnComboBox.prototype.updateFieldValue = function (fieldValue, dataObj) {\n var fieldVal = getValue(fieldValue, dataObj).toString();\n return fieldVal;\n };\n MultiColumnComboBox.prototype.initValue = function (isRerender, isValue, isInitial) {\n var _this = this;\n var prevItemData = this.gridObj.getSelectedRecords()[0];\n var prevItemEle = this.gridObj.getSelectedRows()[0];\n var item;\n var currentValue;\n var currentText;\n var currentIndex;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = this.value ? this.value.toString() : this.value;\n this.isProtectedOnChange = prevOnChange;\n var updateValues = function (dataList) {\n var result = _this.updateCurrentValues(item, dataList);\n currentValue = result.currentValue;\n currentText = result.currentText;\n currentIndex = result.currentIndex;\n };\n if ((!isRerender && (!isNOU(this.value) || !isNOU(this.text))) || (isRerender && isValue !== undefined)) {\n var value_1 = isRerender ? (isValue ? this.value : this.text) : (!isNOU(this.value) ? this.value : this.text);\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var filteredData = dataLists.filter(function (item) {\n var fieldVal = item ? (_this.updateFieldValue(isRerender ? (isValue ? _this.fields.value :\n _this.fields.text) : !isNOU(_this.value) ? _this.fields.value : _this.fields.text, item)) : null;\n return fieldVal === value_1;\n });\n if (filteredData.length > 0) {\n item = filteredData[0];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n }\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n item = this.dataSource.filter(function (data) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, data);\n return fieldVal === value_1;\n })[0];\n updateValues(this.dataSource);\n }\n }\n else if (!isNOU(this.index)) {\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n item = dataLists[_this.index];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n if (!this.fields.groupBy) {\n item = this.dataSource[this.index];\n updateValues(this.dataSource);\n }\n else {\n setTimeout(function () {\n var rows = _this.gridObj.getRows();\n if (rows && rows.length > 0) {\n var rowData = _this.gridObj.getRowInfo(rows[_this.index]).rowData;\n var value = _this.fields.value;\n for (var i = 0; i < rows.length; i++) {\n if (rowData && rowData[parseInt(value.toString(), 10)] ===\n _this.dataSource[parseInt(i.toString(), 10)][parseInt(value.toString(), 10)]) {\n item = rowData;\n updateValues(_this.dataSource);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n break;\n }\n }\n }\n });\n }\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n }\n };\n MultiColumnComboBox.prototype.updateChangeEvent = function (item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial) {\n var fieldValue = item ? this.updateFieldValue(this.fields.value, item) : null;\n var ChangeEventArgs = {\n value: item ? fieldValue : null,\n itemData: { text: currentText, value: currentValue },\n item: this.getDataByValue(this.value),\n previousItemData: prevItemData,\n previousItemElement: prevItemEle,\n itemElement: this.inputWrapper,\n event: null,\n isInteracted: !isRerender\n };\n this.updateValues(currentValue, currentText, currentIndex, ChangeEventArgs, isInitial);\n };\n MultiColumnComboBox.prototype.updateCurrentValues = function (item, dataList) {\n if (!isNOU(item)) {\n var fieldText = this.updateFieldValue(this.fields.text, item);\n var fieldValue = this.updateFieldValue(this.fields.value, item);\n Input.setValue(fieldText, this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: fieldValue,\n currentText: fieldText,\n currentIndex: dataList.indexOf(item)\n };\n }\n return {\n currentValue: null,\n currentText: null,\n currentIndex: null\n };\n };\n MultiColumnComboBox.prototype.renderPopup = function () {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_options', className: MULTICOLUMNLIST + ' e-popup ' + (this.cssClass !== null ? this.cssClass : '')\n });\n attributes(this.popupEle, { 'aria-label': this.element.id, 'role': 'dialog' });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n prepend([this.popupDiv], this.popupEle);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n var popupHeight = this.getSize(false);\n this.popupEle.style.maxHeight = popupHeight;\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n this.popupDiv.style.maxHeight = popupHeight;\n this.updateGridHeight();\n this.popupEle.style.visibility = 'hidden';\n this.isInitialRender = true;\n };\n MultiColumnComboBox.prototype.updateGridHeight = function (isFilter, autoHeight) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n this.popupRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (this.popupRowHeight < this.prevGridHeight ? (this.popupRowHeight + scrollBarHeight) + 'px' : this.prevGridHeight + 'px') : this.prevGridHeight + 'px';\n }\n else {\n this.prevGridHeight = this.popupDiv.getBoundingClientRect().height - this.popupDiv.querySelector('.e-gridheader').getBoundingClientRect().height;\n height = this.prevGridHeight + 'px';\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.height = height;\n this.isProtectedOnChange = prevOnChange;\n };\n MultiColumnComboBox.prototype.createPopup = function (element) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.getSize(true),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n },\n open: function () {\n _this.inputEle.focus();\n _this.updateClearIconState();\n }\n });\n };\n MultiColumnComboBox.prototype.setFooterTemplate = function () {\n if (this.footer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], 'e-popup-footer');\n }\n var compiledString = this.getTemplateFunction(this.footerTemplate);\n var dataCount = this.dataSource.length;\n var tempArr = compiledString({ count: dataCount }, this, 'footerTemplate', this.element.id + 'footerTemplate', this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n MultiColumnComboBox.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.element.id + '_actionFailure' : this.element.id + '_noRecords';\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.getTemplateFunction(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request Failed' };\n this.l10n = new L10n('multicolumncombobox', l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], 'e-no-records');\n prepend([this.noRecord], this.popupDiv);\n this.popupObj.refreshPosition();\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n MultiColumnComboBox.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n /*To calculate the width and height of the popup */\n MultiColumnComboBox.prototype.getSize = function (ispopupWidth) {\n var currentDimension = ispopupWidth ? this.popupWidth : this.popupHeight;\n var size = formatUnit(currentDimension);\n if (size.includes('%')) {\n var dimensionValue = ispopupWidth ? this.inputWrapper.offsetWidth : document.documentElement.clientHeight;\n size = (dimensionValue * parseFloat(size) / 100).toString() + 'px';\n }\n else if (typeof currentDimension === 'string') {\n size = currentDimension.match(/px|em/) ? currentDimension : size;\n }\n return size;\n };\n MultiColumnComboBox.prototype.selectedGridRow = function (row, e, isKeyNav) {\n var _this = this;\n var eventArgs = {\n isInteracted: e ? true : false,\n item: this.gridObj.getSelectedRecords()[0],\n itemElement: row,\n itemData: this.gridObj.getSelectedRecords()[0],\n event: e,\n cancel: false\n };\n var selectedRecords = this.gridObj.getSelectedRecords()[0];\n var dataText = selectedRecords ? this.updateFieldValue(this.fields.text, selectedRecords) : '';\n var dataValue = selectedRecords ? this.updateFieldValue(this.fields.value, selectedRecords) : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: selectedRecords ? dataText : '', value: selectedRecords ? dataValue : '' },\n event: e,\n cancel: false,\n value: selectedRecords ? dataValue : '',\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && eventArgs.itemData) {\n var event_1 = e;\n var isUpdateVal = event_1.key === 'Enter' || event_1.key === 'Tab' || event_1.shiftKey && event_1.key === 'Tab' || event_1.altKey && event_1.key === 'ArrowUp';\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.updateValues(selectedRecords ? dataValue : '', selectedRecords ? dataText : '', _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecords ? dataText : '', _this.inputEle, _this.floatLabelType, _this.showClearButton);\n _this.setHiddenValue();\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.hidePopup(e);\n }\n }\n });\n };\n MultiColumnComboBox.prototype.updateValues = function (value, text, index, eventArgs, isInitial) {\n this.previousItemElement = eventArgs.itemElement;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = text || this.text;\n this.value = value || this.value;\n this.index = this.selectedRowIndex = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\n this.setHiddenValue();\n if (!isInitial) {\n this.triggerChangeEvent(eventArgs);\n }\n };\n MultiColumnComboBox.prototype.triggerChangeEvent = function (eventArgs) {\n this.trigger('change', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n });\n };\n MultiColumnComboBox.prototype.inputHandler = function (e) {\n var _this = this;\n this.showPopup(null, true);\n this.updateClearIconState();\n if (this.allowFiltering) {\n this.typedString = e.target.value.toLowerCase();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.typedString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.setGridData(dataSource, query);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !_this.isCustomFilter) {\n _this.setGridData(_this.dataSource, _this.query ? _this.query.clone() : null);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, data, exactData;\n return __generator(this, function (_c) {\n if (this.dataSource instanceof DataManager) {\n (_a = this.filterDatas(this.mainData, inputValue), data = _a.data, exactData = _a.exactData);\n }\n else if (Array.isArray(this.dataSource)) {\n (_b = this.filterDatas(this.dataSource, inputValue), data = _b.data, exactData = _b.exactData);\n }\n this.selectFilteredRows(data, exactData);\n return [2 /*return*/];\n });\n });\n };\n MultiColumnComboBox.prototype.filterDatas = function (dataSource, inputValue) {\n var _this = this;\n var data = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return inputValue && fieldText.toLowerCase().startsWith(inputValue.toLowerCase());\n });\n var exactData = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return fieldText === inputValue;\n });\n return { data: data, exactData: exactData };\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data, exactData) {\n if (data.length <= 0) {\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n return;\n }\n this.matchedContent = data[0];\n this.exactMatchedContent = exactData[0];\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function () {\n if (this.gridData && this.gridData.length > 0) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n this.gridObj.dataSource = this.gridData;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n };\n MultiColumnComboBox.prototype.wireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.gridEle, 'click', this.onMouseClick, this);\n EventHandler.add(this.inputEle, 'input', this.inputHandler, this);\n EventHandler.add(this.inputEle, 'focus', this.focusIn, this);\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown', this.clearText, this);\n }\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.keyboardModule = new KeyboardEvents(this.gridEle, {\n keyAction: this.gridKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n MultiColumnComboBox.prototype.unWireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.inputEle, 'input', this.inputHandler);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.gridEle, 'click', this.onMouseClick);\n if (this.showClearButton) {\n EventHandler.remove(this.inputObj.clearButton, 'mousedown', this.clearText);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n MultiColumnComboBox.prototype.preventBlur = function (e) {\n e.preventDefault();\n };\n MultiColumnComboBox.prototype.dropDownClick = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.showPopup(e);\n }\n };\n MultiColumnComboBox.prototype.onMouseClick = function (e) {\n var target = e.target;\n var row = closest(target, '.e-row');\n var selectedRowIndex = this.gridObj.selectedRowIndex;\n if (row) {\n if (selectedRowIndex >= 0) {\n this.selectedGridRow(row, e);\n }\n else {\n this.gridObj.selectedRowIndex = this.gridObj.getRows().indexOf(row);\n this.gridObj.selectRow(this.gridObj.selectedRowIndex);\n this.hidePopup(e);\n }\n }\n };\n MultiColumnComboBox.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!target.closest('.e-multicolumn-list')) {\n this.focusOut();\n }\n return;\n }\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val && e.code !== 'Enter') {\n this.inputEle.value = this.value = this.index = this.text = null;\n }\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues && val) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var fieldText = this.updateFieldValue(this.fields.text, this.matchedContent);\n var fieldValue = this.updateFieldValue(this.fields.value, this.matchedContent);\n this.inputEle.value = fieldText;\n this.value = fieldValue;\n var selectIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.index = selectIndex;\n this.text = fieldText;\n this.gridObj.selectRow(selectIndex);\n this.selectedGridRow(this.gridObj.getRowByIndex(selectIndex), e);\n this.previousItemElement = this.gridObj.getSelectedRows()[0];\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n if (this.isDataFiltered) {\n this.inputEle.value = '';\n var ChangeEventArgs = {\n value: null,\n itemData: { text: null, value: null },\n item: null,\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement,\n itemElement: null,\n event: e,\n isInteracted: true,\n cancel: false\n };\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = this.value = this.index = null;\n this.gridObj.refreshColumns();\n this.isProtectedOnChange = prevOnChange;\n this.triggerChangeEvent(ChangeEventArgs);\n this.isDataFiltered = false;\n this.matchedContent = this.matchedRowEle = null;\n }\n }\n };\n MultiColumnComboBox.prototype.clearText = function (e) {\n this.isDataFiltered = true;\n this.updateValuesOnInput(e, null, true);\n };\n MultiColumnComboBox.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.getSize(true) });\n this.popupObj.refreshPosition();\n }\n };\n /* To set cssclass for the dropdowntree */\n MultiColumnComboBox.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n MultiColumnComboBox.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.focusOut();\n }\n break;\n case 'altDown':\n if (!this.isPopupOpen) {\n this.showPopup(e);\n this.updateSelectedItem(e, false);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n this.updateSelectedItem(e, true, true);\n break;\n case 'enter':\n this.updateValuesOnInput(null, e, false, true);\n this.focusIn(e);\n break;\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.gridKeyActionHandler = function (e, isGroup) {\n var keyActionMap = {\n 'ArrowDown': 'moveDown',\n 'ArrowUp': 'moveUp',\n 'End': 'end',\n 'Home': 'home',\n 'Tab': 'tab',\n 'Escape': 'escape',\n 'Shift+Tab': 'shiftTab',\n 'Alt+ArrowUp': 'altUp'\n };\n if (isGroup) {\n var key = \"\" + (e.altKey ? 'Alt+' : '') + (e.shiftKey ? 'Shift+' : '') + e.key;\n e.action = keyActionMap[key] || e.action;\n }\n switch (e.action) {\n case 'escape':\n case 'tab':\n case 'shiftTab':\n case 'altUp':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (e.action !== 'escape') {\n this.updateSelectedItem(e);\n }\n this.hidePopup(e);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.updateSelectedItem = function (e, isUpdateIndex, isInputTarget) {\n var _this = this;\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index_1 = this.fields.groupBy ? (this.gridObj.selectedRowIndex || 0) : this.gridObj.selectedRowIndex;\n var dataLength = this.dataSource instanceof DataManager ? this.remoteDataLength :\n this.dataSource.length;\n if ((index_1 === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index_1 = 0;\n }\n else if ((index_1 >= (dataLength - 1) && e.action === 'moveDown') || (e.action === 'end')) {\n index_1 = dataLength - 1;\n }\n else if (e.action === 'moveDown' && (index_1 >= 0 && index_1 <= (dataLength - 1)) && (this.fields.groupBy || isInputTarget)) {\n index_1 += 1;\n }\n else if (e.action === 'moveUp' && index_1 > 0 && (this.fields.groupBy) || isInputTarget) {\n index_1 -= 1;\n }\n if (!this.enableVirtualization) {\n this.selectRow(e, isUpdateIndex, index_1);\n }\n else {\n setTimeout(function () { _this.selectRow(e, isUpdateIndex, index_1); });\n }\n }\n };\n MultiColumnComboBox.prototype.selectRow = function (e, isUpdateIndex, index) {\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n this.gridObj.selectRow(index);\n this.gridObj.selectedRowIndex = index;\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (isUpdateIndex) {\n this.selectedGridRow(this.gridObj.getRows()[parseInt(index.toString(), 10)], e, true);\n }\n };\n MultiColumnComboBox.prototype.updateClearIconState = function () {\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = this.inputEle.value === '' ? 'none' : 'flex';\n }\n };\n MultiColumnComboBox.prototype.updateDynamicDataSource = function (newDataSource, oldDataSource) {\n if (this.gridObj) {\n var dataLength_1;\n this.isShowSpinner = true;\n this.setGridData(newDataSource);\n var isRemoteData = oldDataSource instanceof DataManager;\n if (isRemoteData) {\n oldDataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataLength_1 = e.result.length;\n });\n }\n else {\n dataLength_1 = oldDataSource.length;\n }\n if (dataLength_1 === 0) {\n this.popupDiv.appendChild(this.gridEle);\n }\n }\n };\n /**\n * Sets the focus to the component for interaction.component for interaction.\n *\n * @param {FocusEvent | MouseEvent | KeyboardEvent | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusIn = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n addClass([this.inputWrapper], [INPUTFOCUS]);\n this.inputEle.focus();\n this.updateClearIconState();\n this.trigger('focus', e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @param {MouseEvent | KeyboardEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusOut = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n if (this.inputWrapper) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = 'none';\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n }\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isInputOpen - Specifies whether the input is open or not.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.showPopup = function (e, isInputOpen) {\n var _this = this;\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isPopupOpen) {\n _this.isPopupOpen = true;\n _this.popupObj.refreshPosition();\n addClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (!isInputOpen) {\n if ((_this.value || _this.text || _this.index)) {\n _this.gridObj.selectRow(_this.selectedRowIndex);\n }\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n var firstRow = contentEle.querySelector('.e-row');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (firstRow) {\n _this.inputEle.setAttribute('aria-activedescendant', firstRow.getAttribute('data-uid'));\n }\n }\n if (!isNOU(_this.dataSource) && _this.dataSource instanceof DataManager) {\n _this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.remoteDataLength = e.result.length;\n });\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n _this.customFilterQuery = null;\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.allowFiltering ? _this.mainData : _this.gridData;\n var noRecordEle = _this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n _this.popupDiv.removeChild(noRecordEle);\n removeClass([_this.popupDiv], [NODATA]);\n }\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n this.hiddenElement = null;\n this.dropdownElement = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {MultiColumnComboBoxModel} newProp - Specifies new properties\n * @param {MultiColumnComboBoxModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n MultiColumnComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var gridColumns = void 0;\n switch (prop) {\n case 'width':\n case 'popupWidth':\n if (prop === 'width') {\n this.setElementWidth(newProp.width);\n }\n if (this.popupObj) {\n this.popupObj.element.style.width = this.getSize(true);\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var height = this.getSize(false);\n this.popupObj.element.style.maxHeight = height;\n this.popupDiv.style.maxHeight = height;\n this.gridObj.height = height;\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputEle);\n break;\n case 'disabled':\n Input.setEnabled(!this.disabled, this.inputEle);\n this.setEnable();\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, this.floatLabelType, this.placeholder);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputEle, this.inputObj);\n break;\n case 'value':\n this.initValue(true, true);\n break;\n case 'text':\n this.initValue(true, false);\n break;\n case 'index':\n this.initValue(true);\n break;\n case 'sortOrder':\n if (this.gridObj) {\n this.gridObj.sortSettings.columns = [{\n field: this.fields.text, direction: newProp.sortOrder === SortOrder.Ascending ?\n SortOrder.Ascending : SortOrder.Descending\n }];\n }\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'noRecordsTemplate':\n this.l10nUpdate();\n break;\n case 'actionFailureTemplate':\n this.l10nUpdate(true);\n break;\n case 'footerTemplate':\n this.setFooterTemplate();\n break;\n case 'itemTemplate':\n if (this.gridObj) {\n this.gridObj.rowTemplate = newProp.itemTemplate;\n }\n break;\n case 'groupTemplate':\n this.groupTemplate = newProp.groupTemplate;\n this.updateGroupByField();\n break;\n case 'enableRtl':\n if (this.gridObj && this.popupObj) {\n this.gridObj.enableRtl = newProp.enableRtl;\n Input.setEnableRtl(newProp.enableRtl, [this.inputWrapper]);\n this.popupObj.enableRtl = newProp.enableRtl;\n }\n break;\n case 'dataSource':\n this.updateDynamicDataSource(newProp.dataSource, oldProp.dataSource);\n break;\n case 'query':\n this.isMainDataUpdated = false;\n this.setGridData(this.dataSource);\n break;\n case 'gridSettings':\n if (this.gridObj) {\n this.gridObj.gridLines = newProp.gridSettings.gridLines;\n this.gridObj.rowHeight = newProp.gridSettings.rowHeight;\n this.gridObj.enableAltRow = newProp.gridSettings.enableAltRow;\n this.gridObj.allowResizing = newProp.gridSettings.allowResizing;\n if (!(isNOU(newProp.gridSettings.allowTextWrap))) {\n this.gridObj.allowTextWrap = newProp.gridSettings.allowTextWrap;\n }\n if (!(isNOU(newProp.gridSettings.textWrapMode))) {\n this.gridObj.textWrapSettings.wrapMode = newProp.gridSettings.textWrapMode;\n }\n }\n break;\n case 'fields':\n this.fields = newProp.fields;\n this.updateGroupByField();\n break;\n case 'filterType':\n this.filterType = newProp.filterType;\n break;\n case 'enableVirtualization':\n if (this.gridObj) {\n this.enableVirtualization = this.gridObj.enableVirtualization = newProp.enableVirtualization;\n }\n break;\n case 'sortType':\n if (this.gridObj) {\n this.sortType = newProp.sortType;\n this.gridObj.allowMultiSorting = this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting;\n }\n break;\n case 'allowFiltering':\n this.allowFiltering = newProp.allowFiltering;\n break;\n case 'allowSorting':\n if (this.gridObj) {\n this.allowSorting = this.gridObj.allowSorting = newProp.allowSorting;\n }\n break;\n case 'columns':\n if (this.gridObj) {\n gridColumns = this.getGridColumns();\n this.gridObj.columns = gridColumns;\n }\n break;\n case 'locale':\n this.isLocaleChanged = true;\n break;\n }\n }\n };\n __decorate([\n Property([])\n ], MultiColumnComboBox.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"index\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiColumnComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('')\n ], MultiColumnComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({ text: null, value: null, groupBy: null }, FieldSettings)\n ], MultiColumnComboBox.prototype, \"fields\", void 0);\n __decorate([\n Collection([], Column)\n ], MultiColumnComboBox.prototype, \"columns\", void 0);\n __decorate([\n Complex({}, GridSettings)\n ], MultiColumnComboBox.prototype, \"gridSettings\", void 0);\n __decorate([\n Property(FilterType.StartsWith)\n ], MultiColumnComboBox.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], MultiColumnComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(SortOrder.None)\n ], MultiColumnComboBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(SortType.OneColumn)\n ], MultiColumnComboBox.prototype, \"sortType\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], MultiColumnComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request Failed')\n ], MultiColumnComboBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiColumnComboBox.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property({})\n ], MultiColumnComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"change\", void 0);\n MultiColumnComboBox = __decorate([\n NotifyPropertyChanges\n ], MultiColumnComboBox);\n return MultiColumnComboBox;\n}(Component));\nexport { MultiColumnComboBox };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","verb","n","v","op","f","TypeError","_","y","t","call","label","ops","pop","trys","push","g","sent","throw","return","Symbol","iterator","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","Resize","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","Property","ChildProperty","Column","GridSettings","Both","Event","MultiColumnComboBox","options","element","_this","gridInject","isShowSpinner","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","exactMatchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderInput","gridData","setGridData","dataSource","renderGrid","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","query","trigger","cancel","args","DataManager","showHideSpinner","executeQuery","getQuery","isMainDataUpdated","mainData","updateGridDataSource","catch","dataManager","listItems","executeLocal","filterQuery","isCustomFilter","allowFiltering","clone","Query","filterType","typedString","fields","text","where","customFilterQuery","setHiddenValue","hiddenElement","innerHTML","existingOption","querySelector","newOption","document","setAttribute","toString","textContent","gridColumns","getGridColumns","sortOrder","toLowerCase","gridObj","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowResizing","allowMultiSorting","sortType","rowTemplate","itemTemplate","beforeDataBound","dataBound","onDataBound","actionFailure","onActionFailure","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","direction","Ascending","Descending","appendTo","index","initValue","requestType","updateRowSelection","isArray","rows","isDataFiltered","rowHeight_1","forEach","row","rowElement","getRowElementByUID","uid","getBoundingClientRect","popupRowHeight","parseFloat","updateGridHeight","popupObj","refreshPosition","scrollTop","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","item","keys","String","flattenedValues","indexOf","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","every","map","_a","header","width","textAlign","format","displayAsCheckBox","template","headerTemplate","customAttributes","headerText","type","undefined","groupByField","isGroupByValid","classList","add","allowGrouping","groupSettings","showDropArea","groupTemplate","captionTemplate","isVue","isLocaleChanged","unWireEvents","dataCount","popupChild","hasNoDataClass","contains","l10nUpdate","removeChild","addClass","removeClass","noRecordEle","isInitialRender","gridContentRow","hide","popupEle","style","visibility","rowElements","querySelectorAll","inputEle","setTimeout","isShow","showSpinner","dropdownElement","hideSpinner","allowedAttributes","tagName","getAttribute","attributes","aria-expanded","aria-readOnly","readonly","aria-disabled","disabled","autocomplete","autocapitalize","spellcheck","tabindex","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","aria-hidden","class","prepend","name","removeAttribute","hasAttribute","setElementWidth","createSpinner","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","styles","cssText","split","styleProperty","part","trim","property","setProperty","defaultAttr","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","dataLists","filteredData","filter","updateChangeEvent","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","createPopup","footerTemplate","setFooterTemplate","getSize","maxHeight","Math","round","footer","isFilter","autoHeight","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","tempArr","getTemplateFunction","count","isStringTemplate","slice","append","noRecord","noRecordsTemplate","actionFailureTemplate","templateId","templatestring","l10nLocale","l10n","L10n","locale","getConstant","content","tempEle","select","outerHTML","compile","ispopupWidth","currentDimension","popupWidth","size","includes","offsetWidth","documentElement","isKeyNav","eventArgs","selectedRecords","dataText","dataValue","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","eventArgs_1","preventDefaultAction","updateData","updateInputValue","inputValue","_b","exactData","_c","filterDatas","selectFilteredRows","startsWith","selectedIndex","currentViewData","getRowByIndex","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","remove","destroy","preventDefault","focusedEle","closest","focusOut","isClearVal","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","isKeyDown","val","code","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","dataLength","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","firstElementChild","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","NotifyPropertyChanges","Component"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, getValue } from '@syncfusion/ej2-base';\nimport { ChildProperty, prepend, Collection, getUniqueID, Complex, isNullOrUndefined as isNOU, select, L10n, Browser } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass, removeClass, Event, Animation } from '@syncfusion/ej2-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Grid, Resize, VirtualScroll, Group as GridGroup, Edit, Sort } from '@syncfusion/ej2-grids';\nvar DROPDOWNICON = 'e-input-group-icon e-multicolumn-list-icon e-icons';\nvar CONTENT = 'e-popup-content';\nvar ICONANIMATION = 'e-icon-anim';\nvar NODATA = 'e-nodata';\nvar DISABLED = 'e-disabled';\nvar INPUTFOCUS = 'e-input-focus';\nvar MULTICOLUMNLIST = 'e-multicolumn-list';\nvar HIDDENELEMENT = 'e-multicolumn-list-hidden';\nvar MULTICOLUMNGRID = 'e-multicolumn-grid';\nvar MultiColumnGrid = /** @class */ (function () {\n function MultiColumnGrid() {\n }\n /**\n * Injecting required modules for component.\n *\n * @returns {void}\n * @private\n */\n MultiColumnGrid.prototype.InjectModules = function () {\n Grid.Inject(VirtualScroll, GridGroup, Edit, Sort, Resize);\n };\n return MultiColumnGrid;\n}());\nexport { MultiColumnGrid };\n/**\n * Defines the filter type.\n */\nexport var FilterType;\n(function (FilterType) {\n /**\n * Checks whether a value begins with the specified value.\n */\n FilterType[\"StartsWith\"] = \"StartsWith\";\n /**\n * Checks whether a value ends with specified value.\n */\n FilterType[\"EndsWith\"] = \"EndsWith\";\n /**\n * Checks whether a value contains with specified value.\n */\n FilterType[\"Contains\"] = \"Contains\";\n})(FilterType || (FilterType = {}));\n/**\n * Specifies the sortOrder to sort the data source.\n */\nexport var SortOrder;\n(function (SortOrder) {\n /**\n * The datasource is not sorting. Default value is None.\n */\n SortOrder[\"None\"] = \"None\";\n /**\n * The datasource is sorting with ascending order.\n */\n SortOrder[\"Ascending\"] = \"Ascending\";\n /**\n * The data source is sorting with descending order.\n */\n SortOrder[\"Descending\"] = \"Descending\";\n})(SortOrder || (SortOrder = {}));\n/**\n * Specifies the type of sorting to be applied for the columns.\n */\nexport var SortType;\n(function (SortType) {\n /**\n * Allow sorting only one column\n */\n SortType[\"OneColumn\"] = \"OneColumn\";\n /**\n * Allow sorting multiple columns\n */\n SortType[\"MultipleColumns\"] = \"MultipleColumns\";\n})(SortType || (SortType = {}));\n/**\n * Specifies the type of wrap mode to be applied for the grid cells.\n */\nexport var WrapMode;\n(function (WrapMode) {\n /**\n * Specifies that both header and content text wrapping are enabled.\n */\n WrapMode[\"Both\"] = \"Both\";\n /**\n * Specifies that only content text wrapping is enabled.\n */\n WrapMode[\"Content\"] = \"Content\";\n /**\n * Specifies that only header text wrapping is enabled.\n */\n WrapMode[\"Header\"] = \"Header\";\n})(WrapMode || (WrapMode = {}));\n/**\n * The fields property maps the columns of the data table and binds the data to the component.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies the number of columns and its respective fields to be displayed in the dropdown popup.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"displayAsCheckBox\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Specifies the configuration of the columns in the popup content.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property('Default')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(WrapMode.Both)\n ], GridSettings.prototype, \"textWrapMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n/**\n * The `MultiColumnComboBox` allows the user to search and select values from a list. It provides a list of options that can be selected using a filter input.\n * The selected value will be displayed in the input element.\n *\n * ```html\n * <input type='text' id='multi-column'></input>\n * ```\n * ```typescript\n * let multiColObj: MultiColumnComboBox = new MultiColumnComboBox();\n * multiColObj.appendTo('#multi-column');\n * ```\n */\nvar MultiColumnComboBox = /** @class */ (function (_super) {\n __extends(MultiColumnComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {MultiColumnComboBoxModel} options - Specifies the MultiColumnComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiColumnComboBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.gridInject = new MultiColumnGrid();\n _this.isShowSpinner = true;\n _this.gridInject.InjectModules();\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n MultiColumnComboBox.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveUp: 'uparrow'\n };\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n this.persistData();\n };\n MultiColumnComboBox.prototype.getDirective = function () {\n return 'EJS-MULTICOLUMNCOMBOBOX';\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n MultiColumnComboBox.prototype.getModuleName = function () {\n return 'multicolumncombobox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n MultiColumnComboBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n MultiColumnComboBox.prototype.persistData = function () {\n if (this.enablePersistence) {\n this.element.id += '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n MultiColumnComboBox.prototype.render = function () {\n this.renderInput();\n if (this.gridData == null) {\n this.setGridData(this.dataSource);\n }\n this.renderGrid();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.appendChild(this.gridEle);\n this.setHTMLAttributes();\n this.renderPopup();\n this.wireEvents();\n };\n MultiColumnComboBox.prototype.setGridData = function (dataSource, query) {\n var _this = this;\n this.trigger('actionBegin', { cancel: false, query: query }, function (args) {\n if (!args.cancel) {\n if (dataSource instanceof DataManager) {\n if (_this.isShowSpinner) {\n _this.showHideSpinner(true);\n }\n dataSource.executeQuery(_this.getQuery(query)).then(function (e) {\n _this.gridData = e.result;\n _this.trigger('actionComplete', e, function (e) {\n _this.showHideSpinner(false);\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.remoteDataLength = _this.gridData.length;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }).catch(function (e) {\n _this.trigger('actionFailure', e, null);\n });\n }\n else {\n var dataManager = new DataManager(dataSource);\n var listItems = (_this.getQuery(query)).executeLocal(dataManager);\n _this.gridData = listItems;\n _this.trigger('actionComplete', { result: listItems }, function (e) {\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.remoteDataLength = _this.gridData.length;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }\n }\n });\n };\n MultiColumnComboBox.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n if ((this.allowFiltering && this.typedString && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, true, false);\n }\n }\n else {\n filterQuery = (this.customFilterQuery != null) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n MultiColumnComboBox.prototype.setHiddenValue = function () {\n if (isNOU(this.value)) {\n this.hiddenElement.innerHTML = '';\n return;\n }\n var existingOption = this.hiddenElement.querySelector('option');\n if (!isNOU(existingOption)) {\n existingOption.textContent = this.text;\n existingOption.setAttribute('value', this.value.toString());\n }\n else if (!isNOU(this.hiddenElement)) {\n var newOption = document.createElement('option');\n newOption.text = this.text;\n newOption.setAttribute('value', this.value.toString());\n newOption.setAttribute('selected', '');\n this.hiddenElement.appendChild(newOption);\n }\n };\n MultiColumnComboBox.prototype.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n this.gridObj = new Grid({\n dataSource: this.gridData,\n columns: gridColumns,\n allowSorting: this.allowSorting,\n enableStickyHeader: true,\n gridLines: this.gridSettings.gridLines,\n rowHeight: this.gridSettings.rowHeight,\n enableAltRow: this.gridSettings.enableAltRow,\n enableVirtualization: this.enableVirtualization,\n enableRtl: this.enableRtl,\n editSettings: { allowAdding: false },\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowResizing: this.gridSettings.allowResizing,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n beforeDataBound: function () {\n if (_this.dataSource instanceof DataManager && _this.isShowSpinner) {\n _this.showHideSpinner(true);\n _this.isShowSpinner = false;\n }\n },\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionComplete: this.handleActionComplete.bind(this),\n keyPressed: this.handleKeyPressed.bind(this),\n resizing: function (args) {\n if (_this.gridSettings.resizing) {\n _this.gridSettings.resizing.call(_this, args);\n }\n },\n resizeStart: function (args) {\n if (_this.gridSettings.resizeStart) {\n _this.gridSettings.resizeStart.call(_this, args);\n }\n },\n resizeStop: function (args) {\n if (_this.gridSettings.resizeStop) {\n _this.gridSettings.resizeStop.call(_this, args);\n }\n }\n });\n this.gridEle = this.createElement('div', { id: this.element.id + \"_\" + getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n if (gridColumns.length > 0) {\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\n }\n if (sortOrder !== 'none') {\n this.gridObj.sortSettings = { columns: [{ field: this.fields.text, direction: sortOrder === 'ascending' ?\n SortOrder.Ascending : SortOrder.Descending }] };\n }\n this.gridObj.appendTo(this.gridEle);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n var _this = this;\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\n }\n if (Array.isArray(args.rows) && this.isDataFiltered) {\n var rows = args.rows;\n var rowHeight_1 = 0;\n rows.forEach(function (row) {\n var rowElement = _this.gridObj.getRowElementByUID(row.uid);\n if (rowElement) {\n rowHeight_1 += rowElement.getBoundingClientRect().height;\n }\n });\n this.popupRowHeight = rowHeight_1 || parseFloat(this.popupHeight);\n this.updateGridHeight(true, true);\n }\n this.popupObj.refreshPosition();\n this.gridObj.element.querySelector('.e-content').scrollTop = 0;\n };\n MultiColumnComboBox.prototype.handleKeyPressed = function (args) {\n if (args.key === 'Enter') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n if (this.isPopupOpen) {\n this.selectedGridRow(this.gridObj.getRows()[this.gridObj.selectedRowIndex], args, true);\n this.hidePopup(args);\n this.focusIn(args);\n }\n }\n if (this.fields.groupBy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n this.gridKeyActionHandler(args, true);\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var flattenData = function (data) {\n var result = [];\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(function (item) { return result.push.apply(result, flattenData(item)); });\n }\n else {\n Object.keys(data).forEach(function (key) { return result.push.apply(result, flattenData(data[\"\" + key])); });\n }\n }\n else if (data != null) {\n result.push(String(data));\n }\n return result;\n };\n var flattenedValues = flattenData(data);\n return (flattenedValues.indexOf(selectedValue) !== -1 && flattenedValues.indexOf(selectedText) !== -1);\n };\n MultiColumnComboBox.prototype.updateRowSelection = function (args) {\n var _this = this;\n if (args) {\n var dataRows = args.rows;\n dataRows.forEach(function (row) {\n _this.selectDataRow(row.data, row.index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ?\n this.value.toString() : '', this.text ? this.text.toString() : '');\n if (isPresent) {\n this.gridObj.selectRow(index);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.index = index;\n this.isProtectedOnChange = prevOnChange;\n return;\n }\n };\n MultiColumnComboBox.prototype.findIndex = function (arr, obj) {\n return arr.findIndex(function (item) {\n // eslint-disable-next-line\n return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (_a) {\n var field = _a.field, header = _a.header, width = _a.width, textAlign = _a.textAlign, format = _a.format, displayAsCheckBox = _a.displayAsCheckBox, template = _a.template, headerTemplate = _a.headerTemplate, customAttributes = _a.customAttributes;\n return ({\n field: field,\n headerText: header,\n width: width,\n textAlign: textAlign.toString() === '' && _this.enableRtl ? 'Right' : textAlign,\n format: format,\n displayAsCheckBox: displayAsCheckBox,\n template: template,\n headerTemplate: headerTemplate,\n customAttributes: customAttributes,\n type: displayAsCheckBox && !format ? 'boolean' : undefined\n });\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n var groupByField = this.fields.groupBy;\n var isGroupByValid = groupByField !== '' && !isNOU(groupByField);\n if (isGroupByValid) {\n if (this.sortType.toString().toLowerCase() !== 'multiplecolumns') {\n this.gridEle.classList.add('e-multicolumn-group');\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.allowGrouping = true;\n this.gridObj.groupSettings = {\n showDropArea: false,\n columns: [groupByField]\n };\n if (this.groupTemplate && isGroupByValid) {\n this.gridObj.groupSettings.captionTemplate = this.groupTemplate;\n }\n if (this.isVue) {\n this.gridObj.isVue = this.isVue;\n }\n this.isProtectedOnChange = prevOnChange;\n }\n };\n MultiColumnComboBox.prototype.onDataBound = function () {\n var _this = this;\n if (this.isLocaleChanged) {\n this.isLocaleChanged = false;\n this.unWireEvents();\n this.wireEvents();\n }\n var dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n var hasNoDataClass = this.popupDiv.classList.contains(NODATA);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (hasNoDataClass && dataCount >= 1) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n }\n if (this.isInitialRender) {\n var gridContentRow = this.popupDiv.querySelector('.e-gridcontent tr');\n var rowHeight = !hasNoDataClass ? gridContentRow ?\n gridContentRow.getBoundingClientRect().height : 0 :\n this.popupDiv.getBoundingClientRect().height;\n this.popupRowHeight = rowHeight;\n this.popupObj.hide();\n this.popupEle.style.visibility = 'unset';\n this.isInitialRender = false;\n }\n var rowElements = this.gridObj.element.querySelectorAll('.e-row');\n if (this.isDataFiltered && rowElements.length > 0 && this.inputEle.value !== '') {\n var firstRowEle = rowElements[0];\n firstRowEle.classList.add('e-row-focus');\n }\n if (this.dataSource instanceof DataManager) {\n setTimeout(function () {\n _this.showHideSpinner(false);\n });\n }\n };\n MultiColumnComboBox.prototype.showHideSpinner = function (isShow) {\n if (isShow) {\n showSpinner(this.dropdownElement);\n }\n else {\n hideSpinner(this.dropdownElement);\n }\n };\n MultiColumnComboBox.prototype.onActionFailure = function (args) {\n this.trigger('actionFailure', args);\n this.l10nUpdate(true);\n addClass([this.popupDiv], [NODATA]);\n };\n MultiColumnComboBox.prototype.renderInput = function () {\n var allowedAttributes = ['aria-expanded', 'aria-readOnly', 'aria-disabled', 'autocomplete',\n 'autocapitalize', 'spellcheck', 'tabindex'];\n var setAttributes = function (element, attributes) {\n for (var key in attributes) {\n // eslint-disable-next-line no-prototype-builtins\n if (attributes.hasOwnProperty(key) && allowedAttributes.indexOf(key) !== -1 && isNOU(element.getAttribute(key))) {\n element.setAttribute(key, attributes[key]);\n }\n }\n };\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'combobox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n setAttributes(this.inputEle, {\n 'aria-expanded': 'false',\n 'aria-readOnly': this.readonly.toString(),\n 'aria-disabled': this.disabled.toString(),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: 'false',\n tabindex: '0'\n });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n buttons: [DROPDOWNICON],\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: !this.disabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n cssClass: this.cssClass\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n this.inputWrapper.classList.add(MULTICOLUMNLIST);\n this.inputWrapper.setAttribute('spellcheck', 'false');\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT\n }\n });\n prepend([this.hiddenElement], this.inputWrapper);\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n this.dropdownElement = this.inputWrapper.querySelector('.e-input-group-icon.e-multicolumn-list-icon.e-icons');\n createSpinner({\n target: this.dropdownElement\n });\n };\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n if (isNOU(inputWidth)) {\n return;\n }\n var ddElement = this.inputWrapper;\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = inputWidth.match(/px|%|em/) ? inputWidth : formatUnit(inputWidth);\n }\n };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n var _this = this;\n var htmlAttributes = this.htmlAttributes;\n var inputEle = this.inputEle;\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class':\n this.inputWrapper.classList.add(htmlAttributes[htmlAttr]);\n break;\n case 'disabled':\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n break;\n case 'readonly':\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n break;\n case 'style': {\n var styles = htmlAttributes[htmlAttr];\n this.inputWrapper.style.cssText = '';\n if (styles) {\n styles.split(';').forEach(function (styleProperty) {\n var _a = styleProperty.split(':').map(function (part) { return part.trim(); }), property = _a[0], value = _a[1];\n if (property && value) {\n _this.inputWrapper.style.setProperty(property, value);\n }\n });\n }\n break;\n }\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(htmlAttributes[htmlAttr], inputEle);\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n /* To set enable property */\n MultiColumnComboBox.prototype.setEnable = function () {\n Input.setEnabled(!this.disabled, this.inputEle);\n if (!this.disabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.setAriaDisabled('false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.setAriaDisabled('true');\n }\n };\n MultiColumnComboBox.prototype.setAriaDisabled = function (value) {\n this.inputEle.setAttribute('aria-disabled', value);\n this.inputWrapper.setAttribute('aria-disabled', value);\n };\n MultiColumnComboBox.prototype.updateFieldValue = function (fieldValue, dataObj) {\n var fieldVal = getValue(fieldValue, dataObj).toString();\n return fieldVal;\n };\n MultiColumnComboBox.prototype.initValue = function (isRerender, isValue, isInitial) {\n var _this = this;\n var prevItemData = this.gridObj.getSelectedRecords()[0];\n var prevItemEle = this.gridObj.getSelectedRows()[0];\n var item;\n var currentValue;\n var currentText;\n var currentIndex;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = this.value ? this.value.toString() : this.value;\n this.isProtectedOnChange = prevOnChange;\n var updateValues = function (dataList) {\n var result = _this.updateCurrentValues(item, dataList);\n currentValue = result.currentValue;\n currentText = result.currentText;\n currentIndex = result.currentIndex;\n };\n if ((!isRerender && (!isNOU(this.value) || !isNOU(this.text))) || (isRerender && isValue !== undefined)) {\n var value_1 = isRerender ? (isValue ? this.value : this.text) : (!isNOU(this.value) ? this.value : this.text);\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var filteredData = dataLists.filter(function (item) {\n var fieldVal = item ? (_this.updateFieldValue(isRerender ? (isValue ? _this.fields.value :\n _this.fields.text) : !isNOU(_this.value) ? _this.fields.value : _this.fields.text, item)) : null;\n return fieldVal === value_1;\n });\n if (filteredData.length > 0) {\n item = filteredData[0];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n }\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n item = this.dataSource.filter(function (data) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, data);\n return fieldVal === value_1;\n })[0];\n updateValues(this.dataSource);\n }\n }\n else if (!isNOU(this.index)) {\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n item = dataLists[_this.index];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n if (!this.fields.groupBy) {\n item = this.dataSource[this.index];\n updateValues(this.dataSource);\n }\n else {\n setTimeout(function () {\n var rows = _this.gridObj.getRows();\n if (rows && rows.length > 0) {\n var rowData = _this.gridObj.getRowInfo(rows[_this.index]).rowData;\n var value = _this.fields.value;\n for (var i = 0; i < rows.length; i++) {\n if (rowData && rowData[parseInt(value.toString(), 10)] ===\n _this.dataSource[parseInt(i.toString(), 10)][parseInt(value.toString(), 10)]) {\n item = rowData;\n updateValues(_this.dataSource);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n break;\n }\n }\n }\n });\n }\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n }\n };\n MultiColumnComboBox.prototype.updateChangeEvent = function (item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial) {\n var fieldValue = item ? this.updateFieldValue(this.fields.value, item) : null;\n var ChangeEventArgs = {\n value: item ? fieldValue : null,\n itemData: { text: currentText, value: currentValue },\n item: this.getDataByValue(this.value),\n previousItemData: prevItemData,\n previousItemElement: prevItemEle,\n itemElement: this.inputWrapper,\n event: null,\n isInteracted: !isRerender\n };\n this.updateValues(currentValue, currentText, currentIndex, ChangeEventArgs, isInitial);\n };\n MultiColumnComboBox.prototype.updateCurrentValues = function (item, dataList) {\n if (!isNOU(item)) {\n var fieldText = this.updateFieldValue(this.fields.text, item);\n var fieldValue = this.updateFieldValue(this.fields.value, item);\n Input.setValue(fieldText, this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: fieldValue,\n currentText: fieldText,\n currentIndex: dataList.indexOf(item)\n };\n }\n return {\n currentValue: null,\n currentText: null,\n currentIndex: null\n };\n };\n MultiColumnComboBox.prototype.renderPopup = function () {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_options', className: MULTICOLUMNLIST + ' e-popup ' + (this.cssClass !== null ? this.cssClass : '')\n });\n attributes(this.popupEle, { 'aria-label': this.element.id, 'role': 'dialog' });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n prepend([this.popupDiv], this.popupEle);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n var popupHeight = this.getSize(false);\n this.popupEle.style.maxHeight = popupHeight;\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n this.popupDiv.style.maxHeight = popupHeight;\n this.updateGridHeight();\n this.popupEle.style.visibility = 'hidden';\n this.isInitialRender = true;\n };\n MultiColumnComboBox.prototype.updateGridHeight = function (isFilter, autoHeight) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n this.popupRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (this.popupRowHeight < this.prevGridHeight ? (this.popupRowHeight + scrollBarHeight) + 'px' : this.prevGridHeight + 'px') : this.prevGridHeight + 'px';\n }\n else {\n this.prevGridHeight = this.popupDiv.getBoundingClientRect().height - this.popupDiv.querySelector('.e-gridheader').getBoundingClientRect().height;\n height = this.prevGridHeight + 'px';\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.height = height;\n this.isProtectedOnChange = prevOnChange;\n };\n MultiColumnComboBox.prototype.createPopup = function (element) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.getSize(true),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n },\n open: function () {\n _this.inputEle.focus();\n _this.updateClearIconState();\n }\n });\n };\n MultiColumnComboBox.prototype.setFooterTemplate = function () {\n if (this.footer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], 'e-popup-footer');\n }\n var compiledString = this.getTemplateFunction(this.footerTemplate);\n var dataCount = this.dataSource.length;\n var tempArr = compiledString({ count: dataCount }, this, 'footerTemplate', this.element.id + 'footerTemplate', this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n MultiColumnComboBox.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.element.id + '_actionFailure' : this.element.id + '_noRecords';\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.getTemplateFunction(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request Failed' };\n this.l10n = new L10n('multicolumncombobox', l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], 'e-no-records');\n prepend([this.noRecord], this.popupDiv);\n this.popupObj.refreshPosition();\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n MultiColumnComboBox.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n /*To calculate the width and height of the popup */\n MultiColumnComboBox.prototype.getSize = function (ispopupWidth) {\n var currentDimension = ispopupWidth ? this.popupWidth : this.popupHeight;\n var size = formatUnit(currentDimension);\n if (size.includes('%')) {\n var dimensionValue = ispopupWidth ? this.inputWrapper.offsetWidth : document.documentElement.clientHeight;\n size = (dimensionValue * parseFloat(size) / 100).toString() + 'px';\n }\n else if (typeof currentDimension === 'string') {\n size = currentDimension.match(/px|em/) ? currentDimension : size;\n }\n return size;\n };\n MultiColumnComboBox.prototype.selectedGridRow = function (row, e, isKeyNav) {\n var _this = this;\n var eventArgs = {\n isInteracted: e ? true : false,\n item: this.gridObj.getSelectedRecords()[0],\n itemElement: row,\n itemData: this.gridObj.getSelectedRecords()[0],\n event: e,\n cancel: false\n };\n var selectedRecords = this.gridObj.getSelectedRecords()[0];\n var dataText = selectedRecords ? this.updateFieldValue(this.fields.text, selectedRecords) : '';\n var dataValue = selectedRecords ? this.updateFieldValue(this.fields.value, selectedRecords) : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: selectedRecords ? dataText : '', value: selectedRecords ? dataValue : '' },\n event: e,\n cancel: false,\n value: selectedRecords ? dataValue : '',\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && eventArgs.itemData) {\n var event_1 = e;\n var isUpdateVal = event_1.key === 'Enter' || event_1.key === 'Tab' || event_1.shiftKey && event_1.key === 'Tab' || event_1.altKey && event_1.key === 'ArrowUp';\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.updateValues(selectedRecords ? dataValue : '', selectedRecords ? dataText : '', _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecords ? dataText : '', _this.inputEle, _this.floatLabelType, _this.showClearButton);\n _this.setHiddenValue();\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.hidePopup(e);\n }\n }\n });\n };\n MultiColumnComboBox.prototype.updateValues = function (value, text, index, eventArgs, isInitial) {\n this.previousItemElement = eventArgs.itemElement;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = text || this.text;\n this.value = value || this.value;\n this.index = this.selectedRowIndex = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\n this.setHiddenValue();\n if (!isInitial) {\n this.triggerChangeEvent(eventArgs);\n }\n };\n MultiColumnComboBox.prototype.triggerChangeEvent = function (eventArgs) {\n this.trigger('change', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n });\n };\n MultiColumnComboBox.prototype.inputHandler = function (e) {\n var _this = this;\n this.showPopup(null, true);\n this.updateClearIconState();\n if (this.allowFiltering) {\n this.typedString = e.target.value.toLowerCase();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.typedString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.setGridData(dataSource, query);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !_this.isCustomFilter) {\n _this.setGridData(_this.dataSource, _this.query ? _this.query.clone() : null);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, data, exactData;\n return __generator(this, function (_c) {\n if (this.dataSource instanceof DataManager) {\n (_a = this.filterDatas(this.mainData, inputValue), data = _a.data, exactData = _a.exactData);\n }\n else if (Array.isArray(this.dataSource)) {\n (_b = this.filterDatas(this.dataSource, inputValue), data = _b.data, exactData = _b.exactData);\n }\n this.selectFilteredRows(data, exactData);\n return [2 /*return*/];\n });\n });\n };\n MultiColumnComboBox.prototype.filterDatas = function (dataSource, inputValue) {\n var _this = this;\n var data = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return inputValue && fieldText.toLowerCase().startsWith(inputValue.toLowerCase());\n });\n var exactData = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return fieldText === inputValue;\n });\n return { data: data, exactData: exactData };\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data, exactData) {\n if (data.length <= 0) {\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n return;\n }\n this.matchedContent = data[0];\n this.exactMatchedContent = exactData[0];\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function () {\n if (this.gridData && this.gridData.length > 0) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n this.gridObj.dataSource = this.gridData;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n };\n MultiColumnComboBox.prototype.wireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.gridEle, 'click', this.onMouseClick, this);\n EventHandler.add(this.inputEle, 'input', this.inputHandler, this);\n EventHandler.add(this.inputEle, 'focus', this.focusIn, this);\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown', this.clearText, this);\n }\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.keyboardModule = new KeyboardEvents(this.gridEle, {\n keyAction: this.gridKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n MultiColumnComboBox.prototype.unWireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.inputEle, 'input', this.inputHandler);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.gridEle, 'click', this.onMouseClick);\n if (this.showClearButton) {\n EventHandler.remove(this.inputObj.clearButton, 'mousedown', this.clearText);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n MultiColumnComboBox.prototype.preventBlur = function (e) {\n e.preventDefault();\n };\n MultiColumnComboBox.prototype.dropDownClick = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.showPopup(e);\n }\n };\n MultiColumnComboBox.prototype.onMouseClick = function (e) {\n var target = e.target;\n var row = closest(target, '.e-row');\n var selectedRowIndex = this.gridObj.selectedRowIndex;\n if (row) {\n if (selectedRowIndex >= 0) {\n this.selectedGridRow(row, e);\n }\n else {\n this.gridObj.selectedRowIndex = this.gridObj.getRows().indexOf(row);\n this.gridObj.selectRow(this.gridObj.selectedRowIndex);\n this.hidePopup(e);\n }\n }\n };\n MultiColumnComboBox.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!target.closest('.e-multicolumn-list')) {\n this.focusOut();\n }\n return;\n }\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val && e.code !== 'Enter') {\n this.inputEle.value = null;\n this.setProperties({ value: null, index: null, text: null }, true);\n }\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues && val) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var fieldText = this.updateFieldValue(this.fields.text, this.matchedContent);\n var fieldValue = this.updateFieldValue(this.fields.value, this.matchedContent);\n this.inputEle.value = fieldText;\n this.value = fieldValue;\n var selectIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.index = selectIndex;\n this.text = fieldText;\n this.gridObj.selectRow(selectIndex);\n this.selectedGridRow(this.gridObj.getRowByIndex(selectIndex), e);\n this.previousItemElement = this.gridObj.getSelectedRows()[0];\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n if (this.isDataFiltered) {\n this.inputEle.value = '';\n var ChangeEventArgs = {\n value: null,\n itemData: { text: null, value: null },\n item: null,\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement,\n itemElement: null,\n event: e,\n isInteracted: true,\n cancel: false\n };\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = this.value = this.index = null;\n this.gridObj.refreshColumns();\n this.isProtectedOnChange = prevOnChange;\n this.triggerChangeEvent(ChangeEventArgs);\n this.isDataFiltered = false;\n this.matchedContent = this.matchedRowEle = null;\n }\n }\n };\n MultiColumnComboBox.prototype.clearText = function (e) {\n this.isDataFiltered = true;\n this.updateValuesOnInput(e, null, true);\n };\n MultiColumnComboBox.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.getSize(true) });\n this.popupObj.refreshPosition();\n }\n };\n /* To set cssclass for the dropdowntree */\n MultiColumnComboBox.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n MultiColumnComboBox.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.focusOut();\n }\n break;\n case 'altDown':\n if (!this.isPopupOpen) {\n this.showPopup(e);\n this.updateSelectedItem(e, false);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n this.updateSelectedItem(e, true, true);\n break;\n case 'enter':\n this.updateValuesOnInput(null, e, false, true);\n this.focusIn(e);\n break;\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.gridKeyActionHandler = function (e, isGroup) {\n var keyActionMap = {\n 'ArrowDown': 'moveDown',\n 'ArrowUp': 'moveUp',\n 'End': 'end',\n 'Home': 'home',\n 'Tab': 'tab',\n 'Escape': 'escape',\n 'Shift+Tab': 'shiftTab',\n 'Alt+ArrowUp': 'altUp'\n };\n if (isGroup) {\n var key = \"\" + (e.altKey ? 'Alt+' : '') + (e.shiftKey ? 'Shift+' : '') + e.key;\n e.action = keyActionMap[key] || e.action;\n }\n switch (e.action) {\n case 'escape':\n case 'tab':\n case 'shiftTab':\n case 'altUp':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (e.action !== 'escape') {\n this.updateSelectedItem(e);\n }\n this.hidePopup(e);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.updateSelectedItem = function (e, isUpdateIndex, isInputTarget) {\n var _this = this;\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index_1 = this.fields.groupBy ? (this.gridObj.selectedRowIndex || 0) : this.gridObj.selectedRowIndex;\n var dataLength = this.dataSource instanceof DataManager ? this.remoteDataLength :\n this.dataSource.length;\n if ((index_1 === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index_1 = 0;\n }\n else if ((index_1 >= (dataLength - 1) && e.action === 'moveDown') || (e.action === 'end')) {\n index_1 = dataLength - 1;\n }\n else if (e.action === 'moveDown' && (index_1 >= 0 && index_1 <= (dataLength - 1)) && (this.fields.groupBy || isInputTarget)) {\n index_1 += 1;\n }\n else if (e.action === 'moveUp' && index_1 > 0 && (this.fields.groupBy) || isInputTarget) {\n index_1 -= 1;\n }\n if (!this.enableVirtualization) {\n this.selectRow(e, isUpdateIndex, index_1);\n }\n else {\n setTimeout(function () { _this.selectRow(e, isUpdateIndex, index_1); });\n }\n }\n };\n MultiColumnComboBox.prototype.selectRow = function (e, isUpdateIndex, index) {\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n this.gridObj.selectRow(index);\n this.gridObj.selectedRowIndex = index;\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (isUpdateIndex) {\n this.selectedGridRow(this.gridObj.getRows()[parseInt(index.toString(), 10)], e, true);\n }\n };\n MultiColumnComboBox.prototype.updateClearIconState = function () {\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = this.inputEle.value === '' ? 'none' : 'flex';\n }\n };\n MultiColumnComboBox.prototype.updateDynamicDataSource = function (newDataSource, oldDataSource) {\n if (this.gridObj) {\n var dataLength_1;\n this.isShowSpinner = true;\n this.setGridData(newDataSource);\n var isRemoteData = oldDataSource instanceof DataManager;\n if (isRemoteData) {\n oldDataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataLength_1 = e.result.length;\n });\n }\n else {\n dataLength_1 = oldDataSource.length;\n }\n if (dataLength_1 === 0) {\n this.popupDiv.appendChild(this.gridEle);\n }\n }\n };\n /**\n * Sets the focus to the component for interaction.component for interaction.\n *\n * @param {FocusEvent | MouseEvent | KeyboardEvent | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusIn = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n addClass([this.inputWrapper], [INPUTFOCUS]);\n this.inputEle.focus();\n this.updateClearIconState();\n this.trigger('focus', e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @param {MouseEvent | KeyboardEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusOut = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n if (this.inputWrapper) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = 'none';\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n }\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isInputOpen - Specifies whether the input is open or not.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.showPopup = function (e, isInputOpen) {\n var _this = this;\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isPopupOpen) {\n _this.isPopupOpen = true;\n _this.popupObj.refreshPosition();\n addClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (!isInputOpen) {\n if ((_this.value || _this.text || _this.index)) {\n _this.gridObj.selectRow(_this.selectedRowIndex);\n }\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n var firstRow = contentEle.querySelector('.e-row');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (firstRow) {\n _this.inputEle.setAttribute('aria-activedescendant', firstRow.getAttribute('data-uid'));\n }\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n _this.customFilterQuery = null;\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.allowFiltering ? _this.mainData : _this.gridData;\n var noRecordEle = _this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n _this.popupDiv.removeChild(noRecordEle);\n removeClass([_this.popupDiv], [NODATA]);\n }\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n this.hiddenElement = null;\n this.dropdownElement = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {MultiColumnComboBoxModel} newProp - Specifies new properties\n * @param {MultiColumnComboBoxModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n MultiColumnComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var gridColumns = void 0;\n switch (prop) {\n case 'width':\n case 'popupWidth':\n if (prop === 'width') {\n this.setElementWidth(newProp.width);\n }\n if (this.popupObj) {\n this.popupObj.element.style.width = this.getSize(true);\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var height = this.getSize(false);\n this.popupObj.element.style.maxHeight = height;\n this.popupDiv.style.maxHeight = height;\n this.gridObj.height = height;\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputEle);\n break;\n case 'disabled':\n Input.setEnabled(!this.disabled, this.inputEle);\n this.setEnable();\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, this.floatLabelType, this.placeholder);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputEle, this.inputObj);\n break;\n case 'value':\n this.initValue(true, true);\n break;\n case 'text':\n this.initValue(true, false);\n break;\n case 'index':\n this.initValue(true);\n break;\n case 'sortOrder':\n if (this.gridObj) {\n this.gridObj.sortSettings.columns = [{\n field: this.fields.text, direction: newProp.sortOrder === SortOrder.Ascending ?\n SortOrder.Ascending : SortOrder.Descending\n }];\n }\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'noRecordsTemplate':\n this.l10nUpdate();\n break;\n case 'actionFailureTemplate':\n this.l10nUpdate(true);\n break;\n case 'footerTemplate':\n this.setFooterTemplate();\n break;\n case 'itemTemplate':\n if (this.gridObj) {\n this.gridObj.rowTemplate = newProp.itemTemplate;\n }\n break;\n case 'groupTemplate':\n this.groupTemplate = newProp.groupTemplate;\n this.updateGroupByField();\n break;\n case 'enableRtl':\n if (this.gridObj && this.popupObj) {\n this.gridObj.enableRtl = newProp.enableRtl;\n Input.setEnableRtl(newProp.enableRtl, [this.inputWrapper]);\n this.popupObj.enableRtl = newProp.enableRtl;\n }\n break;\n case 'dataSource':\n this.updateDynamicDataSource(newProp.dataSource, oldProp.dataSource);\n break;\n case 'query':\n this.isMainDataUpdated = false;\n this.setGridData(this.dataSource);\n break;\n case 'gridSettings':\n if (this.gridObj) {\n this.gridObj.gridLines = newProp.gridSettings.gridLines;\n this.gridObj.rowHeight = newProp.gridSettings.rowHeight;\n this.gridObj.enableAltRow = newProp.gridSettings.enableAltRow;\n this.gridObj.allowResizing = newProp.gridSettings.allowResizing;\n if (!(isNOU(newProp.gridSettings.allowTextWrap))) {\n this.gridObj.allowTextWrap = newProp.gridSettings.allowTextWrap;\n }\n if (!(isNOU(newProp.gridSettings.textWrapMode))) {\n this.gridObj.textWrapSettings.wrapMode = newProp.gridSettings.textWrapMode;\n }\n }\n break;\n case 'fields':\n this.fields = newProp.fields;\n this.updateGroupByField();\n break;\n case 'filterType':\n this.filterType = newProp.filterType;\n break;\n case 'enableVirtualization':\n if (this.gridObj) {\n this.enableVirtualization = this.gridObj.enableVirtualization = newProp.enableVirtualization;\n }\n break;\n case 'sortType':\n if (this.gridObj) {\n this.sortType = newProp.sortType;\n this.gridObj.allowMultiSorting = this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting;\n }\n break;\n case 'allowFiltering':\n this.allowFiltering = newProp.allowFiltering;\n break;\n case 'allowSorting':\n if (this.gridObj) {\n this.allowSorting = this.gridObj.allowSorting = newProp.allowSorting;\n }\n break;\n case 'columns':\n if (this.gridObj) {\n gridColumns = this.getGridColumns();\n this.gridObj.columns = gridColumns;\n }\n break;\n case 'locale':\n this.isLocaleChanged = true;\n break;\n }\n }\n };\n __decorate([\n Property([])\n ], MultiColumnComboBox.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"index\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiColumnComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('')\n ], MultiColumnComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({ text: null, value: null, groupBy: null }, FieldSettings)\n ], MultiColumnComboBox.prototype, \"fields\", void 0);\n __decorate([\n Collection([], Column)\n ], MultiColumnComboBox.prototype, \"columns\", void 0);\n __decorate([\n Complex({}, GridSettings)\n ], MultiColumnComboBox.prototype, \"gridSettings\", void 0);\n __decorate([\n Property(FilterType.StartsWith)\n ], MultiColumnComboBox.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], MultiColumnComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(SortOrder.None)\n ], MultiColumnComboBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(SortType.OneColumn)\n ], MultiColumnComboBox.prototype, \"sortType\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], MultiColumnComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request Failed')\n ], MultiColumnComboBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiColumnComboBox.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property({})\n ], MultiColumnComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"change\", void 0);\n MultiColumnComboBox = __decorate([\n NotifyPropertyChanges\n ], MultiColumnComboBox);\n return MultiColumnComboBox;\n}(Component));\nexport { MultiColumnComboBox };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","verb","n","v","op","f","TypeError","_","y","t","call","label","ops","pop","trys","push","g","sent","throw","return","Symbol","iterator","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","Resize","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","Property","ChildProperty","Column","GridSettings","Both","Event","MultiColumnComboBox","options","element","_this","gridInject","isShowSpinner","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","exactMatchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderInput","gridData","setGridData","dataSource","renderGrid","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","query","trigger","cancel","args","DataManager","showHideSpinner","executeQuery","getQuery","isMainDataUpdated","mainData","remoteDataLength","updateGridDataSource","catch","dataManager","listItems","executeLocal","filterQuery","isCustomFilter","allowFiltering","clone","Query","filterType","typedString","fields","text","where","customFilterQuery","setHiddenValue","hiddenElement","innerHTML","existingOption","querySelector","newOption","document","setAttribute","toString","textContent","gridColumns","getGridColumns","sortOrder","toLowerCase","gridObj","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowResizing","allowMultiSorting","sortType","rowTemplate","itemTemplate","beforeDataBound","dataBound","onDataBound","actionFailure","onActionFailure","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","direction","Ascending","Descending","appendTo","index","initValue","requestType","updateRowSelection","isArray","rows","isDataFiltered","rowHeight_1","forEach","row","rowElement","getRowElementByUID","uid","getBoundingClientRect","popupRowHeight","parseFloat","updateGridHeight","popupObj","refreshPosition","scrollTop","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","item","keys","String","flattenedValues","indexOf","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","every","map","_a","header","width","textAlign","format","displayAsCheckBox","template","headerTemplate","customAttributes","headerText","type","undefined","groupByField","isGroupByValid","classList","add","allowGrouping","groupSettings","showDropArea","groupTemplate","captionTemplate","isVue","isLocaleChanged","unWireEvents","dataCount","popupChild","hasNoDataClass","contains","l10nUpdate","removeChild","addClass","removeClass","noRecordEle","isInitialRender","gridContentRow","hide","popupEle","style","visibility","rowElements","querySelectorAll","inputEle","setTimeout","isShow","showSpinner","dropdownElement","hideSpinner","allowedAttributes","tagName","getAttribute","attributes","aria-expanded","aria-readOnly","readonly","aria-disabled","disabled","autocomplete","autocapitalize","spellcheck","tabindex","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","aria-hidden","class","prepend","name","removeAttribute","hasAttribute","setElementWidth","createSpinner","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","styles","cssText","split","styleProperty","part","trim","property","setProperty","defaultAttr","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","dataLists","filteredData","filter","updateChangeEvent","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","createPopup","footerTemplate","setFooterTemplate","getSize","maxHeight","Math","round","footer","isFilter","autoHeight","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","tempArr","getTemplateFunction","count","isStringTemplate","slice","append","noRecord","noRecordsTemplate","actionFailureTemplate","templateId","templatestring","l10nLocale","l10n","L10n","locale","getConstant","content","tempEle","select","outerHTML","compile","ispopupWidth","currentDimension","popupWidth","size","includes","offsetWidth","documentElement","isKeyNav","eventArgs","selectedRecords","dataText","dataValue","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","eventArgs_1","preventDefaultAction","updateData","updateInputValue","inputValue","_b","exactData","_c","filterDatas","selectFilteredRows","startsWith","selectedIndex","currentViewData","getRowByIndex","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","remove","destroy","preventDefault","focusedEle","closest","focusOut","isClearVal","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","isKeyDown","val","code","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","dataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","firstElementChild","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","NotifyPropertyChanges","Component"],"mappings":"kFAAA,IAAIA,GAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,uBAA2BC,QAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIK,KAAKL,GAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASO,KAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,GAAIH,QAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,GAA2HjB,GAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,CACrH,IAAuB,gBAAZM,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,OACpH,KAAK,GAAIQ,GAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,EAChJ,OAAOH,GAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAE5DM,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,MAAO,KAAKD,IAAMA,EAAIE,UAAU,SAAUC,EAASC,GAC/C,QAASC,GAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,QAASC,GAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,QAASF,GAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOL,OAAS,GAAIN,GAAE,SAAUG,GAAWA,EAAQQ,EAAOL,SAAWO,KAAKR,EAAWK,GACnIH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,QAAmBS,WAGlEO,EAA4C,SAAUjB,EAASkB,GAG/D,QAASC,GAAKC,GAAK,MAAO,UAAUC,GAAK,MAAOZ,IAAMW,EAAGC,KACzD,QAASZ,GAAKa,GACV,GAAIC,EAAG,KAAM,IAAIC,WAAU,kCAC3B,MAAOC,GAAG,IACN,GAAIF,EAAI,EAAGG,IAAMC,EAAY,EAARL,EAAG,GAASI,EAAU,OAAIJ,EAAG,GAAKI,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEC,KAAKF,GAAI,GAAKA,EAAEhB,SAAWiB,EAAIA,EAAEC,KAAKF,EAAGJ,EAAG,KAAKR,KAAM,MAAOa,EAE3J,QADID,EAAI,EAAGC,IAAGL,GAAc,EAARA,EAAG,GAAQK,EAAEnB,QACzBc,EAAG,IACP,IAAK,GAAG,IAAK,GAAGK,EAAIL,CAAI,MACxB,KAAK,GAAc,MAAXG,GAAEI,SAAkBrB,MAAOc,EAAG,GAAIR,MAAM,EAChD,KAAK,GAAGW,EAAEI,QAASH,EAAIJ,EAAG,GAAIA,GAAM,EAAI,SACxC,KAAK,GAAGA,EAAKG,EAAEK,IAAIC,MAAON,EAAEO,KAAKD,KAAO,SACxC,SACI,GAAMJ,EAAIF,EAAEO,OAAML,EAAIA,EAAEnC,OAAS,GAAKmC,EAAEA,EAAEnC,OAAS,MAAkB,IAAV8B,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEG,EAAI,CAAG,UACjG,GAAc,IAAVH,EAAG,MAAcK,GAAML,EAAG,GAAKK,EAAE,IAAML,EAAG,GAAKK,EAAE,IAAM,CAAEF,EAAEI,MAAQP,EAAG,EAAI,OAC9E,GAAc,IAAVA,EAAG,IAAYG,EAAEI,MAAQF,EAAE,GAAI,CAAEF,EAAEI,MAAQF,EAAE,GAAIA,EAAIL,CAAI,OAC7D,GAAIK,GAAKF,EAAEI,MAAQF,EAAE,GAAI,CAAEF,EAAEI,MAAQF,EAAE,GAAIF,EAAEK,IAAIG,KAAKX,EAAK,OACvDK,EAAE,IAAIF,EAAEK,IAAIC,MAChBN,EAAEO,KAAKD,KAAO,UAEtBT,EAAKJ,EAAKU,KAAK5B,EAASyB,GAC1B,MAAOd,GAAKW,GAAM,EAAGX,GAAIe,EAAI,UAAeH,EAAII,EAAI,EACtD,GAAY,EAARL,EAAG,GAAQ,KAAMA,GAAG,EAAI,QAASd,MAAOc,EAAG,GAAKA,EAAG,OAAK,GAAQR,MAAM,GAvB9E,GAAsGS,GAAGG,EAAGC,EAAGO,EAA3GT,GAAMI,MAAO,EAAGM,KAAM,WAAa,GAAW,EAAPR,EAAE,GAAQ,KAAMA,GAAE,EAAI,OAAOA,GAAE,IAAOK,QAAUF,OAC3F,OAAOI,IAAMxB,KAAMS,EAAK,GAAIiB,MAASjB,EAAK,GAAIkB,OAAUlB,EAAK,IAAwB,kBAAXmB,UAA0BJ,EAAEI,OAAOC,UAAY,WAAa,MAAO1D,QAAUqD,GAmCvJM,EAAS,WAMTC,EAAiC,WACjC,QAASA,MAWT,MAHAA,GAAgB1D,UAAU2D,cAAgB,WACtCC,OAAKC,OAAOC,gBAAeC,QAAWC,OAAMC,OAAMC,WAE/CR,MAOX,SAAWS,GAIPA,EAAuB,WAAI,aAI3BA,EAAqB,SAAI,WAIzBA,EAAqB,SAAI,YAC1BA,eAAeA,kBAKlB,SAAWC,GAIPA,EAAgB,KAAI,OAIpBA,EAAqB,UAAI,YAIzBA,EAAsB,WAAI,cAC3BA,cAAcA,iBAKjB,SAAWC,GAIPA,EAAoB,UAAI,YAIxBA,EAA0B,gBAAI,mBAC/BA,aAAaA,gBAKhB,SAAWC,GAIPA,EAAe,KAAI,OAInBA,EAAkB,QAAI,UAItBA,EAAiB,OAAI,UACtBA,aAAaA,mBAIZC,GAA+B,SAAUC,GAEzC,QAASD,KACL,MAAkB,QAAXC,GAAmBA,EAAOvC,MAAMnC,KAAMU,YAAcV,KAW/D,MAbAX,GAAUoF,EAAeC,GAIzBtE,GACIuE,cACDF,EAAcvE,UAAW,WAAQ,IACpCE,GACIuE,cACDF,EAAcvE,UAAW,YAAS,IACrCE,GACIuE,cACDF,EAAcvE,UAAW,cAAW,IAChCuE,GACTG,iBAKEC,EAAwB,SAAUH,GAElC,QAASG,KACL,MAAkB,QAAXH,GAAmBA,EAAOvC,MAAMnC,KAAMU,YAAcV,KA6B/D,MA/BAX,GAAUwF,EAAQH,GAIlBtE,GACIuE,WAAS,KACVE,EAAO3E,UAAW,YAAS,IAC9BE,GACIuE,WAAS,KACVE,EAAO3E,UAAW,aAAU,IAC/BE,GACIuE,WAAS,KACVE,EAAO3E,UAAW,YAAS,IAC9BE,GACIuE,WAAS,KACVE,EAAO3E,UAAW,gBAAa,IAClCE,GACIuE,WAAS,OACVE,EAAO3E,UAAW,aAAU,IAC/BE,GACIuE,YAAS,IACVE,EAAO3E,UAAW,wBAAqB,IAC1CE,GACIuE,WAAS,OACVE,EAAO3E,UAAW,eAAY,IACjCE,GACIuE,WAAS,OACVE,EAAO3E,UAAW,qBAAkB,IACvCE,GACIuE,WAAS,OACVE,EAAO3E,UAAW,uBAAoB,IAClC2E,GACTD,iBAKEE,EAA8B,SAAUJ,GAExC,QAASI,KACL,MAAkB,QAAXJ,GAAmBA,EAAOvC,MAAMnC,KAAMU,YAAcV,KA6B/D,MA/BAX,GAAUyF,EAAcJ,GAIxBtE,GACIuE,YAAS,IACVG,EAAa5E,UAAW,mBAAgB,IAC3CE,GACIuE,WAAS,OACVG,EAAa5E,UAAW,gBAAa,IACxCE,GACIuE,WAAS,YACVG,EAAa5E,UAAW,gBAAa,IACxCE,GACIuE,YAAS,IACVG,EAAa5E,UAAW,oBAAiB,IAC5CE,GACIuE,WAASH,WAASO,OACnBD,EAAa5E,UAAW,mBAAgB,IAC3CE,GACIuE,YAAS,IACVG,EAAa5E,UAAW,oBAAiB,IAC5CE,GACI4E,WACDF,EAAa5E,UAAW,eAAY,IACvCE,GACI4E,WACDF,EAAa5E,UAAW,kBAAe,IAC1CE,GACI4E,WACDF,EAAa5E,UAAW,iBAAc,IAClC4E,GACTF,iBAcEK,EAAqC,SAAUP,GAS/C,QAASO,GAAoBC,EAASC,GAClC,GAAIC,GAAQV,EAAO3B,KAAK/C,KAAMkF,EAASC,IAAYnF,IAInD,OAHAoF,GAAMC,WAAa,GAAIzB,GACvBwB,EAAME,eAAgB,EACtBF,EAAMC,WAAWxB,gBACVuB,EAkuDX,MA/uDA/F,GAAU4F,EAAqBP,GAqB/BO,EAAoB/E,UAAUqF,UAAY,WACjCvF,KAAKmF,QAAQK,KACdxF,KAAKmF,QAAQK,GAAKC,cAAY,KAAOzF,KAAK0F,kBAE9C1F,KAAK2F,YACDC,OAAQ,SACRC,MAAO,cACPC,QAAS,gBACTC,IAAK,MACLC,SAAU,YACVC,IAAK,MACLC,MAAO,QACPC,KAAM,OACNC,SAAU,YACVC,OAAQ,WAEZrG,KAAKsG,cAAgBtG,KAAKuG,eAAiBvG,KAAKwG,oBAAsB,KACtExG,KAAKyG,eAETxB,EAAoB/E,UAAUwG,aAAe,WACzC,MAAO,2BAQXzB,EAAoB/E,UAAUwF,cAAgB,WAC1C,MAAO,uBAQXT,EAAoB/E,UAAUyG,eAAiB,WAC3C,MAAO3G,MAAK4G,cAAc,WAE9B3B,EAAoB/E,UAAUuG,YAAc,WACxC,GAAIzG,KAAK6G,kBAAmB,CACxB7G,KAAKmF,QAAQK,IAAM,UACnB,IAAIsB,GAAOC,OAAOC,aAAaC,QAAQjH,KAAK0F,gBAAkB1F,KAAKmF,QAAQK,GACrE0B,qBAAMJ,IAAmB,KAATA,GAClB9G,KAAKmH,cAAcC,KAAKC,MAAMP,IAAO,KAIjD7B,EAAoB/E,UAAUoH,OAAS,WACnCtH,KAAKuH,cACgB,MAAjBvH,KAAKwH,UACLxH,KAAKyH,YAAYzH,KAAK0H,YAE1B1H,KAAK2H,aACL3H,KAAK4H,SAAW5H,KAAK6H,cAAc,OAASC,UApRtC,oBAqRN9H,KAAK4H,SAASG,YAAY/H,KAAKgI,SAC/BhI,KAAKiI,oBACLjI,KAAKkI,cACLlI,KAAKmI,cAETlD,EAAoB/E,UAAUuH,YAAc,SAAUC,EAAYU,GAC9D,GAAIhD,GAAQpF,IACZA,MAAKqI,QAAQ,eAAiBC,QAAQ,EAAOF,MAAOA,GAAS,SAAUG,GACnE,IAAKA,EAAKD,OACN,GAAIZ,YAAsBc,eAClBpD,EAAME,eACNF,EAAMqD,iBAAgB,GAE1Bf,EAAWgB,aAAatD,EAAMuD,SAASP,IAAQlG,KAAK,SAAUJ,GAC1DsD,EAAMoC,SAAW1F,EAAEE,OACnBoD,EAAMiD,QAAQ,iBAAkBvG,EAAG,SAAUA,GACzCsD,EAAMqD,iBAAgB,GACjBrD,EAAMwD,oBACPxD,EAAMyD,SAAWzD,EAAMoC,SACvBpC,EAAM0D,iBAAmB1D,EAAMoC,SAAS7G,OACxCyE,EAAMwD,mBAAoB,GAE1BxD,EAAMwC,UACNxC,EAAM2D,2BAGfC,MAAM,SAAUlH,GACfsD,EAAMiD,QAAQ,gBAAiBvG,EAAG,YAGrC,CACD,GAAImH,GAAc,GAAIT,eAAYd,GAC9BwB,EAAa9D,EAAMuD,SAASP,GAAQe,aAAaF,EACrD7D,GAAMoC,SAAW0B,EACjB9D,EAAMiD,QAAQ,kBAAoBrG,OAAQkH,GAAa,SAAUpH,GACxDsD,EAAMwD,oBACPxD,EAAMyD,SAAWzD,EAAMoC,SACvBpC,EAAM0D,iBAAmB1D,EAAMoC,SAAS7G,OACxCyE,EAAMwD,mBAAoB,GAE1BxD,EAAMwC,UACNxC,EAAM2D,6BAO9B9D,EAAoB/E,UAAUyI,SAAW,SAAUP,GAC/C,GAAIgB,EACJ,KAAKpJ,KAAKqJ,gBAAkBrJ,KAAKsJ,eAAgB,CAC7CF,EAAchB,EAAQA,EAAMmB,QAAUvJ,KAAKoI,MAAQpI,KAAKoI,MAAMmB,QAAU,GAAIC,QAC5E,IAAIC,GAAkC,KAArBzJ,KAAK0J,YAAqB,WAAa1J,KAAKyJ,UAC7D,IAAKzJ,KAAKsJ,gBAAkBtJ,KAAK0J,aAAoC,KAArB1J,KAAK0J,YAAqB,CACtE,GAAIC,GAAU3J,KAAK2J,YAAe3J,KAAK2J,OAAOC,KAAO,EACrDR,GAAYS,MAAMF,EAAQF,EAAYzJ,KAAK0J,aAAa,GAAM,QAIlEN,GAAyC,MAA1BpJ,KAAK8J,kBAChB9J,KAAK8J,kBAAkBP,QAAUnB,EAAQA,EAAMmB,QAAUvJ,KAAKoI,MAAQpI,KAAKoI,MAAMmB,QAAU,GAAIC,QAEvG,OAAOJ,IAEXnE,EAAoB/E,UAAU6J,eAAiB,WAC3C,GAAI7C,oBAAMlH,KAAK2B,OAEX,YADA3B,KAAKgK,cAAcC,UAAY,GAGnC,IAAIC,GAAiBlK,KAAKgK,cAAcG,cAAc,SACtD,IAAKjD,oBAAMgD,IAIN,IAAKhD,oBAAMlH,KAAKgK,eAAgB,CACjC,GAAII,GAAYC,SAASxC,cAAc,SACvCuC,GAAUR,KAAO5J,KAAK4J,KACtBQ,EAAUE,aAAa,QAAStK,KAAK2B,MAAM4I,YAC3CH,EAAUE,aAAa,WAAY,IACnCtK,KAAKgK,cAAcjC,YAAYqC,QAR/BF,GAAeM,YAAcxK,KAAK4J,KAClCM,EAAeI,aAAa,QAAStK,KAAK2B,MAAM4I,aAUxDtF,EAAoB/E,UAAUyH,WAAa,WACvC,GAAIvC,GAAQpF,KACRyK,EAAczK,KAAK0K,iBACnBC,EAAY3K,KAAK2K,UAAUJ,WAAWK,aAC1C5K,MAAK6K,QAAU,GAAI/G,SACf4D,WAAY1H,KAAKwH,SACjBsD,QAASL,EACTM,aAAc/K,KAAK+K,aACnBC,oBAAoB,EACpBC,UAAWjL,KAAKkL,aAAaD,UAC7BE,UAAWnL,KAAKkL,aAAaC,UAC7BC,aAAcpL,KAAKkL,aAAaE,aAChCC,qBAAsBrL,KAAKqL,qBAC3BC,UAAWtL,KAAKsL,UAChBC,cAAgBC,aAAa,GAC7BC,cAAezL,KAAKkL,aAAaO,cACjCC,kBAAoBC,SAAU3L,KAAKkL,aAAaU,cAChDC,OAAQ7L,KAAK8L,YACbC,cAAe/L,KAAKkL,aAAaa,cACjCC,kBAA8D,oBAA3ChM,KAAKiM,SAAS1B,WAAWK,eAAuC5K,KAAK+K,aACxFmB,YAAalM,KAAKmM,aAClBC,gBAAiB,WACThH,EAAMsC,qBAAsBc,gBAAepD,EAAME,gBACjDF,EAAMqD,iBAAgB,GACtBrD,EAAME,eAAgB,IAG9B+G,UAAW,WAAcjH,EAAMkH,eAC/BC,cAAe,SAAUhE,GAAQnD,EAAMoH,gBAAgBjE,IACvDkE,eAAgBzM,KAAK0M,qBAAqBC,KAAK3M,MAC/C4M,WAAY5M,KAAK6M,iBAAiBF,KAAK3M,MACvC8M,SAAU,SAAUvE,GACZnD,EAAM8F,aAAa4B,UACnB1H,EAAM8F,aAAa4B,SAAS/J,KAAKqC,EAAOmD,IAGhDwE,YAAa,SAAUxE,GACfnD,EAAM8F,aAAa6B,aACnB3H,EAAM8F,aAAa6B,YAAYhK,KAAKqC,EAAOmD,IAGnDyE,WAAY,SAAUzE,GACdnD,EAAM8F,aAAa8B,YACnB5H,EAAM8F,aAAa8B,WAAWjK,KAAKqC,EAAOmD,MAItDvI,KAAKgI,QAAUhI,KAAK6H,cAAc,OAASrC,GAAIxF,KAAKmF,QAAQK,GAAK,IAAMC,cAAY,QAASqC,UA/Y9E,uBAgZd9H,KAAKiN,qBACDxC,EAAY9J,OAAS,IAErBX,KAAK6K,QAAQC,QAAQ,GAAGoC,cAAe,GAEzB,SAAdvC,IACA3K,KAAK6K,QAAQsC,cAAiBrC,UAAYsC,MAAOpN,KAAK2J,OAAOC,KAAMyD,UAAyB,cAAd1C,EAC9DrG,YAAUgJ,UAAYhJ,YAAUiJ,eAEpDvN,KAAK6K,QAAQ2C,SAASxN,KAAKgI,SACtBd,oBAAMlH,KAAK2B,QAAWuF,oBAAMlH,KAAK4J,OAAU1C,oBAAMlH,KAAKyN,QACvDzN,KAAK0N,UAAU,KAAM,MAAM,IAGnCzI,EAAoB/E,UAAUwM,qBAAuB,SAAUnE,GAC3D,GAAInD,GAAQpF,IAIZ,IAHyB,YAArBuI,EAAKoF,aACL3N,KAAK4N,mBAAmBrF,GAExB3I,MAAMiO,QAAQtF,EAAKuF,OAAS9N,KAAK+N,eAAgB,CACjD,GACIC,GAAc,CADPzF,GAAKuF,KAEXG,QAAQ,SAAUC,GACnB,GAAIC,GAAa/I,EAAMyF,QAAQuD,mBAAmBF,EAAIG,IAClDF,KACAH,GAAeG,EAAWG,wBAAwBzC,UAG1D7L,KAAKuO,eAAiBP,GAAeQ,WAAWxO,KAAK8L,aACrD9L,KAAKyO,kBAAiB,GAAM,GAEhCzO,KAAK0O,SAASC,kBACd3O,KAAK6K,QAAQ1F,QAAQgF,cAAc,cAAcyE,UAAY,GAEjE3J,EAAoB/E,UAAU2M,iBAAmB,SAAUtE,GACtC,UAAbA,EAAKhI,MAELgI,EAAKD,QAAS,EACVtI,KAAK6O,cACL7O,KAAK8O,gBAAgB9O,KAAK6K,QAAQkE,UAAU/O,KAAK6K,QAAQmE,kBAAmBzG,GAAM,GAClFvI,KAAKiP,UAAU1G,GACfvI,KAAKkP,QAAQ3G,KAGjBvI,KAAK2J,OAAOwF,UAEZ5G,EAAKD,QAAS,EACdtI,KAAKoP,qBAAqB7G,GAAM,KAIxCtD,EAAoB/E,UAAUmP,cAAgB,SAAUvI,EAAMwI,EAAeC,GACzE,GAAIC,GAAc,SAAU1I,GACxB,GAAI9E,KAYJ,OAXI8E,IAAwB,gBAATA,GACXlH,MAAMiO,QAAQ/G,GACdA,EAAKmH,QAAQ,SAAUwB,GAAQ,MAAOzN,GAAOoB,KAAKjB,MAAMH,EAAQwN,EAAYC,MAG5EhQ,OAAOiQ,KAAK5I,GAAMmH,QAAQ,SAAU1N,GAAO,MAAOyB,GAAOoB,KAAKjB,MAAMH,EAAQwN,EAAY1I,EAAK,GAAKvG,OAGzF,MAARuG,GACL9E,EAAOoB,KAAKuM,OAAO7I,IAEhB9E,GAEP4N,EAAkBJ,EAAY1I,EAClC,QAAoD,IAA5C8I,EAAgBC,QAAQP,KAAoE,IAA3CM,EAAgBC,QAAQN,IAErFtK,EAAoB/E,UAAU0N,mBAAqB,SAAUrF,GACzD,GAAInD,GAAQpF,IACRuI,IACeA,EAAKuF,KACXG,QAAQ,SAAUC,GACvB9I,EAAM0K,cAAc5B,EAAIpH,KAAMoH,EAAIT,UAI9CxI,EAAoB/E,UAAU4P,cAAgB,SAAUhJ,EAAM2G,GAG1D,GAFgBzN,KAAKqP,cAAcvI,EAAM9G,KAAK2B,MAC1C3B,KAAK2B,MAAM4I,WAAa,GAAIvK,KAAK4J,KAAO5J,KAAK4J,KAAKW,WAAa,IACpD,CACXvK,KAAK6K,QAAQkF,UAAUtC,EACvB,IAAIuC,GAAehQ,KAAKiQ,mBAIxB,OAHAjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAKyN,MAAQA,OACbzN,KAAKiQ,oBAAsBD,KAInC/K,EAAoB/E,UAAUgQ,UAAY,SAAUC,EAAKC,GACrD,MAAOD,GAAID,UAAU,SAAUT,GAE3B,MAAOhQ,QAAOiQ,KAAKU,GAAKC,MAAM,SAAU9P,GAAO,MAAOkP,GAAKlP,KAAS6P,EAAI7P,QAGhF0E,EAAoB/E,UAAUwK,eAAiB,WAC3C,GAAItF,GAAQpF,IACZ,OAAOA,MAAK8K,QAAQwF,IAAI,SAAUC,GAC9B,GAAInD,GAAQmD,EAAGnD,MAAOoD,EAASD,EAAGC,OAAQC,EAAQF,EAAGE,MAAOC,EAAYH,EAAGG,UAAWC,EAASJ,EAAGI,OAAQC,EAAoBL,EAAGK,kBAAmBC,EAAWN,EAAGM,SAAUC,EAAiBP,EAAGO,eAAgBC,EAAmBR,EAAGQ,gBACtO,QACI3D,MAAOA,EACP4D,WAAYR,EACZC,MAAOA,EACPC,UAAoC,KAAzBA,EAAUnG,YAAqBnF,EAAMkG,UAAY,QAAUoF,EACtEC,OAAQA,EACRC,kBAAmBA,EACnBC,SAAUA,EACVC,eAAgBA,EAChBC,iBAAkBA,EAClBE,KAAML,IAAsBD,EAAS,cAAYO,OAI7DjM,EAAoB/E,UAAU+M,mBAAqB,WAC/C,GAAIkE,GAAenR,KAAK2J,OAAOwF,QAC3BiC,EAAkC,KAAjBD,IAAwBjK,oBAAMiK,EACnD,IAAIC,EAAgB,CAC+B,oBAA3CpR,KAAKiM,SAAS1B,WAAWK,eACzB5K,KAAKgI,QAAQqJ,UAAUC,IAAI,sBAE/B,IAAItB,GAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK6K,QAAQ0G,eAAgB,EAC7BvR,KAAK6K,QAAQ2G,eACTC,cAAc,EACd3G,SAAUqG,IAEVnR,KAAK0R,eAAiBN,IACtBpR,KAAK6K,QAAQ2G,cAAcG,gBAAkB3R,KAAK0R,eAElD1R,KAAK4R,QACL5R,KAAK6K,QAAQ+G,MAAQ5R,KAAK4R,OAE9B5R,KAAKiQ,oBAAsBD,IAGnC/K,EAAoB/E,UAAUoM,YAAc,WACxC,GAAIlH,GAAQpF,IACRA,MAAK6R,kBACL7R,KAAK6R,iBAAkB,EACvB7R,KAAK8R,eACL9R,KAAKmI,aAET,IAAI4J,GAAY/R,KAAK0H,WAAW/G,OAC5BqR,EAAahS,KAAK4H,SAASuC,cAAc,uBACzC8H,EAAiBjS,KAAK4H,SAASyJ,UAAUa,SAASvO,EACtD,IAAIoO,GAAa,GAAKC,EAClBhS,KAAKmS,aACLnS,KAAK4H,SAASwK,YAAYpS,KAAKgI,SAC/BqK,YAAUrS,KAAK4H,WAAYjE,QAE1B,IAAIsO,GAAkBF,GAAa,EAAG,CACvCO,eAAatS,KAAK4H,WAAYjE,GAC9B,IAAI4O,GAAcvS,KAAK4H,SAASuC,cAAc,gBAC1CoI,IACAvS,KAAK4H,SAASwK,YAAYG,GAGlC,GAAIvS,KAAKwS,gBAAiB,CACtB,GAAIC,GAAiBzS,KAAK4H,SAASuC,cAAc,qBAC7CgB,EAAa8G,EAEbjS,KAAK4H,SAAS0G,wBAAwBzC,OAFR4G,EAC9BA,EAAenE,wBAAwBzC,OAAS,CAEpD7L,MAAKuO,eAAiBpD,EACtBnL,KAAK0O,SAASgE,OACd1S,KAAK2S,SAASC,MAAMC,WAAa,QACjC7S,KAAKwS,iBAAkB,EAE3B,GAAIM,GAAc9S,KAAK6K,QAAQ1F,QAAQ4N,iBAAiB,SACpD/S,MAAK+N,gBAAkB+E,EAAYnS,OAAS,GAA6B,KAAxBX,KAAKgT,SAASrR,OAC7CmR,EAAY,GAClBzB,UAAUC,IAAI,eAE1BtR,KAAK0H,qBAAsBc,gBAC3ByK,WAAW,WACP7N,EAAMqD,iBAAgB,MAIlCxD,EAAoB/E,UAAUuI,gBAAkB,SAAUyK,GAClDA,EACAC,cAAYnT,KAAKoT,iBAGjBC,cAAYrT,KAAKoT,kBAGzBnO,EAAoB/E,UAAUsM,gBAAkB,SAAUjE,GACtDvI,KAAKqI,QAAQ,gBAAiBE,GAC9BvI,KAAKmS,YAAW,GAChBE,YAAUrS,KAAK4H,WAAYjE,KAE/BsB,EAAoB/E,UAAUqH,YAAc,WACxC,GAAI+L,IAAqB,gBAAiB,gBAAiB,gBAAiB,eACxE,iBAAkB,aAAc,WASP,WAAzBtT,KAAKmF,QAAQoO,SACbvT,KAAKgT,SAAWhT,KAAKmF,QACjB+B,oBAAMlH,KAAKgT,SAASQ,aAAa,UACjCxT,KAAKgT,SAAS1I,aAAa,OAAQ,YAEnCpD,oBAAMlH,KAAKgT,SAASQ,aAAa,UACjCxT,KAAKgT,SAAS1I,aAAa,OAAQ,QAdvB,SAAUnF,EAASsO,GACnC,IAAK,GAAIlT,KAAOkT,GAERA,EAAW3T,eAAeS,KAA4C,IAApC+S,EAAkBzD,QAAQtP,IAAe2G,oBAAM/B,EAAQqO,aAAajT,KACtG4E,EAAQmF,aAAa/J,EAAKkT,EAAWlT,KAY/BP,KAAKgT,UACfU,gBAAiB,QACjBC,gBAAiB3T,KAAK4T,SAASrJ,WAC/BsJ,gBAAiB7T,KAAK8T,SAASvJ,WAC/BwJ,aAAc,MACdC,eAAgB,MAChBC,WAAY,QACZC,SAAU,QAIdlU,KAAKgT,SAAWhT,KAAK6H,cAAc,SAAWsM,OAASC,KAAM,UAAWnD,KAAM,UAC9EjR,KAAKmF,QAAQkP,cAAcC,aAAatU,KAAKgT,SAAUhT,KAAKmF,UAEhEnF,KAAKuU,SAAWC,QAAMC,aAClBtP,QAASnF,KAAKgT,SACd0B,SA7nBO,sDA8nBPC,eAAgB3U,KAAK2U,eACrBC,YACIC,SAAU7U,KAAK8T,SACfF,SAAU5T,KAAK4T,SACfkB,YAAa9U,KAAK8U,YAClBxJ,UAAWtL,KAAKsL,UAChByJ,gBAAiB/U,KAAK+U,gBACtBC,SAAUhV,KAAKgV,WAEpBhV,KAAK6H,eACR7H,KAAKiV,aAAejV,KAAKuU,SAASW,UAClClV,KAAKiV,aAAa5D,UAAUC,IAnoBd,sBAooBdtR,KAAKiV,aAAa3K,aAAa,aAAc,SAC7CtK,KAAKgK,cAAgBhK,KAAK6H,cAAc,UACpCsM,OACIgB,cAAe,OACfjB,SAAY,KACZkB,MAxoBI,+BA2oBZC,WAASrV,KAAKgK,eAAgBhK,KAAKiV,aACnC,IAAIK,GAAOtV,KAAKgT,SAASQ,aAAa,QAAUxT,KAAKgT,SAASQ,aAAa,QAAUxT,KAAKgT,SAASQ,aAAa,KAChHxT,MAAKgK,cAAcM,aAAa,OAAQgL,GACxCtV,KAAKgT,SAASuC,gBAAgB,QACzBvV,KAAKgK,cAAcwL,aAAa,eACjCxV,KAAKgK,cAAcM,aAAa,aAActK,KAAK0F,iBAEnD1F,KAAKmF,QAAQoO,UAAYvT,KAAK0G,gBAC9B1G,KAAKmF,QAAQ4C,YAAY/H,KAAKiV,cAElCjV,KAAKyV,gBAAgBzV,KAAKyQ,OAC1BzQ,KAAKoT,gBAAkBpT,KAAKiV,aAAa9K,cAAc,uDACvDuL,iBACIpV,OAAQN,KAAKoT,mBAGrBnO,EAAoB/E,UAAUuV,gBAAkB,SAAUE,GACtD,IAAIzO,oBAAMyO,GAAV,CAGA,GAAIC,GAAY5V,KAAKiV,YACK,iBAAfU,GACPC,EAAUhD,MAAMnC,MAAQoF,aAAWF,GAER,gBAAfA,KACZC,EAAUhD,MAAMnC,MAAQkF,EAAWG,MAAM,WAAaH,EAAaE,aAAWF,MAGtF1Q,EAAoB/E,UAAU+H,kBAAoB,WAC9C,GAAI7C,GAAQpF,KACR+V,EAAiB/V,KAAK+V,eACtB/C,EAAWhT,KAAKgT,QACpB,IAAIvT,OAAOiQ,KAAKqG,GAAgBpV,OAC5B,IAAK,GAAIqV,GAAK,EAAGzF,EAAK9Q,OAAOiQ,KAAKqG,GAAiBC,EAAKzF,EAAG5P,OAAQqV,IAAM,CACrE,GAAIC,GAAW1F,EAAGyF,EAClB,QAAQC,GACJ,IAAK,QACDjW,KAAKiV,aAAa5D,UAAUC,IAAIyE,EAAeE,GAC/C,MACJ,KAAK,WACDjW,KAAKmH,eAAgB0N,SAAS,IAAS,GACvC7U,KAAKkW,WACL,MACJ,KAAK,WACDlW,KAAKmH,eAAgByM,UAAU,IAAQ,GACvC5T,KAAKmW,UACL,MACJ,KAAK,QACD,GAAIC,GAASL,EAAeE,EAC5BjW,MAAKiV,aAAarC,MAAMyD,QAAU,GAC9BD,GACAA,EAAOE,MAAM,KAAKrI,QAAQ,SAAUsI,GAChC,GAAIhG,GAAKgG,EAAcD,MAAM,KAAKhG,IAAI,SAAUkG,GAAQ,MAAOA,GAAKC,SAAYC,EAAWnG,EAAG,GAAI5O,EAAQ4O,EAAG,EACzGmG,IAAY/U,GACZyD,EAAM6P,aAAarC,MAAM+D,YAAYD,EAAU/U,IAI3D,MAEJ,SACI,GAAIiV,IAAe,QAAS,KAAM,cAAe,OAAQ,eAAgB,iBAAkB,aAAc,YAAa,cAClG,OAAQ,YACX/G,QAAQoG,IAAa,GAAkC,IAA7BA,EAASpG,QAAQ,QACxD7P,KAAKgK,cAAcM,aAAa2L,EAAUjW,KAAK+V,eAAe,GAAKE,IAE9DW,EAAY/G,QAAQoG,IAAa,GACrB,gBAAbA,EACAzB,QAAMqC,eAAed,EAAeE,GAAWjD,GAOnDA,EAAS1I,aAAa2L,EAAUF,EAAeE,OASvEhR,EAAoB/E,UAAUgW,UAAY,WACtC1B,QAAMsC,YAAY9W,KAAK8T,SAAU9T,KAAKgT,UACjChT,KAAK8T,UAKF9T,KAAK6O,aACL7O,KAAKiP,YAEToD,YAAUrS,KAAKiV,cA5uBZ,cA6uBCjV,KAAKiV,cAAgBjV,KAAKiV,aAAa5D,UAAUa,SA5uBhD,kBA6uBDI,eAAatS,KAAKiV,eA7uBjB,kBA+uBLjV,KAAK+W,gBAAgB,UAXrBzE,eAAatS,KAAKiV,cAruBf,cAsuBHjV,KAAK+W,gBAAgB,WAa7B9R,EAAoB/E,UAAU6W,gBAAkB,SAAUpV,GACtD3B,KAAKgT,SAAS1I,aAAa,gBAAiB3I,GAC5C3B,KAAKiV,aAAa3K,aAAa,gBAAiB3I,IAEpDsD,EAAoB/E,UAAU8W,iBAAmB,SAAUC,EAAYC,GAEnE,MADeC,YAASF,EAAYC,GAAS3M,YAGjDtF,EAAoB/E,UAAUwN,UAAY,SAAU0J,EAAYC,EAASC,GACrE,GAGI7H,GACA8H,EACAC,EACAC,EANArS,EAAQpF,KACR0X,EAAe1X,KAAK6K,QAAQ8M,qBAAqB,GACjDC,EAAc5X,KAAK6K,QAAQgN,kBAAkB,GAK7C7H,EAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK2B,MAAQ3B,KAAK2B,MAAQ3B,KAAK2B,MAAM4I,WAAavK,KAAK2B,MACvD3B,KAAKiQ,oBAAsBD,CAC3B,IAAI8H,GAAe,SAAUC,GACzB,GAAI/V,GAASoD,EAAM4S,oBAAoBvI,EAAMsI,EAC7CR,GAAevV,EAAOuV,aACtBC,EAAcxV,EAAOwV,YACrBC,EAAezV,EAAOyV,aAE1B,KAAML,KAAgBlQ,oBAAMlH,KAAK2B,SAAWuF,oBAAMlH,KAAK4J,QAAYwN,OAA0BlG,KAAZmG,EAAwB,CACrG,GAAIY,GAAUb,EAAcC,EAAUrX,KAAK2B,MAAQ3B,KAAK4J,KAAU1C,oBAAMlH,KAAK2B,OAAsB3B,KAAK4J,KAAlB5J,KAAK2B,OACtFuF,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsBc,eACtDxI,KAAK0H,WAAWgB,aAAa,GAAIc,UAAOtH,KAAK,SAAUJ,GAEnD,GAAIoW,GAAYpW,EAAEE,OACdmW,EAAeD,EAAUE,OAAO,SAAU3I,GAG1C,OAFeA,EAAQrK,EAAM4R,iBAAiBI,EAAcC,EAAUjS,EAAMuE,OAAOhI,MAC/EyD,EAAMuE,OAAOC,KAAS1C,oBAAM9B,EAAMzD,OAA8ByD,EAAMuE,OAAOC,KAAlCxE,EAAMuE,OAAOhI,MAA2B8N,GAAS,QAC5EwI,GAEpBE,GAAaxX,OAAS,IACtB8O,EAAO0I,EAAa,GACpBL,EAAaI,GACb9S,EAAMiT,kBAAkB5I,EAAMiI,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9GlS,EAAMyF,QAAQkF,UAAU3K,EAAMqI,WAIhCvG,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsB9H,SAC3D6P,EAAOzP,KAAK0H,WAAW0Q,OAAO,SAAUtR,GAGpC,MAFe1B,GAAM4R,iBAAiBI,EAAcC,EAAUjS,EAAMuE,OAAOhI,MAAQyD,EAAMuE,OAAOC,KAC3F1C,oBAAM9B,EAAMzD,OAA8ByD,EAAMuE,OAAOC,KAAlCxE,EAAMuE,OAAOhI,MAA2BmF,KAC9CmR,IACrB,GACHH,EAAa9X,KAAK0H,iBAGhBR,qBAAMlH,KAAKyN,UACZvG,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsBc,eACtDxI,KAAK0H,WAAWgB,aAAa,GAAIc,UAAOtH,KAAK,SAAUJ,GAEnD,GAAIoW,GAAYpW,EAAEE,MAClByN,GAAOyI,EAAU9S,EAAMqI,OACvBqK,EAAaI,GACb9S,EAAMiT,kBAAkB5I,EAAMiI,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9GlS,EAAMyF,QAAQkF,UAAU3K,EAAMqI,UAG5BvG,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsB9H,SACtDI,KAAK2J,OAAOwF,QAKb8D,WAAW,WACP,GAAInF,GAAO1I,EAAMyF,QAAQkE,SACzB,IAAIjB,GAAQA,EAAKnN,OAAS,EAGtB,IAAK,GAFD2X,GAAUlT,EAAMyF,QAAQ0N,WAAWzK,EAAK1I,EAAMqI,QAAQ6K,QACtD3W,EAAQyD,EAAMuE,OAAOhI,MAChBX,EAAI,EAAGA,EAAI8M,EAAKnN,OAAQK,IAC7B,GAAIsX,GAAWA,EAAQE,SAAS7W,EAAM4I,WAAY,OAC9CnF,EAAMsC,WAAW8Q,SAASxX,EAAEuJ,WAAY,KAAKiO,SAAS7W,EAAM4I,WAAY,KAAM,CAC9EkF,EAAO6I,EACPR,EAAa1S,EAAMsC,YACnBtC,EAAMiT,kBAAkB5I,EAAMiI,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9GlS,EAAMyF,QAAQkF,UAAU3K,EAAMqI,MAC9B,WAhBhBgC,EAAOzP,KAAK0H,WAAW1H,KAAKyN,OAC5BqK,EAAa9X,KAAK0H,cAuBxB1H,MAAK0H,qBAAsBc,gBAC7BxI,KAAKqY,kBAAkB5I,EAAMiI,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,IAGrHrS,EAAoB/E,UAAUmY,kBAAoB,SAAU5I,EAAMiI,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9I,GAAIL,GAAaxH,EAAOzP,KAAKgX,iBAAiBhX,KAAK2J,OAAOhI,MAAO8N,GAAQ,KACrEgJ,GACA9W,MAAO8N,EAAOwH,EAAa,KAC3ByB,UAAY9O,KAAM4N,EAAa7V,MAAO4V,GACtC9H,KAAMzP,KAAK2Y,eAAe3Y,KAAK2B,OAC/BiX,iBAAkBlB,EAClBmB,oBAAqBjB,EACrBkB,YAAa9Y,KAAKiV,aAClB8D,MAAO,KACPC,cAAe5B,EAEnBpX,MAAK8X,aAAaP,EAAcC,EAAaC,EAAcgB,EAAiBnB,IAEhFrS,EAAoB/E,UAAU8X,oBAAsB,SAAUvI,EAAMsI,GAChE,IAAK7Q,oBAAMuI,GAAO,CACd,GAAIwJ,GAAYjZ,KAAKgX,iBAAiBhX,KAAK2J,OAAOC,KAAM6F,GACpDwH,EAAajX,KAAKgX,iBAAiBhX,KAAK2J,OAAOhI,MAAO8N,EAE1D,OADA+E,SAAM0E,SAASD,EAAWjZ,KAAKgT,SAAUhT,KAAK2U,eAAgB3U,KAAK+U,kBAE/DwC,aAAcN,EACdO,YAAayB,EACbxB,aAAcM,EAASlI,QAAQJ,IAGvC,OACI8H,aAAc,KACdC,YAAa,KACbC,aAAc,OAGtBxS,EAAoB/E,UAAUgI,YAAc,WACxClI,KAAK2S,SAAW3S,KAAK6H,cAAc,OAC/BrC,GAAIxF,KAAKmF,QAAQK,GAAK,WAAYsC,UAAWqR,+BAAmD,OAAlBnZ,KAAKgV,SAAoBhV,KAAKgV,SAAW,MAE3HvB,aAAWzT,KAAK2S,UAAYyG,aAAcpZ,KAAKmF,QAAQK,GAAI4O,KAAQ,WACnE/J,SAAShI,KAAK0F,YAAY/H,KAAK2S,UAC/B3S,KAAKqZ,YAAYrZ,KAAK2S,UACtB0C,WAASrV,KAAK4H,UAAW5H,KAAK2S,UAC1B3S,KAAKsZ,gBACLtZ,KAAKuZ,mBAET,IAAIzN,GAAc9L,KAAKwZ,SAAQ,EAE/B,IADAxZ,KAAK2S,SAASC,MAAM6G,UAAY3N,EAC5B9L,KAAKsZ,eAAgB,CACrB,GAAIzN,GAAS6N,KAAKC,MAAM3Z,KAAK4Z,OAAOtL,wBAAwBzC,OAC5DC,GAAc+J,aAAW2C,SAAS1M,EAAa,IAAMD,EAAS,MAElE7L,KAAK4H,SAASgL,MAAM6G,UAAY3N,EAChC9L,KAAKyO,mBACLzO,KAAK2S,SAASC,MAAMC,WAAa,SACjC7S,KAAKwS,iBAAkB,GAE3BvN,EAAoB/E,UAAUuO,iBAAmB,SAAUoL,EAAUC,GACjE,GAAIjO,EACJ,IAAIgO,EAAU,CACV,GAAIE,GAAiB/Z,KAAK6K,QAAQmP,aAAa7P,cAAc,cACzD8P,EAAkBF,EAAeG,aAAeH,EAAeI,YACvC,MAAxBna,KAAK2J,OAAOwF,SAAmBjI,oBAAMlH,KAAK2J,OAAOwF,WACjDnP,KAAKuO,gBAAkBvO,KAAKuO,gBAEhC1C,EAASiO,GAAc9Z,KAAKuO,eAAiBvO,KAAKoa,eAAkBpa,KAAKuO,eAAiB0L,EAAmB,KAAqCja,KAAKoa,eAAiB,SAGxKpa,MAAKoa,eAAiBpa,KAAK4H,SAAS0G,wBAAwBzC,OAAS7L,KAAK4H,SAASuC,cAAc,iBAAiBmE,wBAAwBzC,OAC1IA,EAAS7L,KAAKoa,eAAiB,IAEnC,IAAIpK,GAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK6K,QAAQgB,OAASA,EACtB7L,KAAKiQ,oBAAsBD,GAE/B/K,EAAoB/E,UAAUmZ,YAAc,SAAUlU,GAClD,GAAIC,GAAQpF,IACZA,MAAK0O,SAAW,GAAI2L,SAAMlV,GACtBsL,MAAOzQ,KAAKwZ,SAAQ,GACpBc,WAAY,WACZC,WAAaC,EAAG,OAAQC,EAAG,QAC3BC,SAAU1a,KAAKiV,aACf3J,UAAWtL,KAAKsL,UAChBqP,UAAYH,EAAG,OAAQC,EAAG,UAC1BG,mBAAoB,WACXC,UAAQC,UACT1V,EAAM6J,aAGd8L,KAAM,WACF3V,EAAM4N,SAASgI,QACf5V,EAAM6V,2BAIlBhW,EAAoB/E,UAAUqZ,kBAAoB,WAC1CvZ,KAAK4Z,OAED5Z,KAAKkb,SAA0C,kBAAxBlb,MAAKsZ,eAC5BtZ,KAAKmb,eAAe,mBAGpBnb,KAAK4Z,OAAO3P,UAAY,IAI5BjK,KAAK4Z,OAAS5Z,KAAK6H,cAAc,OACjCwK,YAAUrS,KAAK4Z,QAAS,kBAE5B,IAEIwB,GAFiBpb,KAAKqb,oBAAoBrb,KAAKsZ,iBAEpBgC,MADftb,KAAK0H,WAAW/G,QACmBX,KAAM,iBAAkBA,KAAKmF,QAAQK,GAAK,iBAAkBxF,KAAKub,qBAAkBrK,GAAWlR,KAAK4Z,OAClJwB,KACAA,EAAUxb,MAAMM,UAAUsb,MAAMzY,KAAKqY,GACrCK,SAAOL,EAASpb,KAAK4Z,SAEzB6B,UAAQzb,KAAK4Z,QAAS5Z,KAAK2S,WAE/B1N,EAAoB/E,UAAUiS,WAAa,SAAU5F,GAOjD,GANIvM,KAAK0b,SACL1b,KAAK0b,SAASzR,UAAY,GAG1BjK,KAAK0b,SAAW1b,KAAK6H,cAAc,OAER,qBAA3B7H,KAAK2b,mBAA2E,mBAA/B3b,KAAK4b,sBAA4C,CAClG,GAAI/K,GAAWtE,EAAgBvM,KAAK4b,sBAAwB5b,KAAK2b,kBAC7DE,EAAatP,EAAgBvM,KAAKmF,QAAQK,GAAK,iBAAmBxF,KAAKmF,QAAQK,GAAK,aACpFsW,EAAiBvP,EAAgB,wBAA0B,oBAE3D6O,EADiBpb,KAAKqb,oBAAoBxK,MACb7Q,KAAM8b,EAAgBD,EAAY7b,KAAKub,qBAAkBrK,GAAWlR,KAAK0b,SACtGN,KACAA,EAAUxb,MAAMM,UAAUsb,MAAMzY,KAAKqY,GACrCK,SAAOL,EAASpb,KAAK0b,eAGxB,CACD,GAAIK,IAAeJ,kBAAmB,mBAAoBC,sBAAuB,iBACjF5b,MAAKgc,KAAO,GAAIC,QAAK,sBAAuBF,EAAY/b,KAAKkc,QAC7Dlc,KAAK0b,SAASzR,UAAYsC,EACtBvM,KAAKgc,KAAKG,YAAY,yBAA2Bnc,KAAKgc,KAAKG,YAAY,qBAE/E9J,YAAUrS,KAAK0b,UAAW,gBAC1BrG,WAASrV,KAAK0b,UAAW1b,KAAK4H,UAC9B5H,KAAK0O,SAASC,mBASlB1J,EAAoB/E,UAAUmb,oBAAsB,SAAUxK,GAC1D,GAAwB,gBAAbA,GAAuB,CAC9B,GAAIuL,GAAU,EACd,KACI,GAAIC,GAAUC,SAAOzL,EAGjBuL,GAFAC,EAE8B,WAApBA,EAAQ9I,QAAuB8I,EAAQpS,UAAYoS,EAAQE,UAG3D1L,EAGlB,MAAO/O,GACHsa,EAAUvL,EAEd,MAAO2L,WAAQJ,GAIf,MAAOI,WAAQ3L,IAIvB5L,EAAoB/E,UAAUsZ,QAAU,SAAUiD,GAC9C,GAAIC,GAAmBD,EAAezc,KAAK2c,WAAa3c,KAAK8L,YACzD8Q,EAAO/G,aAAW6G,EAQtB,OAPIE,GAAKC,SAAS,KAEdD,IADqBH,EAAezc,KAAKiV,aAAa6H,YAAczS,SAAS0S,gBAAgB5C,cACpE3L,WAAWoO,GAAQ,KAAKrS,WAAa,KAE7B,gBAArBmS,KACZE,EAAOF,EAAiB5G,MAAM,SAAW4G,EAAmBE,GAEzDA,GAEX3X,EAAoB/E,UAAU4O,gBAAkB,SAAUZ,EAAKpM,EAAGkb,GAC9D,GAAI5X,GAAQpF,KACRid,GACAjE,eAAclX,EACd2N,KAAMzP,KAAK6K,QAAQ8M,qBAAqB,GACxCmB,YAAa5K,EACbwK,SAAU1Y,KAAK6K,QAAQ8M,qBAAqB,GAC5CoB,MAAOjX,EACPwG,QAAQ,GAER4U,EAAkBld,KAAK6K,QAAQ8M,qBAAqB,GACpDwF,EAAWD,EAAkBld,KAAKgX,iBAAiBhX,KAAK2J,OAAOC,KAAMsT,GAAmB,GACxFE,EAAYF,EAAkBld,KAAKgX,iBAAiBhX,KAAK2J,OAAOhI,MAAOub,GAAmB,GAC1FzE,GACAO,eAAclX,EACd2N,KAAMyN,EACNpE,YAAa5K,EACbwK,UAAY9O,KAAMsT,EAAkBC,EAAW,GAAIxb,MAAOub,EAAkBE,EAAY,IACxFrE,MAAOjX,EACPwG,QAAQ,EACR3G,MAAOub,EAAkBE,EAAY,GACrCxE,kBAAoBhP,KAAM5J,KAAK4J,KAAMjI,MAAO3B,KAAK2B,OACjDkX,oBAAqB7Y,KAAK6Y,oBAE9B7Y,MAAKqI,QAAQ,SAAU4U,EAAW,SAAUA,GACxC,IAAKA,EAAU3U,QAAU2U,EAAUvE,SAAU,CACzC,GAAI2E,GAAUvb,EACVwb,EAA8B,UAAhBD,EAAQ9c,KAAmC,QAAhB8c,EAAQ9c,KAAiB8c,EAAQE,UAA4B,QAAhBF,EAAQ9c,KAAiB8c,EAAQG,QAA0B,YAAhBH,EAAQ9c,MACxIyc,GAAaA,GAAYM,IAC1BlY,EAAM0S,aAAaoF,EAAkBE,EAAY,GAAIF,EAAkBC,EAAW,GAAI/X,EAAMyF,QAAQmE,iBAAkByJ,GAE1HjE,QAAM0E,SAASgE,EAAkBC,EAAW,GAAI/X,EAAM4N,SAAU5N,EAAMuP,eAAgBvP,EAAM2P,iBAC5F3P,EAAM2E,mBACDiT,GAAaA,GAAYM,IAC1BlY,EAAM6J,UAAUnN,OAKhCmD,EAAoB/E,UAAU4X,aAAe,SAAUnW,EAAOiI,EAAM6D,EAAOwP,EAAW3F,GAClFtX,KAAK6Y,oBAAsBoE,EAAUnE,WACrC,IAAI9I,GAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK4J,KAAOA,GAAQ5J,KAAK4J,KACzB5J,KAAK2B,MAAQA,GAAS3B,KAAK2B,MAC3B3B,KAAKyN,MAAQzN,KAAKgP,iBAAoB9H,oBAAMuG,GAAiBzN,KAAKyN,MAAbA,EACrDzN,KAAKiQ,oBAAsBD,EAC3BhQ,KAAK+J,iBACAuN,GACDtX,KAAKyd,mBAAmBR,IAGhChY,EAAoB/E,UAAUud,mBAAqB,SAAUR,GACzDjd,KAAKqI,QAAQ,SAAU4U,EAAW,SAAUA,GACpCA,EAAU3U,UAKtBrD,EAAoB/E,UAAUwd,aAAe,SAAU5b,GACnD,GAAIsD,GAAQpF,IAGZ,IAFAA,KAAK2d,UAAU,MAAM,GACrB3d,KAAKib,uBACDjb,KAAKsJ,eAAgB,CACrBtJ,KAAK0J,YAAc5H,EAAExB,OAAOqB,MAAMiJ,aAClC,IAAIgT,IACAC,sBAAsB,EACtBjU,KAAM5J,KAAK0J,YACXoU,WAAY,SAAUpW,EAAYU,EAAOuB,GACjCiU,EAAYtV,SAGhBlD,EAAMiE,gBAAiB,EACvBjE,EAAM0E,kBAAoB1B,EAAQA,EAAMmB,QAAUnB,EAClDhD,EAAMqC,YAAYC,EAAYU,KAElC2Q,MAAOjX,EACPwG,QAAQ,EAEZtI,MAAKqI,QAAQ,YAAauV,EAAa,SAAUX,GACxCA,EAAU3U,QAAW2U,EAAUY,sBAAyBzY,EAAMiE,gBAC/DjE,EAAMqC,YAAYrC,EAAMsC,WAAYtC,EAAMgD,MAAQhD,EAAMgD,MAAMmB,QAAU,QAIpFvJ,KAAK+d,iBAAiBjc,EAAExB,OAAOqB,QAEnCsD,EAAoB/E,UAAU6d,iBAAmB,SAAUC,GACvD,MAAO9c,GAAUlB,SAAM,OAAQ,GAAQ,WACnC,GAAIuQ,GAAI0N,EAAInX,EAAMoX,CAClB,OAAO9b,GAAYpC,KAAM,SAAUme,GAQ/B,MAPIne,MAAK0H,qBAAsBc,gBAC1B+H,EAAKvQ,KAAKoe,YAAYpe,KAAK6I,SAAUmV,GAAalX,EAAOyJ,EAAGzJ,KAAMoX,EAAY3N,EAAG2N,WAE7Ete,MAAMiO,QAAQ7N,KAAK0H,cACvBuW,EAAKje,KAAKoe,YAAYpe,KAAK0H,WAAYsW,GAAalX,EAAOmX,EAAGnX,KAAMoX,EAAYD,EAAGC,WAExFle,KAAKqe,mBAAmBvX,EAAMoX,IACtB,QAIpBjZ,EAAoB/E,UAAUke,YAAc,SAAU1W,EAAYsW,GAC9D,GAAI5Y,GAAQpF,IASZ,QAAS8G,KAREY,EAAW0Q,OAAO,SAAU3I,GACnC,GAAIwJ,GAAY7T,EAAM4R,iBAAiB5R,EAAMuE,OAAOC,KAAM6F,EAC1D,OAAOuO,IAAc/E,EAAUrO,cAAc0T,WAAWN,EAAWpT,iBAMlDsT,UAJLxW,EAAW0Q,OAAO,SAAU3I,GAExC,MADgBrK,GAAM4R,iBAAiB5R,EAAMuE,OAAOC,KAAM6F,KACrCuO,MAI7B/Y,EAAoB/E,UAAUme,mBAAqB,SAAUvX,EAAMoX,GAC/D,GAAIpX,EAAKnG,QAAU,EAEf,YADAX,KAAKsG,cAAgBtG,KAAKuG,eAAiBvG,KAAKwG,oBAAsB,KAG1ExG,MAAKuG,eAAiBO,EAAK,GAC3B9G,KAAKwG,oBAAsB0X,EAAU,EACrC,IAAIK,GAAgBve,KAAKkQ,UAAUlQ,KAAK6K,QAAQ2T,gBAAiBxe,KAAKuG,eACtEvG,MAAKsG,cAAgBtG,KAAK6K,QAAQ4T,cAAcF,IAEpDtZ,EAAoB/E,UAAU6I,qBAAuB,WACjD,GAAI/I,KAAKwH,UAAYxH,KAAKwH,SAAS7G,OAAS,EAAG,CAC3C2R,eAAatS,KAAK4H,WAAYjE,GAC9B,IAAI4O,GAAcvS,KAAK4H,SAASuC,cAAc,gBAC1CoI,IACAvS,KAAK4H,SAASwK,YAAYG,GAE9BvS,KAAK6K,QAAQnD,WAAa1H,KAAKwH,SAC/BxH,KAAK+N,gBAAiB,MAGtB/N,MAAKmS,aACLE,YAAUrS,KAAK4H,WAAYjE,KAGnCsB,EAAoB/E,UAAUiI,WAAa,WAClCjB,oBAAMlH,KAAKuU,SAASG,QAAQ,MAC7BgK,eAAapN,IAAItR,KAAKuU,SAASG,QAAQ,GAAI,YAAa1U,KAAK2e,YAAa3e,MAC1E0e,eAAapN,IAAItR,KAAKuU,SAASG,QAAQ,GAAI,YAAa1U,KAAK4e,cAAe5e,OAEhF0e,eAAapN,IAAIjH,SAAU,YAAarK,KAAK6e,gBAAiB7e,MAC9D0e,eAAapN,IAAItR,KAAKgI,QAAS,QAAShI,KAAK8e,aAAc9e,MAC3D0e,eAAapN,IAAItR,KAAKgT,SAAU,QAAShT,KAAK0d,aAAc1d,MAC5D0e,eAAapN,IAAItR,KAAKgT,SAAU,QAAShT,KAAKkP,QAASlP,MACnDA,KAAK+U,iBACL2J,eAAapN,IAAItR,KAAKuU,SAASwK,YAAa,YAAa/e,KAAKgf,UAAWhf,MAE7E0e,eAAapN,IAAIvK,OAAQ,SAAU/G,KAAKif,aAAcjf,MACtDA,KAAKkf,eAAiB,GAAIC,kBAAenf,KAAKiV,cAC1CmK,UAAWpf,KAAKqf,iBAAiB1S,KAAK3M,MACtC2F,WAAY3F,KAAK2F,WACjB2Z,UAAW,YAEftf,KAAKkf,eAAiB,GAAIC,kBAAenf,KAAKgI,SAC1CoX,UAAWpf,KAAKoP,qBAAqBzC,KAAK3M,MAC1C2F,WAAY3F,KAAK2F,WACjB2Z,UAAW,aAGnBra,EAAoB/E,UAAU4R,aAAe,WACpC5K,oBAAMlH,KAAKuU,SAASG,QAAQ,MAC7BgK,eAAaa,OAAOvf,KAAKuU,SAASG,QAAQ,GAAI,YAAa1U,KAAK2e,aAChED,eAAaa,OAAOvf,KAAKuU,SAASG,QAAQ,GAAI,YAAa1U,KAAK4e,gBAEpEF,eAAaa,OAAOlV,SAAU,YAAarK,KAAK6e,iBAChDH,eAAaa,OAAOvf,KAAKgT,SAAU,QAAShT,KAAK0d,cACjDgB,eAAaa,OAAOvf,KAAKiV,aAAc,QAASjV,KAAKkP,SACrDwP,eAAaa,OAAOxY,OAAQ,SAAU/G,KAAKif,cAC3CP,eAAaa,OAAOvf,KAAKgI,QAAS,QAAShI,KAAK8e,cAC5C9e,KAAK+U,iBACL2J,eAAaa,OAAOvf,KAAKuU,SAASwK,YAAa,YAAa/e,KAAKgf,WAEjEhf,KAAKkf,gBACLlf,KAAKkf,eAAeM,WAG5Bva,EAAoB/E,UAAUye,YAAc,SAAU7c,GAClDA,EAAE2d,kBAENxa,EAAoB/E,UAAU0e,cAAgB,SAAU9c,GACpD,IAAI9B,KAAK8T,WAAY9T,KAAK4T,SAA1B,CAGA,GAAI8L,GAAa1f,KAAKgI,QAAQmC,cAAc,eACxCuV,IACAA,EAAWrO,UAAUkO,OAAO,eAE5Bvf,KAAK6O,YACL7O,KAAKiP,UAAUnN,GAGf9B,KAAK2d,UAAU7b,KAGvBmD,EAAoB/E,UAAU4e,aAAe,SAAUhd,GACnD,GAAIxB,GAASwB,EAAExB,OACX4N,EAAMyR,UAAQrf,EAAQ,UACtB0O,EAAmBhP,KAAK6K,QAAQmE,gBAChCd,KACIc,GAAoB,EACpBhP,KAAK8O,gBAAgBZ,EAAKpM,IAG1B9B,KAAK6K,QAAQmE,iBAAmBhP,KAAK6K,QAAQkE,UAAUc,QAAQ3B,GAC/DlO,KAAK6K,QAAQkF,UAAU/P,KAAK6K,QAAQmE,kBACpChP,KAAKiP,UAAUnN,MAI3BmD,EAAoB/E,UAAU2e,gBAAkB,SAAU/c,GACtD,GAAIxB,GAASwB,EAAExB,MACf,IAAIN,KAAK8T,UAAY9T,KAAK4T,WAAa5T,KAAK6O,YAIxC,YAHKvO,EAAOqf,QAAQ,wBAChB3f,KAAK4f,WAIb,IAAKtf,EAAO+Q,UAAUa,SAAS,4BAA8ByN,UAAQrf,EAAQ,+BACzEwB,EAAE2d,qBAGF,KAAKnf,EAAO+Q,UAAUa,SAAS,2BAA6B5R,EAAO+Q,UAAUa,SAAS,gBAAiB,CAC9FhL,oBAAMlH,KAAK4J,OACZ5J,KAAK+d,iBAAiB/d,KAAK4J,KAE/B,IAAIiW,GAAqC,KAAxB7f,KAAKgT,SAASrR,KAC/B3B,MAAK8f,oBAAoBhe,EAAG,KAAM+d,KAI9C5a,EAAoB/E,UAAU4f,oBAAsB,SAAUC,EAAYC,EAAUC,EAAeC,OAC7E,KAAdA,IAAwBA,GAAY,EACxC,IAAIpe,GAAIie,GAA0BC,EAC9BG,EAAMD,EAAYlgB,KAAKuG,eAAiBvG,KAAKwG,mBAMjD,IALK2Z,GAAkB,UAAXre,EAAEse,OACVpgB,KAAKgT,SAASrR,MAAQ,KACtB3B,KAAKmH,eAAgBxF,MAAO,KAAM8L,MAAO,KAAM7D,KAAM,OAAQ,IAEjE5J,KAAKiP,UAAUnN,GACX9B,KAAKsG,gBAAkB2Z,GAAiBE,EAAK,CACzCnQ,EAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,CAC3B,IAAIgJ,GAAYjZ,KAAKgX,iBAAiBhX,KAAK2J,OAAOC,KAAM5J,KAAKuG,gBACzD0Q,EAAajX,KAAKgX,iBAAiBhX,KAAK2J,OAAOhI,MAAO3B,KAAKuG,eAC/DvG,MAAKgT,SAASrR,MAAQsX,EACtBjZ,KAAK2B,MAAQsV,CACb,IAAIoJ,GAAcrgB,KAAKkQ,UAAUlQ,KAAK6K,QAAQ2T,gBAAiBxe,KAAKuG,eACpEvG,MAAKyN,MAAQ4S,EACbrgB,KAAK4J,KAAOqP,EACZjZ,KAAK6K,QAAQkF,UAAUsQ,GACvBrgB,KAAK8O,gBAAgB9O,KAAK6K,QAAQ4T,cAAc4B,GAAcve,GAC9D9B,KAAK6Y,oBAAsB7Y,KAAK6K,QAAQgN,kBAAkB,GAC1D7X,KAAKiQ,oBAAsBD,MAG3B,IAAIhQ,KAAK+N,eAAgB,CACrB/N,KAAKgT,SAASrR,MAAQ,EACtB,IAAI8W,IACA9W,MAAO,KACP+W,UAAY9O,KAAM,KAAMjI,MAAO,MAC/B8N,KAAM,KACNmJ,kBAAoBhP,KAAM5J,KAAK4J,KAAMjI,MAAO3B,KAAK2B,OACjDkX,oBAAqB7Y,KAAK6Y,oBAC1BC,YAAa,KACbC,MAAOjX,EACPkX,cAAc,EACd1Q,QAAQ,GAER0H,EAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK4J,KAAO5J,KAAK2B,MAAQ3B,KAAKyN,MAAQ,KACtCzN,KAAK6K,QAAQyV,iBACbtgB,KAAKiQ,oBAAsBD,EAC3BhQ,KAAKyd,mBAAmBhF,GACxBzY,KAAK+N,gBAAiB,EACtB/N,KAAKuG,eAAiBvG,KAAKsG,cAAgB,OAIvDrB,EAAoB/E,UAAU8e,UAAY,SAAUld,GAChD9B,KAAK+N,gBAAiB,EACtB/N,KAAK8f,oBAAoBhe,EAAG,MAAM,IAEtCmD,EAAoB/E,UAAU+e,aAAe,WACrCjf,KAAK0O,WACL1O,KAAK0O,SAASvH,eAAgBsJ,MAAOzQ,KAAKwZ,SAAQ,KAClDxZ,KAAK0O,SAASC,oBAItB1J,EAAoB/E,UAAUqgB,YAAc,SAAUC,EAAUC,GAC5D,GAAIC,GAAW1gB,KAAK0O,UAAY1O,KAAKiV,aAAcjV,KAAK0O,SAASvJ,UAAYnF,KAAKiV,aAC7E/N,qBAAMuZ,IAA0B,KAAbA,GACpBnO,cAAYoO,EAAUD,EAASnK,MAAM,MAEpCpP,oBAAMsZ,IAA0B,KAAbA,GACpBnO,WAASqO,EAAUF,EAASlK,MAAM,OAG1CrR,EAAoB/E,UAAUmf,iBAAmB,SAAUvd,GACvD,OAAQA,EAAE6e,QACN,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,MACG3gB,KAAK6O,YACL7O,KAAKiP,UAAUnN,GAGf9B,KAAK4f,UAET,MACJ,KAAK,UACI5f,KAAK6O,cACN7O,KAAK2d,UAAU7b,GACf9B,KAAK4gB,mBAAmB9e,GAAG,GAE/B,MACJ,KAAK,WACL,IAAK,SACD9B,KAAK4gB,mBAAmB9e,GAAG,GAAM,EACjC,MACJ,KAAK,QACD9B,KAAK8f,oBAAoB,KAAMhe,GAAG,GAAO,GACzC9B,KAAKkP,QAAQpN,EACb,MACJ,KAAK,OACL,IAAK,MACD9B,KAAK4gB,mBAAmB9e,KAIpCmD,EAAoB/E,UAAUkP,qBAAuB,SAAUtN,EAAG+e,GAC9D,GAAIC,IACAC,UAAa,WACbC,QAAW,SACXC,IAAO,MACPC,KAAQ,OACRC,IAAO,MACPC,OAAU,SACVC,YAAa,WACbC,cAAe,QAEnB,IAAIT,EAAS,CACT,GAAItgB,IAAYuB,EAAE0b,OAAS,OAAS,KAAO1b,EAAEyb,SAAW,SAAW,IAAMzb,EAAEvB,GAC3EuB,GAAE6e,OAASG,EAAavgB,IAAQuB,EAAE6e,OAEtC,OAAQ7e,EAAE6e,QACN,IAAK,SACL,IAAK,MACL,IAAK,WACL,IAAK,QACG3gB,KAAK6O,cACL/M,EAAE2d,iBACe,WAAb3d,EAAE6e,QACF3gB,KAAK4gB,mBAAmB9e,GAE5B9B,KAAKiP,UAAUnN,GAEnB,MACJ,KAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,MACD9B,KAAK4gB,mBAAmB9e,KAIpCmD,EAAoB/E,UAAU0gB,mBAAqB,SAAU9e,EAAGyf,EAAeC,GAC3E,GAAIpc,GAAQpF,IAEZ,QADsB,KAAlBuhB,IAA4BA,GAAgB,GAC5CvhB,KAAK6O,YAAa,CAClB,GAAI4S,GAAUzhB,KAAK2J,OAAOwF,QAAWnP,KAAK6K,QAAQmE,kBAAoB,EAAKhP,KAAK6K,QAAQmE,iBACpF0S,EAAa1hB,KAAK0H,qBAAsBc,eAAcxI,KAAK8I,iBAC3D9I,KAAK0H,WAAW/G,QACF,IAAb8gB,IAAgC,aAAb3f,EAAE6e,QAAsC,WAAb7e,EAAE6e,SAAuC,SAAb7e,EAAE6e,OAC7Ec,EAAU,EAEJA,GAAYC,EAAa,GAAmB,aAAb5f,EAAE6e,QAAwC,QAAb7e,EAAE6e,OACpEc,EAAUC,EAAa,EAEL,aAAb5f,EAAE6e,QAA0Bc,GAAW,GAAKA,GAAYC,EAAa,IAAQ1hB,KAAK2J,OAAOwF,SAAWqS,GACzGC,GAAW,GAEO,WAAb3f,EAAE6e,QAAuBc,EAAU,GAAMzhB,KAAK2J,gBAAmB6X,KACtEC,GAAW,GAEVzhB,KAAKqL,qBAIN4H,WAAW,WAAc7N,EAAM2K,UAAUjO,EAAGyf,EAAeE,KAH3DzhB,KAAK+P,UAAUjO,EAAGyf,EAAeE,KAO7Cxc,EAAoB/E,UAAU6P,UAAY,SAAUjO,EAAGyf,EAAe9T,OAC5C,KAAlB8T,IAA4BA,GAAgB,GAChDvhB,KAAK6K,QAAQkF,UAAUtC,GACvBzN,KAAK6K,QAAQmE,iBAAmBvB,CAChC,IAAIiS,GAAa1f,KAAKgI,QAAQmC,cAAc,eACxCuV,IACAA,EAAWrO,UAAUkO,OAAO,eAE5BgC,GACAvhB,KAAK8O,gBAAgB9O,KAAK6K,QAAQkE,UAAUyJ,SAAS/K,EAAMlD,WAAY,KAAMzI,GAAG,IAGxFmD,EAAoB/E,UAAU+a,qBAAuB,WACjD,GAAI0G,GAAe3hB,KAAKiV,aAAa9K,cAAc,gBAC/CwX,KACAA,EAAa/O,MAAMgP,QAAkC,KAAxB5hB,KAAKgT,SAASrR,MAAe,OAAS,SAG3EsD,EAAoB/E,UAAU2hB,wBAA0B,SAAUC,EAAeC,GAC7E,GAAI/hB,KAAK6K,QAAS,CACd,GAAImX,EACJhiB,MAAKsF,eAAgB,EACrBtF,KAAKyH,YAAYqa,GACEC,YAAyBvZ,eAExCuZ,EAAcrZ,aAAa,GAAIc,UAAStH,KAAK,SAAUJ,GAEnDkgB,EAAelgB,EAAEE,OAAOrB,SAI5BqhB,EAAeD,EAAcphB,OAEZ,IAAjBqhB,GACAhiB,KAAK4H,SAASG,YAAY/H,KAAKgI,WAU3C/C,EAAoB/E,UAAUgP,QAAU,SAAUpN,GAC1C9B,KAAK8T,UAAY9T,KAAK4T,WAG1BvB,YAAUrS,KAAKiV,eA18CN,kBA28CTjV,KAAKgT,SAASgI,QACdhb,KAAKib,uBACLjb,KAAKqI,QAAQ,QAASvG,GACM,UAAxB9B,KAAK2U,gBACLH,QAAMyN,eAAejiB,KAAKgT,SAAUhT,KAAKiV,gBASjDhQ,EAAoB/E,UAAU0f,SAAW,SAAU9d,GAC/C,IAAI9B,KAAK8T,WAAY9T,KAAK4T,WAGtB5T,KAAK6O,aACL7O,KAAKiP,UAAUnN,GAEf9B,KAAKiV,cAAc,CACnB3C,eAAatS,KAAKiV,eAh+Cb,iBAi+CL,IAAI0M,GAAe3hB,KAAKiV,aAAa9K,cAAc,gBAC/CwX,KACAA,EAAa/O,MAAMgP,QAAU,QAEL,UAAxB5hB,KAAK2U,gBACLH,QAAMyN,eAAejiB,KAAKgT,SAAUhT,KAAKiV,gBAWrDhQ,EAAoB/E,UAAUyd,UAAY,SAAU7b,EAAGogB,GACnD,GAAI9c,GAAQpF,KACRmiB,GAAc7M,KAAM,SAAU8M,SAAU,KACxCnF,GAAcoF,MAAOriB,KAAK0O,SAAUqK,MAAOjX,EAAGwG,QAAQ,EAAOga,UAAWH,EAC5EniB,MAAKqI,QAAQ,OAAQ4U,EAAW,SAAUA,GACtC,IAAKA,EAAU3U,SAAWlD,EAAMyJ,YAAa,CACzCzJ,EAAMyJ,aAAc,EACpBzJ,EAAMsJ,SAASC,kBACf0D,YAAUjN,EAAM6P,eA5/CZ,gBA6/CJxB,aAAWrO,EAAM4N,UAAYU,gBAAiB,OAAQ6O,YAAand,EAAMD,QAAQK,GAAK,SAAUgd,gBAAiBpd,EAAMD,QAAQK,KAC1H0c,IACI9c,EAAMzD,OAASyD,EAAMwE,MAAQxE,EAAMqI,QACpCrI,EAAMyF,QAAQkF,UAAU3K,EAAM4J,iBAGtC,IAAIyT,GAAard,EAAMyF,QAAQmP,YAC/B,IAAIyI,EAAY,CACZ,GAAIC,GAAYD,EAAWtY,cAAc,uBACrCwY,EAAWF,EAAWtY,cAAc,SACpCuY,GACAtd,EAAM4N,SAAS1I,aAAa,wBAAyBoY,EAAUrO,cAAcb,aAAa,aAErFmP,GACLvd,EAAM4N,SAAS1I,aAAa,wBAAyBqY,EAASnP,aAAa,aAGnFpO,EAAMsJ,SAASkU,KAAK,GAAIC,aAAU5F,EAAUqF,WAAYld,EAAMuN,SAASmQ,uBAUnF7d,EAAoB/E,UAAU+O,UAAY,SAAUnN,GAChD,GAAIsD,GAAQpF,KACRmiB,GAAc7M,KAAM,UAAW8M,SAAU,KACzCnF,GAAcoF,MAAOriB,KAAK0O,SAAUqK,MAAOjX,GAAK,KAAMwG,QAAQ,EAAOga,UAAWH,GAChF7hB,EAASwB,EAAIA,EAAExB,OAAS,IAC5BN,MAAKqI,QAAQ,QAAS4U,EAAW,SAAUA,GAClCA,EAAU3U,SACXlD,EAAMyJ,aAAc,EACpByD,eAAalN,EAAM6P,eAhiDf,gBAiiDJxB,aAAWrO,EAAM4N,UAAYU,gBAAiB,UAC9CtO,EAAMsJ,SAASgE,KAAK,GAAImQ,aAAU5F,EAAUqF,YACxChiB,IAAWA,EAAO+Q,UAAUa,SAAS,4BAA8B5R,EAAO+Q,UAAUa,SAAS,eACxF9M,EAAMzD,OACPyD,EAAMyF,QAAQyV,iBAElBrN,WAAW,WAAc7N,EAAM8J,QAAQpN,MAGvCsD,EAAMwa,WAEVxa,EAAM4N,SAASuC,gBAAgB,aAC/BnQ,EAAM4N,SAASuC,gBAAgB,yBAC/BnQ,EAAM0E,kBAAoB,QAGlCmJ,WAAW,WACP,GAAI7N,EAAMyF,QAAS,CACfzF,EAAMyF,QAAQnD,WAAatC,EAAMkE,eAAiBlE,EAAMyD,SAAWzD,EAAMoC,QACzE,IAAI+K,GAAcnN,EAAMwC,SAASuC,cAAc,gBAC3CoI,KACAnN,EAAMwC,SAASwK,YAAYG,GAC3BD,eAAalN,EAAMwC,WAAYjE,KAEnCyB,EAAMqJ,kBAAiB,GAAM,KAElC,MAUPxJ,EAAoB/E,UAAU6iB,SAAW,SAAUC,EAAOvV,GACtD,GAAIuC,GAAehQ,KAAKiQ,mBACxBjQ,MAAKiQ,qBAAsB,EAC3BjQ,KAAK6K,QAAQU,aAAaC,aAAc,EACxCxL,KAAK6K,QAAQsL,WACbnW,KAAKiQ,oBAAsBD,EAC3BhQ,KAAK6K,QAAQoY,UAAUD,EAAOvV,IAQlCxI,EAAoB/E,UAAUgjB,SAAW,WACrC,MAAOljB,MAAK6K,QAAQsY,eAQxBle,EAAoB/E,UAAUyY,eAAiB,SAAUhX,GACrD,GAAIyD,GAAQpF,IACZ,QAAKkH,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsB9H,OAC/CI,KAAK0H,WAAW0Q,OAAO,SAAU3I,GAEpC,MADiBrK,GAAM4R,iBAAiB5R,EAAMuE,OAAOhI,MAAO8N,KACtC9N,IACvB,KAEGuF,oBAAMlH,KAAK0H,aAAe1H,KAAK0H,qBAAsBc,gBAC3DxI,KAAK0H,WAAWgB,aAAa,GAAIc,UAAStH,KAAK,SAAUJ,GAGrD,MADgBA,GAAEE,OACDoW,OAAO,SAAU3I,GAE9B,MADiBrK,GAAM4R,iBAAiB5R,EAAMuE,OAAOhI,MAAO8N,KACtC9N,IACvB,KAGJ,OAEXsD,EAAoB/E,UAAUsf,QAAU,WAMpC,GALAxf,KAAK8R,eACD9R,KAAK6K,UACL7K,KAAK6K,QAAQ2U,UACb4D,SAAOpjB,KAAK6K,QAAQ1F,UAEpBnF,KAAKgT,SAAU,CAGf,IAAK,GAFDqQ,IAAa,cAAe,gBAAiB,aAAc,aAAc,OAAQ,OACjF,YAAa,gBAAiB,gBAAiB,eAAgB,iBAAkB,aAAc,yBAC1FriB,EAAI,EAAGA,EAAIqiB,EAAU1iB,OAAQK,IAClChB,KAAKgT,SAASuC,gBAAgB8N,EAAUriB,GAE5ChB,MAAKgT,SAAS3B,UAAUkO,OAAO,WAC/B/K,QAAM0E,SAAS,GAAIlZ,KAAKgT,SAAUhT,KAAK2U,eAAgB3U,KAAK+U,iBAE5D/U,KAAK2S,WACL3S,KAAK2S,SAAS4C,gBAAgB,cAC9BvV,KAAK2S,SAAS4C,gBAAgB,SAE9BvV,KAAK0O,WACL1O,KAAK0O,SAAS8Q,UACd4D,SAAOpjB,KAAK0O,SAASvJ,UAErBnF,KAAKmF,QAAQoO,UAAYvT,KAAK0G,gBAC9B1G,KAAKiV,aAAaZ,cAAcC,aAAatU,KAAKmF,QAASnF,KAAKiV,cAEhEjV,KAAKuU,WACL6O,SAAOpjB,KAAKuU,SAASW,WACrBlV,KAAKuU,SAAW,MAEpBC,QAAMgL,SACFra,QAASnF,KAAKgT,SACd2B,eAAgB3U,KAAK2U,eACrBC,WAAY5U,KAAK4U,aAErBwO,SAAOpjB,KAAKiV,cACZmO,SAAOpjB,KAAK4H,UACZ5H,KAAKgT,SAAW,KAChBhT,KAAK6Y,oBAAsB,KAC3B7Y,KAAKiV,aAAahL,UAAY,GAC9BjK,KAAKiV,aAAe,KACpBjV,KAAK4H,SAAW,KAChB5H,KAAK0O,SAAW,KAChB1O,KAAK6K,QAAU,KACf7K,KAAKgI,QAAU,KACfhI,KAAK2S,SAAW,KAChB3S,KAAK4Z,OAAS,KACd5Z,KAAK0b,SAAW,KAChB1b,KAAKgK,cAAgB,KACrBhK,KAAKoT,gBAAkB,KACvB1O,EAAOxE,UAAUsf,QAAQzc,KAAK/C,OAUlCiF,EAAoB/E,UAAUojB,kBAAoB,SAAUC,EAASC,GACjE,IAAK,GAAIxN,GAAK,EAAGzF,EAAK9Q,OAAOiQ,KAAK6T,GAAUvN,EAAKzF,EAAG5P,OAAQqV,IAAM,CAC9D,GAAIyN,GAAOlT,EAAGyF,GACVvL,MAAc,EAClB,QAAQgZ,GACJ,IAAK,QACL,IAAK,aACY,UAATA,GACAzjB,KAAKyV,gBAAgB8N,EAAQ9S,OAE7BzQ,KAAK0O,WACL1O,KAAK0O,SAASvJ,QAAQyN,MAAMnC,MAAQzQ,KAAKwZ,SAAQ,GAErD,MACJ,KAAK,cACD,GAAIxZ,KAAK0O,SAAU,CACf,GAAI7C,GAAS7L,KAAKwZ,SAAQ,EAC1BxZ,MAAK0O,SAASvJ,QAAQyN,MAAM6G,UAAY5N,EACxC7L,KAAK4H,SAASgL,MAAM6G,UAAY5N,EAChC7L,KAAK6K,QAAQgB,OAASA,EAE1B,KACJ,KAAK,cACD2I,QAAMqC,eAAe0M,EAAQzO,YAAa9U,KAAKgT,SAC/C,MACJ,KAAK,WACDwB,QAAMkP,YAAY1jB,KAAK4T,SAAU5T,KAAKgT,SACtC,MACJ,KAAK,WACDwB,QAAMsC,YAAY9W,KAAK8T,SAAU9T,KAAKgT,UACtChT,KAAKkW,WACL,MACJ,KAAK,WACDlW,KAAKugB,YAAYgD,EAAQvO,SAAUwO,EAAQxO,SAC3C,MACJ,KAAK,iBACDR,QAAMmP,eAAe3jB,KAAKuU,UAC1BC,QAAMoP,YAAY5jB,KAAKgT,SAAUhT,KAAK2U,eAAgB3U,KAAK8U,YAC3D,MACJ,KAAK,kBACDN,QAAMqP,eAAeN,EAAQxO,gBAAiB/U,KAAKgT,SAAUhT,KAAKuU,SAClE,MACJ,KAAK,QACDvU,KAAK0N,WAAU,GAAM,EACrB,MACJ,KAAK,OACD1N,KAAK0N,WAAU,GAAM,EACrB,MACJ,KAAK,QACD1N,KAAK0N,WAAU,EACf,MACJ,KAAK,YACG1N,KAAK6K,UACL7K,KAAK6K,QAAQsC,aAAarC,UAClBsC,MAAOpN,KAAK2J,OAAOC,KAAMyD,UAAWkW,EAAQ5Y,YAAcrG,YAAUgJ,UAChEhJ,YAAUgJ,UAAYhJ,YAAUiJ,aAGhD,MACJ,KAAK,iBACDvN,KAAKiI,mBACL,MACJ,KAAK,oBACDjI,KAAKmS,YACL,MACJ,KAAK,wBACDnS,KAAKmS,YAAW,EAChB,MACJ,KAAK,iBACDnS,KAAKuZ,mBACL,MACJ,KAAK,eACGvZ,KAAK6K,UACL7K,KAAK6K,QAAQqB,YAAcqX,EAAQpX,aAEvC,MACJ,KAAK,gBACDnM,KAAK0R,cAAgB6R,EAAQ7R,cAC7B1R,KAAKiN,oBACL,MACJ,KAAK,YACGjN,KAAK6K,SAAW7K,KAAK0O,WACrB1O,KAAK6K,QAAQS,UAAYiY,EAAQjY,UACjCkJ,QAAMsP,aAAaP,EAAQjY,WAAYtL,KAAKiV,eAC5CjV,KAAK0O,SAASpD,UAAYiY,EAAQjY,UAEtC,MACJ,KAAK,aACDtL,KAAK6hB,wBAAwB0B,EAAQ7b,WAAY8b,EAAQ9b,WACzD,MACJ,KAAK,QACD1H,KAAK4I,mBAAoB,EACzB5I,KAAKyH,YAAYzH,KAAK0H,WACtB,MACJ,KAAK,eACG1H,KAAK6K,UACL7K,KAAK6K,QAAQI,UAAYsY,EAAQrY,aAAaD,UAC9CjL,KAAK6K,QAAQM,UAAYoY,EAAQrY,aAAaC,UAC9CnL,KAAK6K,QAAQO,aAAemY,EAAQrY,aAAaE,aACjDpL,KAAK6K,QAAQkB,cAAgBwX,EAAQrY,aAAaa,cAC5C7E,oBAAMqc,EAAQrY,aAAaO,iBAC7BzL,KAAK6K,QAAQY,cAAgB8X,EAAQrY,aAAaO,eAEhDvE,oBAAMqc,EAAQrY,aAAaU,gBAC7B5L,KAAK6K,QAAQa,iBAAiBC,SAAW4X,EAAQrY,aAAaU,cAGtE,MACJ,KAAK,SACD5L,KAAK2J,OAAS4Z,EAAQ5Z,OACtB3J,KAAKiN,oBACL,MACJ,KAAK,aACDjN,KAAKyJ,WAAa8Z,EAAQ9Z,UAC1B,MACJ,KAAK,uBACGzJ,KAAK6K,UACL7K,KAAKqL,qBAAuBrL,KAAK6K,QAAQQ,qBAAuBkY,EAAQlY,qBAE5E,MACJ,KAAK,WACGrL,KAAK6K,UACL7K,KAAKiM,SAAWsX,EAAQtX,SACxBjM,KAAK6K,QAAQmB,kBAA+D,oBAA3ChM,KAAKiM,SAAS1B,WAAWK,eAAuC5K,KAAK+K,aAE1G,MACJ,KAAK,iBACD/K,KAAKsJ,eAAiBia,EAAQja,cAC9B,MACJ,KAAK,eACGtJ,KAAK6K,UACL7K,KAAK+K,aAAe/K,KAAK6K,QAAQE,aAAewY,EAAQxY,aAE5D,MACJ,KAAK,UACG/K,KAAK6K,UACLJ,EAAczK,KAAK0K,iBACnB1K,KAAK6K,QAAQC,QAAUL,EAE3B,MACJ,KAAK,SACDzK,KAAK6R,iBAAkB,KAKvCzR,GACIuE,gBACDM,EAAoB/E,UAAW,iBAAc,IAChDE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,WAAQ,IAC1CE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,YAAS,IAC3CE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,YAAS,IAC3CE,GACIuE,WAAS,SACVM,EAAoB/E,UAAW,YAAS,IAC3CE,GACIuE,WAAS,UACVM,EAAoB/E,UAAW,kBAAe,IACjDE,GACIuE,WAAS,SACVM,EAAoB/E,UAAW,iBAAc,IAChDE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,kBAAe,IACjDE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,qBAAkB,IACpDE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,mBAAgB,IAClDE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,sBAAmB,IACrDE,GACIuE,WAAS,KACVM,EAAoB/E,UAAW,eAAY,IAC9CE,GACI2jB,WAAUna,KAAM,KAAMjI,MAAO,KAAMwN,QAAS,MAAQ1K,IACrDQ,EAAoB/E,UAAW,aAAU,IAC5CE,GACI4jB,gBAAenf,IAChBI,EAAoB/E,UAAW,cAAW,IAC7CE,GACI2jB,aAAYjf,IACbG,EAAoB/E,UAAW,mBAAgB,IAClDE,GACIuE,WAASN,aAAW4f,aACrBhf,EAAoB/E,UAAW,iBAAc,IAChDE,GACIuE,WAAS,UACVM,EAAoB/E,UAAW,qBAAkB,IACpDE,GACIuE,WAASL,YAAU4f,OACpBjf,EAAoB/E,UAAW,gBAAa,IAC/CE,GACIuE,WAASJ,WAAS4f,YACnBlf,EAAoB/E,UAAW,eAAY,IAC9CE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,2BAAwB,IAC1DE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,eAAY,IAC9CE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,eAAY,IAC9CE,GACIuE,YAAS,IACVM,EAAoB/E,UAAW,wBAAqB,IACvDE,GACIuE,cACDM,EAAoB/E,UAAW,YAAS,IAC3CE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,mBAAgB,IAClDE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,qBAAkB,IACpDE,GACIuE,WAAS,OACVM,EAAoB/E,UAAW,oBAAiB,IACnDE,GACIuE,WAAS,mBACVM,EAAoB/E,UAAW,4BAAyB,IAC3DE,GACIuE,WAAS,qBACVM,EAAoB/E,UAAW,wBAAqB,IACvDE,GACIuE,gBACDM,EAAoB/E,UAAW,qBAAkB,IACpDE,GACI4E,WACDC,EAAoB/E,UAAW,cAAW,IAC7CE,GACI4E,WACDC,EAAoB/E,UAAW,WAAQ,IAC1CE,GACI4E,WACDC,EAAoB/E,UAAW,YAAS,IAC3CE,GACI4E,WACDC,EAAoB/E,UAAW,oBAAiB,IACnDE,GACI4E,WACDC,EAAoB/E,UAAW,kBAAe,IACjDE,GACI4E,WACDC,EAAoB/E,UAAW,qBAAkB,IACpDE,GACI4E,WACDC,EAAoB/E,UAAW,gBAAa,IAC/CE,GACI4E,WACDC,EAAoB/E,UAAW,aAAU,IAC5CE,GACI4E,WACDC,EAAoB/E,UAAW,aAAU,IAC5C+E,EAAsB7E,GAClBgkB,yBACDnf,IAELof"}
|