@syncfusion/ej2-multicolumn-combobox 26.2.12 → 27.1.50

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.
Files changed (149) hide show
  1. package/.eslintrc.json +261 -0
  2. package/dist/ej2-multicolumn-combobox.umd.min.js +2 -2
  3. package/dist/ej2-multicolumn-combobox.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-multicolumn-combobox.es2015.js +94 -43
  5. package/dist/es6/ej2-multicolumn-combobox.es2015.js.map +1 -1
  6. package/dist/es6/ej2-multicolumn-combobox.es5.js +94 -40
  7. package/dist/es6/ej2-multicolumn-combobox.es5.js.map +1 -1
  8. package/dist/global/ej2-multicolumn-combobox.min.js +2 -2
  9. package/dist/global/ej2-multicolumn-combobox.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +8 -8
  12. package/src/multicolumn-combobox/multi-column-combo-box-model.d.ts +1 -1
  13. package/src/multicolumn-combobox/multi-column-combo-box.d.ts +4 -2
  14. package/src/multicolumn-combobox/multi-column-combo-box.js +94 -41
  15. package/styles/bootstrap-dark-lite.css +267 -0
  16. package/styles/bootstrap-dark-lite.scss +10 -0
  17. package/styles/bootstrap-dark.css +77 -108
  18. package/styles/bootstrap-dark.scss +1 -0
  19. package/styles/bootstrap-lite.css +267 -0
  20. package/styles/bootstrap-lite.scss +10 -0
  21. package/styles/bootstrap.css +77 -108
  22. package/styles/bootstrap.scss +1 -0
  23. package/styles/bootstrap4-lite.css +309 -0
  24. package/styles/bootstrap4-lite.scss +10 -0
  25. package/styles/bootstrap4.css +78 -131
  26. package/styles/bootstrap4.scss +1 -0
  27. package/styles/bootstrap5-dark-lite.css +317 -0
  28. package/styles/bootstrap5-dark-lite.scss +10 -0
  29. package/styles/bootstrap5-dark.css +78 -127
  30. package/styles/bootstrap5-dark.scss +1 -0
  31. package/styles/bootstrap5-lite.css +317 -0
  32. package/styles/bootstrap5-lite.scss +10 -0
  33. package/styles/bootstrap5.3-lite.css +321 -0
  34. package/styles/bootstrap5.3-lite.scss +10 -0
  35. package/styles/bootstrap5.3.css +372 -0
  36. package/styles/bootstrap5.3.scss +11 -0
  37. package/styles/bootstrap5.css +78 -127
  38. package/styles/bootstrap5.scss +1 -0
  39. package/styles/fabric-dark-lite.css +243 -0
  40. package/styles/fabric-dark-lite.scss +10 -0
  41. package/styles/fabric-dark.css +78 -108
  42. package/styles/fabric-dark.scss +1 -0
  43. package/styles/fabric-lite.css +243 -0
  44. package/styles/fabric-lite.scss +10 -0
  45. package/styles/fabric.css +78 -101
  46. package/styles/fabric.scss +1 -0
  47. package/styles/fluent-dark-lite.css +310 -0
  48. package/styles/fluent-dark-lite.scss +10 -0
  49. package/styles/fluent-dark.css +78 -114
  50. package/styles/fluent-dark.scss +1 -0
  51. package/styles/fluent-lite.css +310 -0
  52. package/styles/fluent-lite.scss +10 -0
  53. package/styles/fluent.css +78 -114
  54. package/styles/fluent.scss +1 -0
  55. package/styles/fluent2-lite.css +314 -0
  56. package/styles/fluent2-lite.scss +10 -0
  57. package/styles/fluent2.css +78 -111
  58. package/styles/fluent2.scss +1 -0
  59. package/styles/highcontrast-light-lite.css +264 -0
  60. package/styles/highcontrast-light-lite.scss +10 -0
  61. package/styles/highcontrast-light.css +78 -98
  62. package/styles/highcontrast-light.scss +1 -0
  63. package/styles/highcontrast-lite.css +268 -0
  64. package/styles/highcontrast-lite.scss +10 -0
  65. package/styles/highcontrast.css +82 -98
  66. package/styles/highcontrast.scss +1 -0
  67. package/styles/material-dark-lite.css +292 -0
  68. package/styles/material-dark-lite.scss +10 -0
  69. package/styles/material-dark.css +78 -92
  70. package/styles/material-dark.scss +1 -0
  71. package/styles/material-lite.css +296 -0
  72. package/styles/material-lite.scss +10 -0
  73. package/styles/material.css +78 -113
  74. package/styles/material.scss +1 -0
  75. package/styles/material3-dark-lite.css +306 -0
  76. package/styles/material3-dark-lite.scss +10 -0
  77. package/styles/material3-dark.css +77 -116
  78. package/styles/material3-dark.scss +1 -0
  79. package/styles/material3-lite.css +308 -0
  80. package/styles/material3-lite.scss +10 -0
  81. package/styles/material3.css +77 -116
  82. package/styles/material3.scss +1 -0
  83. package/styles/multicolumn-combobox/_bds-definition.scss +1 -0
  84. package/styles/multicolumn-combobox/_bigger.scss +37 -0
  85. package/styles/multicolumn-combobox/_bootstrap-dark-definition.scss +1 -0
  86. package/styles/multicolumn-combobox/_bootstrap-definition.scss +1 -0
  87. package/styles/multicolumn-combobox/_bootstrap4-definition.scss +1 -0
  88. package/styles/multicolumn-combobox/_bootstrap5-definition.scss +1 -0
  89. package/styles/multicolumn-combobox/_bootstrap5.3-definition.scss +15 -14
  90. package/styles/multicolumn-combobox/_fabric-dark-definition.scss +1 -0
  91. package/styles/multicolumn-combobox/_fabric-definition.scss +1 -0
  92. package/styles/multicolumn-combobox/_fluent-definition.scss +1 -0
  93. package/styles/multicolumn-combobox/_fluent2-definition.scss +1 -0
  94. package/styles/multicolumn-combobox/_fusionnew-definition.scss +1 -0
  95. package/styles/multicolumn-combobox/_highcontrast-definition.scss +1 -0
  96. package/styles/multicolumn-combobox/_highcontrast-light-definition.scss +1 -0
  97. package/styles/multicolumn-combobox/_layout.scss +34 -33
  98. package/styles/multicolumn-combobox/_material-dark-definition.scss +1 -0
  99. package/styles/multicolumn-combobox/_material-definition.scss +1 -0
  100. package/styles/multicolumn-combobox/_material3-definition.scss +1 -0
  101. package/styles/multicolumn-combobox/_tailwind-definition.scss +1 -0
  102. package/styles/multicolumn-combobox/_theme.scss +3 -0
  103. package/styles/multicolumn-combobox/bootstrap-dark.css +77 -108
  104. package/styles/multicolumn-combobox/bootstrap-dark.scss +1 -0
  105. package/styles/multicolumn-combobox/bootstrap.css +77 -108
  106. package/styles/multicolumn-combobox/bootstrap.scss +1 -0
  107. package/styles/multicolumn-combobox/bootstrap4.css +78 -131
  108. package/styles/multicolumn-combobox/bootstrap4.scss +1 -0
  109. package/styles/multicolumn-combobox/bootstrap5-dark.css +78 -127
  110. package/styles/multicolumn-combobox/bootstrap5-dark.scss +1 -0
  111. package/styles/multicolumn-combobox/bootstrap5.3.css +372 -0
  112. package/styles/multicolumn-combobox/bootstrap5.3.scss +11 -0
  113. package/styles/multicolumn-combobox/bootstrap5.css +78 -127
  114. package/styles/multicolumn-combobox/bootstrap5.scss +1 -0
  115. package/styles/multicolumn-combobox/fabric-dark.css +78 -108
  116. package/styles/multicolumn-combobox/fabric-dark.scss +1 -0
  117. package/styles/multicolumn-combobox/fabric.css +78 -101
  118. package/styles/multicolumn-combobox/fabric.scss +1 -0
  119. package/styles/multicolumn-combobox/fluent-dark.css +78 -114
  120. package/styles/multicolumn-combobox/fluent-dark.scss +1 -0
  121. package/styles/multicolumn-combobox/fluent.css +78 -114
  122. package/styles/multicolumn-combobox/fluent.scss +1 -0
  123. package/styles/multicolumn-combobox/fluent2.css +78 -111
  124. package/styles/multicolumn-combobox/fluent2.scss +1 -0
  125. package/styles/multicolumn-combobox/highcontrast-light.css +78 -98
  126. package/styles/multicolumn-combobox/highcontrast-light.scss +1 -0
  127. package/styles/multicolumn-combobox/highcontrast.css +82 -98
  128. package/styles/multicolumn-combobox/highcontrast.scss +1 -0
  129. package/styles/multicolumn-combobox/material-dark.css +78 -92
  130. package/styles/multicolumn-combobox/material-dark.scss +1 -0
  131. package/styles/multicolumn-combobox/material.css +78 -113
  132. package/styles/multicolumn-combobox/material.scss +1 -0
  133. package/styles/multicolumn-combobox/material3-dark.css +77 -116
  134. package/styles/multicolumn-combobox/material3-dark.scss +1 -0
  135. package/styles/multicolumn-combobox/material3.css +77 -116
  136. package/styles/multicolumn-combobox/material3.scss +1 -0
  137. package/styles/multicolumn-combobox/tailwind-dark.css +78 -111
  138. package/styles/multicolumn-combobox/tailwind-dark.scss +1 -0
  139. package/styles/multicolumn-combobox/tailwind.css +78 -111
  140. package/styles/multicolumn-combobox/tailwind.scss +1 -0
  141. package/styles/tailwind-dark-lite.css +297 -0
  142. package/styles/tailwind-dark-lite.scss +10 -0
  143. package/styles/tailwind-dark.css +78 -111
  144. package/styles/tailwind-dark.scss +1 -0
  145. package/styles/tailwind-lite.css +297 -0
  146. package/styles/tailwind-lite.scss +10 -0
  147. package/styles/tailwind.css +78 -111
  148. package/styles/tailwind.scss +1 -0
  149. package/tslint.json +111 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js","../../src/global.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};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, isNullOrUndefined } 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 } from '@syncfusion/ej2-popups';\nimport { Grid, 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 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);\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 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.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 = 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 = 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.renderGrid();\n this.renderInput();\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.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n this.gridObj = new Grid({\n dataSource: this.dataSource,\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 query: this.query,\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionBegin: function (args) { _this.trigger('actionBegin', args); },\n actionComplete: function (args) {\n _this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n _this.updateRowSelection(args);\n }\n var dataRows = args.rows;\n if (_this.isDataFiltered && dataRows.length > 0 && _this.inputEle.value !== '' && args.requestType !== 'sorting') {\n var firstRowEle = _this.gridObj.getRows()[0];\n firstRowEle.classList.add('e-row-focus');\n }\n _this.popupObj.refreshPosition();\n },\n keyPressed: 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 });\n this.gridEle = this.createElement('div', { id: getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\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 };\n // eslint-disable @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var values = Object.values(data).map(String);\n var isRowPresent = values.includes(selectedValue) && values.includes(selectedText);\n return isRowPresent;\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 var data = row.data;\n var index = row.index;\n _this.selectDataRow(data, index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ? 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 return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n ;\n // eslint-enable @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (column) {\n var changeType;\n if (column.displayAsCheckBox && !column.format) {\n changeType = 'boolean';\n }\n return {\n field: column.field,\n headerText: column.header,\n width: column.width,\n textAlign: column.textAlign === '' && _this.enableRtl ? 'Right' : column.textAlign,\n format: column.format,\n displayAsCheckBox: column.displayAsCheckBox,\n template: column.template,\n headerTemplate: column.headerTemplate,\n customAttributes: column.customAttributes,\n type: changeType\n };\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\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: [this.fields.groupBy],\n captionTemplate: (this.groupTemplate && this.fields.groupBy !== '' && !isNOU(this.fields.groupBy))\n ? this.groupTemplate : \"${key}\"\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 dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (this.popupDiv.classList.contains(NODATA) && 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 rowHeight = !this.popupDiv.classList.contains(NODATA) ? this.popupDiv.querySelector('.e-gridcontent tr').getBoundingClientRect().height : this.popupDiv.getBoundingClientRect().height;\n this.popupRowHeight = rowHeight;\n this.popupObj.hide();\n this.popupEle.style.visibility = 'unset';\n this.isInitialRender = false;\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 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 this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('aria-readOnly', this.readonly.toString());\n this.inputEle.setAttribute('aria-disabled', this.disabled.toString());\n this.inputEle.setAttribute('autocomplete', 'off');\n this.inputEle.setAttribute('autocapitalize', 'off');\n this.inputEle.setAttribute('spellcheck', 'false');\n this.inputEle.setAttribute('tabindex', '0');\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 if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n /* To calculate the width when change via set model */\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\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 };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\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.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', '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.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\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 return item[isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text].toString() === 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 return data[isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text].toString() === 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 item = this.dataSource[this.index];\n updateValues(this.dataSource);\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 ChangeEventArgs = {\n value: item ? item[this.fields.value].toString() : 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 Input.setValue(item[this.fields.text].toString(), this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: item[this.fields.value].toString(),\n currentText: item[this.fields.text].toString(),\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 this.footer = this.footer ? this.footer : this.popupEle.querySelector('.e-popup-footer');\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, dataSourceCount) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n var totalRowHeight = dataSourceCount * this.popupRowHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n totalRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (totalRowHeight < this.prevGridHeight ? (totalRowHeight + 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.indexOf('%') > -1) {\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 fieldText = selectedRecords ? selectedRecords[this.fields.text].toString() : '';\n var fieldValue = selectedRecords ? selectedRecords[this.fields.value].toString() : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: fieldText, value: fieldValue },\n event: e,\n cancel: false,\n value: fieldValue,\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 selectedRecord = 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(selectedRecord[_this.fields.value], selectedRecord[_this.fields.text], _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecord[_this.fields.text], _this.inputEle, _this.floatLabelType, _this.showClearButton);\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 ? text : this.text;\n this.value = value ? value : this.value;\n this.index = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\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 var inputValue_1 = e.target.value.toLowerCase();\n var customFiltering_1 = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: inputValue_1,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n customFiltering_1 = true;\n _this.filterAction(dataSource, inputValue_1, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !customFiltering_1) {\n _this.filterAction(_this.dataSource, inputValue_1, _this.query, _this.fields);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n var _this = this;\n var data;\n if (this.dataSource instanceof DataManager) {\n var query = new Query();\n this.dataSource.executeQuery(query).then(function (result) {\n var totaldata = result.result;\n data = totaldata.filter(function (item) {\n return item[_this.fields.text].toString().toLowerCase().startsWith(inputValue.toLowerCase());\n });\n _this.selectFilteredRows(data);\n });\n }\n else if (Array.isArray(this.dataSource)) {\n data = this.dataSource.filter(function (item) {\n return item[_this.fields.text].toString().toLowerCase().startsWith(inputValue.toLowerCase());\n });\n this.selectFilteredRows(data);\n }\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data) {\n if (data.length > 0) {\n this.matchedContent = data[0];\n }\n else {\n this.matchedContent = null;\n }\n if (this.matchedContent) {\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n }\n else {\n this.matchedRowEle = null;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filterAction = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var dataLists;\n if (isNullOrUndefined(query) && isNullOrUndefined(fields)) {\n this.updateGridDataSource(dataSource);\n }\n else if (query) {\n new DataManager(dataSource).executeQuery(query).then(function (e) {\n dataLists = e.result;\n _this.updateGridDataSource(dataLists);\n });\n }\n else {\n var filterType_1 = this.filterType.toString().toLowerCase();\n var isQuery = query || new Query();\n var filteredData_1;\n if (dataSource instanceof DataManager) {\n // Handle filtering for DataManager\n dataSource.executeQuery(isQuery).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var dataLength = dataLists.length;\n filteredData_1 = dataLists.filter(function (item) { return _this.filterData(item, filterType_1, inputValue, fields); });\n _this.updateGridDataSource(filteredData_1, dataLength);\n });\n }\n else if (Array.isArray(dataSource)) {\n // Handle filtering for array data source\n filteredData_1 = dataSource.filter(function (item) {\n return _this.filterData(item, filterType_1, inputValue, fields);\n });\n this.updateGridDataSource(filteredData_1);\n }\n }\n };\n MultiColumnComboBox.prototype.filterData = function (item, filterType, inputValue, fields) {\n var itemValue = item[fields ? fields.text : this.fields.text].toString().toLowerCase();\n switch (filterType) {\n case 'startswith':\n return itemValue.startsWith(inputValue);\n case 'endswith':\n return itemValue.endsWith(inputValue);\n case 'contains':\n return itemValue.includes(inputValue);\n default:\n return false;\n }\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function (dataSource, dataLength) {\n var autoHeight = true;\n if (dataSource.length > 0) {\n var length_1 = this.dataSource instanceof DataManager ? dataLength : this.dataSource.length;\n autoHeight = length_1 !== dataSource.length;\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 = dataSource;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n this.updateGridHeight(true, autoHeight, dataSource.length);\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 if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!(e.target.closest('.e-multicolumn-list'))) {\n this.focusOut();\n }\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n this.updateValuesOnInput(e);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues) {\n var _this = this;\n var e = mouseEvent ? mouseEvent : keyEvent;\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n setTimeout(function () {\n _this.inputEle.value = _this.matchedContent[_this.fields.text].toString();\n _this.value = _this.matchedContent[_this.fields.value].toString();\n var selectIndex = _this.findIndex(_this.gridObj.currentViewData, _this.matchedContent);\n _this.index = selectIndex;\n _this.text = _this.matchedContent[_this.fields.text].toString();\n _this.gridObj.selectRow(selectIndex);\n _this.selectedGridRow(_this.gridObj.getRowByIndex(selectIndex), e);\n _this.previousItemElement = _this.gridObj.getSelectedRows()[0];\n }, 100);\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);\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 if (isGroup) {\n if (e.key === 'ArrowDown') {\n e.action = 'moveDown';\n }\n else if (e.key === 'ArrowUp') {\n e.action = 'moveUp';\n }\n else if (e.key === 'End') {\n e.action = 'end';\n }\n else if (e.key === 'Home') {\n e.action = 'home';\n }\n else if (e.key === 'Tab') {\n e.action = 'tab';\n }\n else if (e.key === 'Escape') {\n e.action = 'escape';\n }\n if (e.shiftKey && e.key === 'Tab') {\n e.action = 'shiftTab';\n }\n if (e.altKey && e.key === 'ArrowUp') {\n e.action = 'altUp';\n }\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 if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index = !this.fields.groupBy ? this.gridObj.selectedRowIndex : this.gridObj.selectedRowIndex ? this.gridObj.selectedRowIndex : 0;\n if ((index === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index = 0;\n }\n else if ((index >= this.gridObj.getRows().length && e.action === 'moveDown') || (e.action === 'end')) {\n index = this.gridObj.getRows().length - 1;\n }\n else if (e.action === 'moveDown' && (index >= 0 && index <= this.gridObj.getRows().length) && (this.fields.groupBy || isInputTarget)) {\n index += 1;\n }\n else if (e.action === 'moveUp' && index > 0 && (this.fields.groupBy) || isInputTarget) {\n index -= 1;\n }\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()[index], e, true);\n }\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 /**\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 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 * Opens the popup that displays the list of items.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\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 var dataRows = _this.gridObj.currentViewData;\n dataRows.forEach(function (data, index) {\n _this.selectDataRow(data, index);\n });\n }\n _this.focusIn(e);\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (contentEle.querySelector('.e-row')) {\n _this.inputEle.setAttribute('aria-activedescendant', contentEle.querySelector('.e-row').getAttribute('data-uid'));\n }\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle);\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 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 _this.inputEle.value = _this.text ? _this.text.toString() : '';\n if (e) {\n var target = e.target;\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 }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.dataSource;\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 return item[_this.fields.value].toString() === 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 return item[_this.fields.value].toString() === 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 _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();\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 if (this.gridObj) {\n this.gridObj.dataSource = newProp.dataSource;\n }\n break;\n case 'query':\n if (this.gridObj) {\n this.gridObj.query = newProp.query;\n }\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 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 this.sortType = newProp.sortType;\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 }\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","import * as index from './index';\nindex.MultiColumnComboBox.Inject(index.VirtualScroll, index.Sort, index.Edit, index.Group);\nexport * from './index';\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","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","apply","Property","ChildProperty","Column","GridSettings","Both","MultiColumnComboBox","options","element","_this","call","gridInject","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderGrid","renderInput","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","gridColumns","getGridColumns","gridObj","dataSource","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","query","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowMultiSorting","sortType","toString","toLowerCase","rowTemplate","itemTemplate","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","requestType","updateRowSelection","dataRows","rows","isDataFiltered","inputEle","value","getRows","classList","add","popupObj","refreshPosition","keyPressed","cancel","isPopupOpen","selectedGridRow","selectedRowIndex","hidePopup","focusIn","fields","groupBy","gridKeyActionHandler","updateGroupByField","sortOrder","isPrimaryKey","sortSettings","field","text","direction","Ascending","Descending","appendTo","isRowMatching","selectedValue","selectedText","values","map","String","includes","forEach","row","index","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","item","keys","every","column","changeType","displayAsCheckBox","format","headerText","header","width","textAlign","template","headerTemplate","customAttributes","type","allowGrouping","groupSettings","showDropArea","captionTemplate","groupTemplate","isVue","dataCount","popupChild","querySelector","l10nUpdate","removeChild","addClass","contains","removeClass","noRecordEle","isInitialRender","getBoundingClientRect","popupRowHeight","hide","popupEle","style","visibility","tagName","getAttribute","setAttribute","readonly","disabled","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","setElementWidth","initValue","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","_a","htmlAttr","setEnable","dataBind","indexOf","setPlaceholder","setEnabled","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","result","updateCurrentValues","undefined","value_1","DataManager","executeQuery","Query","then","e","dataLists","filteredData","filter","updateChangeEvent","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","setValue","MULTICOLUMNLIST","attributes","aria-label","document","body","createPopup","prepend","footerTemplate","setFooterTemplate","getSize","maxHeight","footer","Math","round","parseInt","updateGridHeight","isFilter","autoHeight","dataSourceCount","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","totalRowHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","innerHTML","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","offsetWidth","documentElement","parseFloat","isKeyNav","eventArgs","selectedRecords","fieldText","fieldValue","selectedRecord","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","allowFiltering","inputValue_1","customFiltering_1","eventArgs_1","preventDefaultAction","updateData","filterAction","updateInputValue","inputValue","totaldata","startsWith","selectFilteredRows","isArray","selectedIndex","currentViewData","getRowByIndex","isNullOrUndefined","updateGridDataSource","filteredData_1","filterType_1","filterType","isQuery","dataLength","filterData","itemValue","endsWith","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","bind","eventName","unWireEvents","remove","destroy","preventDefault","focusedEle","closest","focusOut","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","setTimeout","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","split","action","updateSelectedItem","isGroup","isUpdateIndex","isInputTarget","clearIconEle","display","calculateWidth","isInputOpen","animModel","name","duration","popup","animation","aria-expanded","aria-owns","aria-controls","contentEle","activeRow","show","Animation","removeAttribute","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","Event","NotifyPropertyChanges","Component","index.VirtualScroll","index.Sort","index.Edit","index.Group"],"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,GAY5DM,EAAS,WAKTC,EAAiC,WACjC,QAASA,MAWT,MAHAA,GAAgBjB,UAAUkB,cAAgB,WACtCC,OAAKC,OAAOC,gBAAeC,QAAWC,OAAMC,SAEzCP,MAOX,SAAWQ,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,EAAOC,MAAMjC,KAAMU,YAAcV,KAW/D,MAbAX,GAAU0C,EAAeC,GAIzB5B,GACI8B,cACDH,EAAc7B,UAAW,WAAQ,IACpCE,GACI8B,cACDH,EAAc7B,UAAW,YAAS,IACrCE,GACI8B,cACDH,EAAc7B,UAAW,cAAW,IAChC6B,GACTI,iBAKEC,EAAwB,SAAUJ,GAElC,QAASI,KACL,MAAkB,QAAXJ,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KA6B/D,MA/BAX,GAAU+C,EAAQJ,GAIlB5B,GACI8B,WAAS,KACVE,EAAOlC,UAAW,YAAS,IAC9BE,GACI8B,WAAS,KACVE,EAAOlC,UAAW,aAAU,IAC/BE,GACI8B,WAAS,KACVE,EAAOlC,UAAW,YAAS,IAC9BE,GACI8B,WAAS,KACVE,EAAOlC,UAAW,gBAAa,IAClCE,GACI8B,WAAS,OACVE,EAAOlC,UAAW,aAAU,IAC/BE,GACI8B,YAAS,IACVE,EAAOlC,UAAW,wBAAqB,IAC1CE,GACI8B,WAAS,OACVE,EAAOlC,UAAW,eAAY,IACjCE,GACI8B,WAAS,OACVE,EAAOlC,UAAW,qBAAkB,IACvCE,GACI8B,WAAS,OACVE,EAAOlC,UAAW,uBAAoB,IAClCkC,GACTD,iBAKEE,EAA8B,SAAUL,GAExC,QAASK,KACL,MAAkB,QAAXL,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KAiB/D,MAnBAX,GAAUgD,EAAcL,GAIxB5B,GACI8B,YAAS,IACVG,EAAanC,UAAW,mBAAgB,IAC3CE,GACI8B,WAAS,OACVG,EAAanC,UAAW,gBAAa,IACxCE,GACI8B,WAAS,YACVG,EAAanC,UAAW,gBAAa,IACxCE,GACI8B,YAAS,IACVG,EAAanC,UAAW,oBAAiB,IAC5CE,GACI8B,WAASJ,WAASQ,OACnBD,EAAanC,UAAW,mBAAgB,IACpCmC,GACTF,iBAcEI,EAAqC,SAAUP,GAS/C,QAASO,GAAoBC,EAASC,GAClC,GAAIC,GAAQV,EAAOW,KAAK3C,KAAMwC,EAASC,IAAYzC,IAGnD,OAFA0C,GAAME,WAAa,GAAIzB,GACvBuB,EAAME,WAAWxB,gBACVsB,EAqgDX,MAjhDArD,GAAUkD,EAAqBP,GAoB/BO,EAAoBrC,UAAU2C,UAAY,WACjC7C,KAAKyC,QAAQK,KACd9C,KAAKyC,QAAQK,GAAKC,cAAY,KAAO/C,KAAKgD,kBAE9ChD,KAAKiD,YACDC,OAAQ,SACRC,MAAO,cACPC,QAAS,gBACTC,IAAK,MACLC,SAAU,YACVC,IAAK,MACLC,MAAO,QACPC,KAAM,OACNC,SAAU,YACVC,OAAQ,WAEZ3D,KAAK4D,cAAgB5D,KAAK6D,eAAiB,KAC3C7D,KAAK8D,eAETvB,EAAoBrC,UAAU6D,aAAe,WACzC,MAAO,2BAQXxB,EAAoBrC,UAAU8C,cAAgB,WAC1C,MAAO,uBAQXT,EAAoBrC,UAAU8D,eAAiB,WAC3C,MAAOhE,MAAKiE,cAAc,WAE9B1B,EAAoBrC,UAAU4D,YAAc,WACxC,GAAI9D,KAAKkE,kBAAmB,CACxBlE,KAAKyC,QAAQK,GAAK9C,KAAKyC,QAAQK,GAAK,UACpC,IAAIqB,GAAOC,OAAOC,aAAaC,QAAQtE,KAAKgD,gBAAkBhD,KAAKyC,QAAQK,GACrEyB,qBAAMJ,IAAmB,KAATA,GAClBnE,KAAKwE,cAAcC,KAAKC,MAAMP,IAAO,KAIjD5B,EAAoBrC,UAAUyE,OAAS,WACnC3E,KAAK4E,aACL5E,KAAK6E,cACL7E,KAAK8E,SAAW9E,KAAK+E,cAAc,OAASC,UAnQtC,oBAoQNhF,KAAK8E,SAASG,YAAYjF,KAAKkF,SAC/BlF,KAAKmF,oBACLnF,KAAKoF,cACLpF,KAAKqF,cAET9C,EAAoBrC,UAAU0E,WAAa,WACvC,GAAIlC,GAAQ1C,KACRsF,EAActF,KAAKuF,gBACvBvF,MAAKwF,QAAU,GAAInE,SACfoE,WAAYzF,KAAKyF,WACjBC,QAASJ,EACTK,aAAc3F,KAAK2F,aACnBC,oBAAoB,EACpBC,UAAW7F,KAAK8F,aAAaD,UAC7BE,UAAW/F,KAAK8F,aAAaC,UAC7BC,aAAchG,KAAK8F,aAAaE,aAChCC,qBAAsBjG,KAAKiG,qBAC3BC,UAAWlG,KAAKkG,UAChBC,cAAgBC,aAAa,GAC7BC,MAAOrG,KAAKqG,MACZC,cAAetG,KAAK8F,aAAaQ,cACjCC,kBAAoBC,SAAUxG,KAAK8F,aAAaW,cAChDC,OAAQ1G,KAAK2G,YACbC,kBAA8D,oBAA3C5G,KAAK6G,SAASC,WAAWC,eAAuC/G,KAAK2F,aACxFqB,YAAahH,KAAKiH,aAClBC,UAAW,WAAcxE,EAAMyE,eAC/BC,cAAe,SAAUC,GAAQ3E,EAAM4E,gBAAgBD,IACvDE,YAAa,SAAUF,GAAQ3E,EAAM8E,QAAQ,cAAeH,IAC5DI,eAAgB,SAAUJ,GACtB3E,EAAM8E,QAAQ,iBAAkBH,GACP,YAArBA,EAAKK,aACLhF,EAAMiF,mBAAmBN,EAE7B,IAAIO,GAAWP,EAAKQ,IAChBnF,GAAMoF,gBAAkBF,EAASjH,OAAS,GAA8B,KAAzB+B,EAAMqF,SAASC,OAAqC,YAArBX,EAAKK,aACjEhF,EAAM8C,QAAQyC,UAAU,GAC9BC,UAAUC,IAAI,eAE9BzF,EAAM0F,SAASC,mBAEnBC,WAAY,SAAUjB,GACD,UAAbA,EAAK9G,MAEL8G,EAAKkB,QAAS,EACV7F,EAAM8F,cACN9F,EAAM+F,gBAAgB/F,EAAM8C,QAAQyC,UAAUvF,EAAM8C,QAAQkD,kBAAmBrB,GAAM,GACrF3E,EAAMiG,UAAUtB,GAChB3E,EAAMkG,QAAQvB,KAGlB3E,EAAMmG,OAAOC,UAEbzB,EAAKkB,QAAS,EACd7F,EAAMqG,qBAAqB1B,GAAM,OAI7CrH,KAAKkF,QAAUlF,KAAK+E,cAAc,OAASjC,GAAIC,cAAY,QAASiC,UAvTtD,uBAwTdhF,KAAKgJ,oBACL,IAAIC,GAAYjJ,KAAKiJ,UAAUnC,WAAWC,aAE1C/G,MAAKwF,QAAQE,QAAQ,GAAGwD,cAAe,EACrB,SAAdD,IACAjJ,KAAKwF,QAAQ2D,cAAiBzD,UAAY0D,MAAOpJ,KAAK6I,OAAOQ,KAAMC,UAAyB,cAAdL,EAC9DrH,YAAU2H,UAAY3H,YAAU4H,eAEpDxJ,KAAKwF,QAAQiE,SAASzJ,KAAKkF,UAG/B3C,EAAoBrC,UAAUwJ,cAAgB,SAAUvF,EAAMwF,EAAeC,GACzE,GAAIC,GAASpK,OAAOoK,OAAO1F,GAAM2F,IAAIC,OAErC,OADmBF,GAAOG,SAASL,IAAkBE,EAAOG,SAASJ,IAGzErH,EAAoBrC,UAAUyH,mBAAqB,SAAUN,GACzD,GAAI3E,GAAQ1C,IACRqH,IACeA,EAAKQ,KACXoC,QAAQ,SAAUC,GACvB,GAAI/F,GAAO+F,EAAI/F,KACXgG,EAAQD,EAAIC,KAChBzH,GAAM0H,cAAcjG,EAAMgG,MAItC5H,EAAoBrC,UAAUkK,cAAgB,SAAUjG,EAAMgG,GAE1D,GADgBnK,KAAK0J,cAAcvF,EAAMnE,KAAKgI,MAAQhI,KAAKgI,MAAMlB,WAAa,GAAI9G,KAAKqJ,KAAOrJ,KAAKqJ,KAAKvC,WAAa,IACtG,CACX9G,KAAKwF,QAAQ6E,UAAUF,EACvB,IAAIG,GAAetK,KAAKuK,mBAIxB,OAHAvK,MAAKuK,qBAAsB,EAC3BvK,KAAKmK,MAAQA,OACbnK,KAAKuK,oBAAsBD,KAInC/H,EAAoBrC,UAAUsK,UAAY,SAAUC,EAAKC,GACrD,MAAOD,GAAID,UAAU,SAAUG,GAC3B,MAAOlL,QAAOmL,KAAKF,GAAKG,MAAM,SAAUtK,GAAO,MAAOoK,GAAKpK,KAASmK,EAAInK,QAKhFgC,EAAoBrC,UAAUqF,eAAiB,WAC3C,GAAI7C,GAAQ1C,IACZ,OAAOA,MAAK0F,QAAQoE,IAAI,SAAUgB,GAC9B,GAAIC,EAIJ,OAHID,GAAOE,oBAAsBF,EAAOG,SACpCF,EAAa,YAGb3B,MAAO0B,EAAO1B,MACd8B,WAAYJ,EAAOK,OACnBC,MAAON,EAAOM,MACdC,UAAgC,KAArBP,EAAOO,WAAoB3I,EAAMwD,UAAY,QAAU4E,EAAOO,UACzEJ,OAAQH,EAAOG,OACfD,kBAAmBF,EAAOE,kBAC1BM,SAAUR,EAAOQ,SACjBC,eAAgBT,EAAOS,eACvBC,iBAAkBV,EAAOU,iBACzBC,KAAMV,MAIlBxI,EAAoBrC,UAAU8I,mBAAqB,WAC/C,GAA4B,KAAxBhJ,KAAK6I,OAAOC,UAAmBvE,oBAAMvE,KAAK6I,OAAOC,SAAU,CACZ,oBAA3C9I,KAAK6G,SAASC,WAAWC,eACzB/G,KAAKkF,QAAQgD,UAAUC,IAAI,sBAE/B,IAAImC,GAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKwF,QAAQkG,eAAgB,EAC7B1L,KAAKwF,QAAQmG,eACTC,cAAc,EACdlG,SAAU1F,KAAK6I,OAAOC,SACtB+C,gBAAkB7L,KAAK8L,eAAyC,KAAxB9L,KAAK6I,OAAOC,UAAmBvE,oBAAMvE,KAAK6I,OAAOC,SACnF9I,KAAK8L,cAAgB,UAE3B9L,KAAK+L,QACL/L,KAAKwF,QAAQuG,MAAQ/L,KAAK+L,OAE9B/L,KAAKuK,oBAAsBD,IAGnC/H,EAAoBrC,UAAUiH,YAAc,WACxC,GAAI6E,GAAYhM,KAAKyF,WAAW9E,OAC5BsL,EAAajM,KAAK8E,SAASoH,cAAc,sBAC7C,IAAIF,GAAa,GAAKC,EAClBjM,KAAKmM,aACLnM,KAAK8E,SAASsH,YAAYpM,KAAKkF,SAC/BmH,YAAUrM,KAAK8E,WAAY5D,QAE1B,IAAIlB,KAAK8E,SAASoD,UAAUoE,SAASpL,IAAW8K,GAAa,EAAG,CACjEO,eAAavM,KAAK8E,WAAY5D,GAC9B,IAAIsL,GAAcxM,KAAK8E,SAASoH,cAAc,gBAC1CM,IACAxM,KAAK8E,SAASsH,YAAYI,GAGlC,GAAIxM,KAAKyM,gBAAiB,CACtB,GAAI1G,GAAa/F,KAAK8E,SAASoD,UAAUoE,SAASpL,GAA4FlB,KAAK8E,SAAS4H,wBAAwBhG,OAAxH1G,KAAK8E,SAASoH,cAAc,qBAAqBQ,wBAAwBhG,MACrI1G,MAAK2M,eAAiB5G,EACtB/F,KAAKoI,SAASwE,OACd5M,KAAK6M,SAASC,MAAMC,WAAa,QACjC/M,KAAKyM,iBAAkB,IAG/BlK,EAAoBrC,UAAUoH,gBAAkB,SAAUD,GACtDrH,KAAKwH,QAAQ,gBAAiBH,GAC9BrH,KAAKmM,YAAW,GAChBE,YAAUrM,KAAK8E,WAAY5D,KAE/BqB,EAAoBrC,UAAU2E,YAAc,WACX,UAAzB7E,KAAKyC,QAAQuK,SACbhN,KAAK+H,SAAW/H,KAAKyC,QACjB8B,oBAAMvE,KAAK+H,SAASkF,aAAa,UACjCjN,KAAK+H,SAASmF,aAAa,OAAQ,YAEnC3I,oBAAMvE,KAAK+H,SAASkF,aAAa,UACjCjN,KAAK+H,SAASmF,aAAa,OAAQ,QAEvClN,KAAK+H,SAASmF,aAAa,gBAAiB,SAC5ClN,KAAK+H,SAASmF,aAAa,gBAAiBlN,KAAKmN,SAASrG,YAC1D9G,KAAK+H,SAASmF,aAAa,gBAAiBlN,KAAKoN,SAAStG,YAC1D9G,KAAK+H,SAASmF,aAAa,eAAgB,OAC3ClN,KAAK+H,SAASmF,aAAa,iBAAkB,OAC7ClN,KAAK+H,SAASmF,aAAa,aAAc,SACzClN,KAAK+H,SAASmF,aAAa,WAAY,OAGvClN,KAAK+H,SAAW/H,KAAK+E,cAAc,SAAWsI,OAASC,KAAM,UAAW7B,KAAM,UAC9EzL,KAAKyC,QAAQ8K,cAAcC,aAAaxN,KAAK+H,SAAU/H,KAAKyC,UAEhEzC,KAAKyN,SAAWC,QAAMC,aAClBlL,QAASzC,KAAK+H,SACd6F,SAxcO,sDAycPC,eAAgB7N,KAAK6N,eACrBC,YACIC,SAAU/N,KAAKoN,SACfD,SAAUnN,KAAKmN,SACfa,YAAahO,KAAKgO,YAClB9H,UAAWlG,KAAKkG,UAChB+H,gBAAiBjO,KAAKiO,gBACtBC,SAAUlO,KAAKkO,WAEpBlO,KAAK+E,eACR/E,KAAKmO,aAAenO,KAAKyN,SAASW,UAClCpO,KAAKmO,aAAajG,UAAUC,IA9cd,sBA+cdnI,KAAKmO,aAAajB,aAAa,aAAc,SACzClN,KAAKyC,QAAQuK,UAAYhN,KAAK+D,gBAC9B/D,KAAKyC,QAAQwC,YAAYjF,KAAKmO,cAElCnO,KAAKqO,gBAAgBrO,KAAKoL,OACrB7G,oBAAMvE,KAAKgI,QAAWzD,oBAAMvE,KAAKqJ,OAAU9E,oBAAMvE,KAAKmK,QACvDnK,KAAKsO,UAAU,KAAM,MAAM,IAInC/L,EAAoBrC,UAAUmO,gBAAkB,SAAUE,GACtD,GAAIC,GAAYxO,KAAKmO,YAChB5J,qBAAMgK,KACmB,gBAAfA,GACPC,EAAU1B,MAAM1B,MAAQqD,aAAWF,GAER,gBAAfA,KACZC,EAAU1B,MAAM1B,MAASmD,EAAWG,MAAM,aAA8BD,aAAWF,MAI/FhM,EAAoBrC,UAAUiF,kBAAoB,WAC9C,GAAI1F,OAAOmL,KAAK5K,KAAK2O,gBAAgBhO,OACjC,IAAK,GAAIiO,GAAK,EAAGC,EAAKpP,OAAOmL,KAAK5K,KAAK2O,gBAAiBC,EAAKC,EAAGlO,OAAQiO,IAAM,CAC1E,GAAIE,GAAWD,EAAGD,EACD,WAAbE,EACA9O,KAAKmO,aAAajG,UAAUC,IAAInI,KAAK2O,eAAe,GAAKG,IAEvC,aAAbA,GACL9O,KAAKwE,eAAgBuJ,SAAS,IAAS,GACvC/N,KAAK+O,aAEa,aAAbD,GACL9O,KAAKwE,eAAgB2I,UAAU,IAAQ,GACvCnN,KAAKgP,YAEa,UAAbF,EACL9O,KAAKmO,aAAajB,aAAa,QAASlN,KAAK2O,eAAe,GAAKG,KAG9C,QAAS,KAAM,cAC9B,OAAQ,eAAgB,iBAAkB,aAAc,YAAa,aACzDG,QAAQH,IAAa,GAChB,gBAAbA,EACApB,QAAMwB,eAAelP,KAAK2O,eAAe,GAAKG,GAAW9O,KAAK+H,UAOlE/H,KAAK+H,SAASmF,aAAa4B,EAAU9O,KAAK2O,eAAe,GAAKG,MAOlFvM,EAAoBrC,UAAU6O,UAAY,WACtCrB,QAAMyB,YAAYnP,KAAKoN,SAAUpN,KAAK+H,UACjC/H,KAAKoN,UAMFpN,KAAKwI,aACLxI,KAAK2I,YAET0D,YAAUrM,KAAKmO,cAthBZ,cAuhBCnO,KAAKmO,cAAgBnO,KAAKmO,aAAajG,UAAUoE,SAthBhD,kBAuhBDC,eAAavM,KAAKmO,eAvhBjB,kBAyhBLnO,KAAK+H,SAASmF,aAAa,gBAAiB,QAC5ClN,KAAKmO,aAAajB,aAAa,gBAAiB,UAbhDX,eAAavM,KAAKmO,cA9gBf,cA+gBHnO,KAAK+H,SAASmF,aAAa,gBAAiB,SAC5ClN,KAAKmO,aAAajB,aAAa,gBAAiB,WAcxD3K,EAAoBrC,UAAUoO,UAAY,SAAUc,EAAYC,EAASC,GACrE,GAGI3E,GACA4E,EACAC,EACAC,EANA/M,EAAQ1C,KACR0P,EAAe1P,KAAKwF,QAAQmK,qBAAqB,GACjDC,EAAc5P,KAAKwF,QAAQqK,kBAAkB,GAK7CvF,EAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKgI,MAAQhI,KAAKgI,MAAQhI,KAAKgI,MAAMlB,WAAa9G,KAAKgI,MACvDhI,KAAKuK,oBAAsBD,CAC3B,IAAIwF,GAAe,SAAUC,GACzB,GAAIC,GAAStN,EAAMuN,oBAAoBtF,EAAMoF,EAC7CR,GAAeS,EAAOT,aACtBC,EAAcQ,EAAOR,YACrBC,EAAeO,EAAOP,aAE1B,KAAML,KAAgB7K,oBAAMvE,KAAKgI,SAAWzD,oBAAMvE,KAAKqJ,QAAY+F,OAA0Bc,KAAZb,EAAwB,CACrG,GAAIc,GAAUf,EAAcC,EAAUrP,KAAKgI,MAAQhI,KAAKqJ,KAAU9E,oBAAMvE,KAAKgI,OAAsBhI,KAAKqJ,KAAlBrJ,KAAKgI,OACtFzD,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB2K,eACtDpQ,KAAKyF,WAAW4K,aAAa,GAAIC,UAAOC,KAAK,SAAUC,GAEnD,GAAIC,GAAYD,EAAER,OACdU,EAAeD,EAAUE,OAAO,SAAUhG,GAC1C,MAAOA,GAAKyE,EAAcC,EAAU3M,EAAMmG,OAAOb,MAAQtF,EAAMmG,OAAOQ,KACjE9E,oBAAM7B,EAAMsF,OAA8BtF,EAAMmG,OAAOQ,KAAlC3G,EAAMmG,OAAOb,OAA2BlB,aAAeqJ,GAEjFO,GAAa/P,OAAS,IACtBgK,EAAO+F,EAAa,GACpBZ,EAAaW,GACb/N,EAAMkO,kBAAkBjG,EAAM+E,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9G5M,EAAM8C,QAAQ6E,UAAU3H,EAAMyH,WAIhC5F,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB7F,SAC3D+K,EAAO3K,KAAKyF,WAAWkL,OAAO,SAAUxM,GACpC,MAAOA,GAAKiL,EAAcC,EAAU3M,EAAMmG,OAAOb,MAAQtF,EAAMmG,OAAOQ,KACjE9E,oBAAM7B,EAAMsF,OAA8BtF,EAAMmG,OAAOQ,KAAlC3G,EAAMmG,OAAOb,OAA2BlB,aAAeqJ,IAClF,GACHL,EAAa9P,KAAKyF,iBAGhBlB,qBAAMvE,KAAKmK,UACZ5F,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB2K,eACtDpQ,KAAKyF,WAAW4K,aAAa,GAAIC,UAAOC,KAAK,SAAUC,GAEnD,GAAIC,GAAYD,EAAER,MAClBrF,GAAO8F,EAAU/N,EAAMyH,OACvB2F,EAAaW,GACb/N,EAAMkO,kBAAkBjG,EAAM+E,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9G5M,EAAM8C,QAAQ6E,UAAU3H,EAAMyH,UAG5B5F,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB7F,SAC3D+K,EAAO3K,KAAKyF,WAAWzF,KAAKmK,OAC5B2F,EAAa9P,KAAKyF,aAGpBzF,MAAKyF,qBAAsB2K,gBAC7BpQ,KAAK4Q,kBAAkBjG,EAAM+E,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,IAGrH/M,EAAoBrC,UAAU0Q,kBAAoB,SAAUjG,EAAM+E,EAAcE,EAAaL,EAAcC,EAAaC,EAAcL,EAAYE,GAC9I,GAAIuB,IACA7I,MAAO2C,EAAOA,EAAK3K,KAAK6I,OAAOb,OAAOlB,WAAa,KACnDgK,UAAYzH,KAAMmG,EAAaxH,MAAOuH,GACtC5E,KAAM3K,KAAK+Q,eAAe/Q,KAAKgI,OAC/BgJ,iBAAkBtB,EAClBuB,oBAAqBrB,EACrBsB,YAAalR,KAAKmO,aAClBgD,MAAO,KACPC,cAAehC,EAEnBpP,MAAK8P,aAAaP,EAAcC,EAAaC,EAAcoB,EAAiBvB,IAEhF/M,EAAoBrC,UAAU+P,oBAAsB,SAAUtF,EAAMoF,GAChE,MAAKxL,qBAAMoG,IASP4E,aAAc,KACdC,YAAa,KACbC,aAAc,OAVd/B,QAAM2D,SAAS1G,EAAK3K,KAAK6I,OAAOQ,MAAMvC,WAAY9G,KAAK+H,SAAU/H,KAAK6N,eAAgB7N,KAAKiO,kBAEvFsB,aAAc5E,EAAK3K,KAAK6I,OAAOb,OAAOlB,WACtC0I,YAAa7E,EAAK3K,KAAK6I,OAAOQ,MAAMvC,WACpC2I,aAAcM,EAASd,QAAQtE,MAS3CpI,EAAoBrC,UAAUkF,YAAc,WACxCpF,KAAK6M,SAAW7M,KAAK+E,cAAc,OAC/BjC,GAAI9C,KAAKyC,QAAQK,GAAK,WAAYkC,UAAWsM,+BAAmD,OAAlBtR,KAAKkO,SAAoBlO,KAAKkO,SAAW,MAE3HqD,aAAWvR,KAAK6M,UAAY2E,aAAcxR,KAAKyC,QAAQK,GAAIwK,KAAQ,WACnEmE,SAASC,KAAKzM,YAAYjF,KAAK6M,UAC/B7M,KAAK2R,YAAY3R,KAAK6M,UACtB+E,WAAS5R,KAAK8E,UAAW9E,KAAK6M,UAC1B7M,KAAK6R,gBACL7R,KAAK8R,mBAET,IAAInL,GAAc3G,KAAK+R,SAAQ,EAE/B,IADA/R,KAAK6M,SAASC,MAAMkF,UAAYrL,EAC5B3G,KAAK6R,eAAgB,CACrB7R,KAAKiS,OAASjS,KAAKiS,OAASjS,KAAKiS,OAASjS,KAAK6M,SAASX,cAAc,kBACtE,IAAIxF,GAASwL,KAAKC,MAAMnS,KAAKiS,OAAOvF,wBAAwBhG,OAC5DC,GAAc8H,aAAW2D,SAASzL,EAAa,IAAMD,EAAS,MAElE1G,KAAK8E,SAASgI,MAAMkF,UAAYrL,EAChC3G,KAAKqS,mBACLrS,KAAK6M,SAASC,MAAMC,WAAa,SACjC/M,KAAKyM,iBAAkB,GAE3BlK,EAAoBrC,UAAUmS,iBAAmB,SAAUC,EAAUC,EAAYC,GAC7E,GAAI9L,EACJ,IAAI4L,EAAU,CACV,GAAIG,GAAiBzS,KAAKwF,QAAQkN,aAAaxG,cAAc,cACzDyG,EAAkBF,EAAeG,aAAeH,EAAeI,aAC/DC,EAAiBN,EAAkBxS,KAAK2M,cAChB,MAAxB3M,KAAK6I,OAAOC,SAAmBvE,oBAAMvE,KAAK6I,OAAOC,WACjDgK,GAAkB9S,KAAK2M,gBAE3BjG,EAAS6L,GAAcO,EAAiB9S,KAAK+S,eAAkBD,EAAiBH,EAAmB,KAAqC3S,KAAK+S,eAAiB,SAG9J/S,MAAK+S,eAAiB/S,KAAK8E,SAAS4H,wBAAwBhG,OAAS1G,KAAK8E,SAASoH,cAAc,iBAAiBQ,wBAAwBhG,OAC1IA,EAAS1G,KAAK+S,eAAiB,IAEnC,IAAIzI,GAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKwF,QAAQkB,OAASA,EACtB1G,KAAKuK,oBAAsBD,GAE/B/H,EAAoBrC,UAAUyR,YAAc,SAAUlP,GAClD,GAAIC,GAAQ1C,IACZA,MAAKoI,SAAW,GAAI4K,SAAMvQ,GACtB2I,MAAOpL,KAAK+R,SAAQ,GACpBkB,WAAY,WACZC,WAAaC,EAAG,OAAQC,EAAG,QAC3BC,SAAUrT,KAAKmO,aACfjI,UAAWlG,KAAKkG,UAChBoN,UAAYH,EAAG,OAAQC,EAAG,UAC1BG,mBAAoB,WACXC,UAAQC,UACT/Q,EAAMiG,aAGd+K,KAAM,WACFhR,EAAMqF,SAAS4L,QACfjR,EAAMkR,2BAIlBrR,EAAoBrC,UAAU4R,kBAAoB,WAC1C9R,KAAKiS,OAEDjS,KAAK6T,SAA0C,kBAAxB7T,MAAK6R,eAC5B7R,KAAK8T,eAAe,mBAGpB9T,KAAKiS,OAAO8B,UAAY,IAI5B/T,KAAKiS,OAASjS,KAAK+E,cAAc,OACjCsH,YAAUrM,KAAKiS,QAAS,kBAE5B,IAEI+B,GAFiBhU,KAAKiU,oBAAoBjU,KAAK6R,iBAEpBqC,MADflU,KAAKyF,WAAW9E,QACmBX,KAAM,iBAAkBA,KAAKyC,QAAQK,GAAK,iBAAkB9C,KAAKmU,qBAAkBjE,GAAWlQ,KAAKiS,OAClJ+B,KACAA,EAAUpU,MAAMM,UAAUkU,MAAMzR,KAAKqR,GACrCK,SAAOL,EAAShU,KAAKiS,SAEzBoC,UAAQrU,KAAKiS,QAASjS,KAAK6M,WAE/BtK,EAAoBrC,UAAUiM,WAAa,SAAU/E,GAOjD,GANIpH,KAAKsU,SACLtU,KAAKsU,SAASP,UAAY,GAG1B/T,KAAKsU,SAAWtU,KAAK+E,cAAc,OAER,qBAA3B/E,KAAKuU,mBAA2E,mBAA/BvU,KAAKwU,sBAA4C,CAClG,GAAIlJ,GAAWlE,EAAgBpH,KAAKwU,sBAAwBxU,KAAKuU,kBAC7DE,EAAarN,EAAgBpH,KAAKyC,QAAQK,GAAK,iBAAmB9C,KAAKyC,QAAQK,GAAK,aACpF4R,EAAiBtN,EAAgB,wBAA0B,oBAE3D4M,EADiBhU,KAAKiU,oBAAoB3I,MACbtL,KAAM0U,EAAgBD,EAAYzU,KAAKmU,qBAAkBjE,GAAWlQ,KAAKsU,SACtGN,KACAA,EAAUpU,MAAMM,UAAUkU,MAAMzR,KAAKqR,GACrCK,SAAOL,EAAShU,KAAKsU,eAGxB,CACD,GAAIK,IAAeJ,kBAAmB,mBAAoBC,sBAAuB,iBACjFxU,MAAK4U,KAAO,GAAIC,QAAK,sBAAuBF,EAAY3U,KAAK8U,QAC7D9U,KAAKsU,SAASP,UAAY3M,EACtBpH,KAAK4U,KAAKG,YAAY,yBAA2B/U,KAAK4U,KAAKG,YAAY,qBAE/E1I,YAAUrM,KAAKsU,UAAW,gBAC1B1C,WAAS5R,KAAKsU,UAAWtU,KAAK8E,UAC9B9E,KAAKoI,SAASC,mBASlB9F,EAAoBrC,UAAU+T,oBAAsB,SAAU3I,GAC1D,GAAwB,gBAAbA,GAAuB,CAC9B,GAAI0J,GAAU,EACd,KACI,GAAIC,GAAUC,SAAO5J,EAGjB0J,GAFAC,EAE8B,WAApBA,EAAQjI,QAAuBiI,EAAQlB,UAAYkB,EAAQE,UAG3D7J,EAGlB,MAAOkF,GACHwE,EAAU1J,EAEd,MAAO8J,WAAQJ,GAIf,MAAOI,WAAQ9J,IAIvB/I,EAAoBrC,UAAU6R,QAAU,SAAUsD,GAC9C,GAAIC,GAAmBD,EAAerV,KAAKuV,WAAavV,KAAK2G,YACzD6O,EAAO/G,aAAW6G,EAQtB,OAPIE,GAAKvG,QAAQ,MAAQ,EAErBuG,IADqBH,EAAerV,KAAKmO,aAAasH,YAAchE,SAASiE,gBAAgB7C,cACpE8C,WAAWH,GAAQ,KAAK1O,WAAa,KAE7B,gBAArBwO,KACZE,EAAOF,EAAiB5G,MAAM,SAAW4G,EAAmBE,GAEzDA,GAEXjT,EAAoBrC,UAAUuI,gBAAkB,SAAUyB,EAAKsG,EAAGoF,GAC9D,GAAIlT,GAAQ1C,KACR6V,GACAzE,eAAcZ,EACd7F,KAAM3K,KAAKwF,QAAQmK,qBAAqB,GACxCuB,YAAahH,EACb4G,SAAU9Q,KAAKwF,QAAQmK,qBAAqB,GAC5CwB,MAAOX,EACPjI,QAAQ,GAERuN,EAAkB9V,KAAKwF,QAAQmK,qBAAqB,GACpDoG,EAAYD,EAAkBA,EAAgB9V,KAAK6I,OAAOQ,MAAMvC,WAAa,GAC7EkP,EAAaF,EAAkBA,EAAgB9V,KAAK6I,OAAOb,OAAOlB,WAAa,GAC/E+J,GACAO,eAAcZ,EACd7F,KAAMmL,EACN5E,YAAahH,EACb4G,UAAYzH,KAAM0M,EAAW/N,MAAOgO,GACpC7E,MAAOX,EACPjI,QAAQ,EACRP,MAAOgO,EACPhF,kBAAoB3H,KAAMrJ,KAAKqJ,KAAMrB,MAAOhI,KAAKgI,OACjDiJ,oBAAqBjR,KAAKiR,oBAE9BjR,MAAKwH,QAAQ,SAAUqO,EAAW,SAAUA,GACxC,IAAKA,EAAUtN,QAAUsN,EAAU/E,SAAU,CACzC,GAAImF,GAAiBJ,EAAU/E,SAC3BoF,EAAU1F,EACV2F,EAA8B,UAAhBD,EAAQ3V,KAAmC,QAAhB2V,EAAQ3V,KAAiB2V,EAAQE,UAA4B,QAAhBF,EAAQ3V,KAAiB2V,EAAQG,QAA0B,YAAhBH,EAAQ3V,MACxIqV,GAAaA,GAAYO,IAC1BzT,EAAMoN,aAAamG,EAAevT,EAAMmG,OAAOb,OAAQiO,EAAevT,EAAMmG,OAAOQ,MAAO3G,EAAM8C,QAAQkD,iBAAkBmI,GAE9HnD,QAAM2D,SAAS4E,EAAevT,EAAMmG,OAAOQ,MAAO3G,EAAMqF,SAAUrF,EAAMmL,eAAgBnL,EAAMuL,mBACzF2H,GAAaA,GAAYO,IAC1BzT,EAAMiG,UAAU6H,OAKhCjO,EAAoBrC,UAAU4P,aAAe,SAAU9H,EAAOqB,EAAMc,EAAO0L,EAAWvG,GAClFtP,KAAKiR,oBAAsB4E,EAAU3E,WACrC,IAAI5G,GAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKqJ,KAAOA,GAAcrJ,KAAKqJ,KAC/BrJ,KAAKgI,MAAQA,GAAgBhI,KAAKgI,MAClChI,KAAKmK,MAAS5F,oBAAM4F,GAAiBnK,KAAKmK,MAAbA,EAC7BnK,KAAKuK,oBAAsBD,EACtBgF,GACDtP,KAAKsW,mBAAmBT,IAGhCtT,EAAoBrC,UAAUoW,mBAAqB,SAAUT,GACzD7V,KAAKwH,QAAQ,SAAUqO,EAAW,SAAUA,GACpCA,EAAUtN,UAKtBhG,EAAoBrC,UAAUqW,aAAe,SAAU/F,GACnD,GAAI9N,GAAQ1C,IAGZ,IAFAA,KAAKwW,UAAU,MAAM,GACrBxW,KAAK4T,uBACD5T,KAAKyW,eAAgB,CACrB,GAAIC,GAAelG,EAAElQ,OAAO0H,MAAMjB,cAC9B4P,GAAoB,EACpBC,GACAC,sBAAsB,EACtBxN,KAAMqN,EACNI,WAAY,SAAUrR,EAAYY,EAAOwC,GACjC+N,EAAYrO,SAGhBoO,GAAoB,EACpBjU,EAAMqU,aAAatR,EAAYiR,EAAcrQ,EAAOwC,KAExDsI,MAAOX,EACPjI,QAAQ,EAEZvI,MAAKwH,QAAQ,YAAaoP,EAAa,SAAUf,GACxCA,EAAUtN,QAAWsN,EAAUgB,sBAAyBF,GACzDjU,EAAMqU,aAAarU,EAAM+C,WAAYiR,EAAchU,EAAM2D,MAAO3D,EAAMmG,UAIlF7I,KAAKgX,iBAAiBxG,EAAElQ,OAAO0H,QAEnCzF,EAAoBrC,UAAU8W,iBAAmB,SAAUC,GACvD,GACI9S,GADAzB,EAAQ1C,IAEZ,IAAIA,KAAKyF,qBAAsB2K,eAAa,CACxC,GAAI/J,GAAQ,GAAIiK,QAChBtQ,MAAKyF,WAAW4K,aAAahK,GAAOkK,KAAK,SAAUP,GAC/C,GAAIkH,GAAYlH,EAAOA,MACvB7L,GAAO+S,EAAUvG,OAAO,SAAUhG,GAC9B,MAAOA,GAAKjI,EAAMmG,OAAOQ,MAAMvC,WAAWC,cAAcoQ,WAAWF,EAAWlQ,iBAElFrE,EAAM0U,mBAAmBjT,SAGxBvE,OAAMyX,QAAQrX,KAAKyF,cACxBtB,EAAOnE,KAAKyF,WAAWkL,OAAO,SAAUhG,GACpC,MAAOA,GAAKjI,EAAMmG,OAAOQ,MAAMvC,WAAWC,cAAcoQ,WAAWF,EAAWlQ,iBAElF/G,KAAKoX,mBAAmBjT,KAGhC5B,EAAoBrC,UAAUkX,mBAAqB,SAAUjT,GAOzD,GANIA,EAAKxD,OAAS,EACdX,KAAK6D,eAAiBM,EAAK,GAG3BnE,KAAK6D,eAAiB,KAEtB7D,KAAK6D,eAAgB,CACrB,GAAIyT,GAAgBtX,KAAKwK,UAAUxK,KAAKwF,QAAQ+R,gBAAiBvX,KAAK6D,eACtE7D,MAAK4D,cAAgB5D,KAAKwF,QAAQgS,cAAcF,OAGhDtX,MAAK4D,cAAgB,MAI7BrB,EAAoBrC,UAAU6W,aAAe,SAAUtR,EAAYwR,EAAY5Q,EAAOwC,GAClF,GACI4H,GADA/N,EAAQ1C,IAEZ,IAAIyX,oBAAkBpR,IAAUoR,oBAAkB5O,GAC9C7I,KAAK0X,qBAAqBjS,OAEzB,IAAIY,EACL,GAAI+J,eAAY3K,GAAY4K,aAAahK,GAAOkK,KAAK,SAAUC,GAC3DC,EAAYD,EAAER,OACdtN,EAAMgV,qBAAqBjH,SAG9B,CACD,GAEIkH,GAFAC,EAAe5X,KAAK6X,WAAW/Q,WAAWC,cAC1C+Q,EAAUzR,GAAS,GAAIiK,QAEvB7K,aAAsB2K,eAEtB3K,EAAW4K,aAAayH,GAASvH,KAAK,SAAUC,GAE5C,GAAIC,GAAYD,EAAER,OACd+H,EAAatH,EAAU9P,MAC3BgX,GAAiBlH,EAAUE,OAAO,SAAUhG,GAAQ,MAAOjI,GAAMsV,WAAWrN,EAAMiN,EAAcX,EAAYpO,KAC5GnG,EAAMgV,qBAAqBC,EAAgBI,KAG1CnY,MAAMyX,QAAQ5R,KAEnBkS,EAAiBlS,EAAWkL,OAAO,SAAUhG,GACzC,MAAOjI,GAAMsV,WAAWrN,EAAMiN,EAAcX,EAAYpO,KAE5D7I,KAAK0X,qBAAqBC,MAItCpV,EAAoBrC,UAAU8X,WAAa,SAAUrN,EAAMkN,EAAYZ,EAAYpO,GAC/E,GAAIoP,GAAYtN,EAAK9B,EAASA,EAAOQ,KAAOrJ,KAAK6I,OAAOQ,MAAMvC,WAAWC,aACzE,QAAQ8Q,GACJ,IAAK,aACD,MAAOI,GAAUd,WAAWF,EAChC,KAAK,WACD,MAAOgB,GAAUC,SAASjB,EAC9B,KAAK,WACD,MAAOgB,GAAUjO,SAASiN,EAC9B,SACI,OAAO,IAGnB1U,EAAoBrC,UAAUwX,qBAAuB,SAAUjS,EAAYsS,GACvE,GAAIxF,IAAa,CACjB,IAAI9M,EAAW9E,OAAS,EAAG,CAEvB4R,GADevS,KAAKyF,qBAAsB2K,eAAc2H,EAAa/X,KAAKyF,WAAW9E,UAC3D8E,EAAW9E,OACrC4L,eAAavM,KAAK8E,WAAY5D,GAC9B,IAAIsL,GAAcxM,KAAK8E,SAASoH,cAAc,gBAC1CM,IACAxM,KAAK8E,SAASsH,YAAYI,GAE9BxM,KAAKwF,QAAQC,WAAaA,EAC1BzF,KAAK8H,gBAAiB,MAGtB9H,MAAKmM,aACLE,YAAUrM,KAAK8E,WAAY5D,GAE/BlB,MAAKqS,kBAAiB,EAAME,EAAY9M,EAAW9E,SAEvD4B,EAAoBrC,UAAUmF,WAAa,WAClCd,oBAAMvE,KAAKyN,SAASG,QAAQ,MAC7BuK,eAAahQ,IAAInI,KAAKyN,SAASG,QAAQ,GAAI,YAAa5N,KAAKoY,YAAapY,MAC1EmY,eAAahQ,IAAInI,KAAKyN,SAASG,QAAQ,GAAI,YAAa5N,KAAKqY,cAAerY,OAEhFmY,eAAahQ,IAAIsJ,SAAU,YAAazR,KAAKsY,gBAAiBtY,MAC9DmY,eAAahQ,IAAInI,KAAKkF,QAAS,QAASlF,KAAKuY,aAAcvY,MAC3DmY,eAAahQ,IAAInI,KAAK+H,SAAU,QAAS/H,KAAKuW,aAAcvW,MAC5DmY,eAAahQ,IAAInI,KAAK+H,SAAU,QAAS/H,KAAK4I,QAAS5I,MACnDA,KAAKiO,iBACLkK,eAAahQ,IAAInI,KAAKyN,SAAS+K,YAAa,YAAaxY,KAAKyY,UAAWzY,MAE7EmY,eAAahQ,IAAI/D,OAAQ,SAAUpE,KAAK0Y,aAAc1Y,MACtDA,KAAK2Y,eAAiB,GAAIC,kBAAe5Y,KAAKmO,cAC1C0K,UAAW7Y,KAAK8Y,iBAAiBC,KAAK/Y,MACtCiD,WAAYjD,KAAKiD,WACjB+V,UAAW,YAEfhZ,KAAK2Y,eAAiB,GAAIC,kBAAe5Y,KAAKkF,SAC1C2T,UAAW7Y,KAAK+I,qBAAqBgQ,KAAK/Y,MAC1CiD,WAAYjD,KAAKiD,WACjB+V,UAAW,aAGnBzW,EAAoBrC,UAAU+Y,aAAe,WACpC1U,oBAAMvE,KAAKyN,SAASG,QAAQ,MAC7BuK,eAAae,OAAOlZ,KAAKyN,SAASG,QAAQ,GAAI,YAAa5N,KAAKoY,aAChED,eAAae,OAAOlZ,KAAKyN,SAASG,QAAQ,GAAI,YAAa5N,KAAKqY,gBAEpEF,eAAae,OAAOzH,SAAU,YAAazR,KAAKsY,iBAChDH,eAAae,OAAOlZ,KAAK+H,SAAU,QAAS/H,KAAKuW,cACjD4B,eAAae,OAAOlZ,KAAKmO,aAAc,QAASnO,KAAK4I,SACrDuP,eAAae,OAAO9U,OAAQ,SAAUpE,KAAK0Y,cAC3CP,eAAae,OAAOlZ,KAAKkF,QAAS,QAASlF,KAAKuY,cAC5CvY,KAAKiO,iBACLkK,eAAae,OAAOlZ,KAAKyN,SAAS+K,YAAa,YAAaxY,KAAKyY,WAEjEzY,KAAK2Y,gBACL3Y,KAAK2Y,eAAeQ,WAG5B5W,EAAoBrC,UAAUkY,YAAc,SAAU5H,GAClDA,EAAE4I,kBAEN7W,EAAoBrC,UAAUmY,cAAgB,SAAU7H,GACpD,IAAIxQ,KAAKoN,WAAYpN,KAAKmN,SAA1B,CAGA,GAAIkM,GAAarZ,KAAKkF,QAAQgH,cAAc,eACxCmN,IACAA,EAAWnR,UAAUgR,OAAO,eAE5BlZ,KAAKwI,YACLxI,KAAK2I,UAAU6H,GAGfxQ,KAAKwW,UAAUhG,KAGvBjO,EAAoBrC,UAAUqY,aAAe,SAAU/H,GACnD,GAAIlQ,GAASkQ,EAAElQ,OACX4J,EAAMoP,UAAQhZ,EAAQ,UACtBoI,EAAmB1I,KAAKwF,QAAQkD,gBAChCwB,KACIxB,GAAoB,EACpB1I,KAAKyI,gBAAgByB,EAAKsG,IAG1BxQ,KAAKwF,QAAQkD,iBAAmB1I,KAAKwF,QAAQyC,UAAUgH,QAAQ/E,GAC/DlK,KAAKwF,QAAQ6E,UAAUrK,KAAKwF,QAAQkD,kBACpC1I,KAAK2I,UAAU6H,MAI3BjO,EAAoBrC,UAAUoY,gBAAkB,SAAU9H,GACtD,GAAIxQ,KAAKoN,UAAYpN,KAAKmN,WAAanN,KAAKwI,YAIxC,YAHMgI,EAAElQ,OAAOgZ,QAAQ,wBACnBtZ,KAAKuZ,WAIb,IAAIjZ,GAASkQ,EAAElQ,MACVA,GAAO4H,UAAUoE,SAAS,4BAA8BgN,UAAQhZ,EAAQ,YACzEkQ,EAAE4I,iBAGG9Y,EAAO4H,UAAUoE,SAAS,0BAA6BhM,EAAO4H,UAAUoE,SAAS,iBAClFtM,KAAKwZ,oBAAoBhJ,IAIrCjO,EAAoBrC,UAAUsZ,oBAAsB,SAAUC,EAAYC,EAAUC,GAChF,GAAIjX,GAAQ1C,KACRwQ,EAAIiJ,GAA0BC,CAElC,IADA1Z,KAAK2I,UAAU6H,GACXxQ,KAAK4D,gBAAkB+V,EAAe,CAClCrP,EAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BqP,WAAW,WACPlX,EAAMqF,SAASC,MAAQtF,EAAMmB,eAAenB,EAAMmG,OAAOQ,MAAMvC,WAC/DpE,EAAMsF,MAAQtF,EAAMmB,eAAenB,EAAMmG,OAAOb,OAAOlB,UACvD,IAAI+S,GAAcnX,EAAM8H,UAAU9H,EAAM8C,QAAQ+R,gBAAiB7U,EAAMmB,eACvEnB,GAAMyH,MAAQ0P,EACdnX,EAAM2G,KAAO3G,EAAMmB,eAAenB,EAAMmG,OAAOQ,MAAMvC,WACrDpE,EAAM8C,QAAQ6E,UAAUwP,GACxBnX,EAAM+F,gBAAgB/F,EAAM8C,QAAQgS,cAAcqC,GAAcrJ,GAChE9N,EAAMuO,oBAAsBvO,EAAM8C,QAAQqK,kBAAkB,IAC7D,KACH7P,KAAKuK,oBAAsBD,MAG3B,IAAItK,KAAK8H,eAAgB,CACrB9H,KAAK+H,SAASC,MAAQ,EACtB,IAAI6I,IACA7I,MAAO,KACP8I,UAAYzH,KAAM,KAAMrB,MAAO,MAC/B2C,KAAM,KACNqG,kBAAoB3H,KAAMrJ,KAAKqJ,KAAMrB,MAAOhI,KAAKgI,OACjDiJ,oBAAqBjR,KAAKiR,oBAC1BC,YAAa,KACbC,MAAOX,EACPY,cAAc,EACd7I,QAAQ,GAER+B,EAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKqJ,KAAOrJ,KAAKgI,MAAQhI,KAAKmK,MAAQ,KACtCnK,KAAKwF,QAAQsU,iBACb9Z,KAAKuK,oBAAsBD,EAC3BtK,KAAKsW,mBAAmBzF,GACxB7Q,KAAK8H,gBAAiB,EACtB9H,KAAK6D,eAAiB7D,KAAK4D,cAAgB,OAIvDrB,EAAoBrC,UAAUuY,UAAY,SAAUjI,GAChDxQ,KAAK8H,gBAAiB,EACtB9H,KAAKwZ,oBAAoBhJ,EAAG,MAAM,IAEtCjO,EAAoBrC,UAAUwY,aAAe,WACrC1Y,KAAKoI,WACLpI,KAAKoI,SAAS5D,eAAgB4G,MAAOpL,KAAK+R,SAAQ,KAClD/R,KAAKoI,SAASC,oBAItB9F,EAAoBrC,UAAU6Z,YAAc,SAAUC,EAAUC,GAC5D,GAAIC,GAAWla,KAAKoI,UAAYpI,KAAKmO,aAAcnO,KAAKoI,SAAS3F,UAAYzC,KAAKmO,aAC7E5J,qBAAM0V,IAA0B,KAAbA,GACpB1N,cAAY2N,EAAUD,EAASE,MAAM,MAEpC5V,oBAAMyV,IAA0B,KAAbA,GACpB3N,WAAS6N,EAAUF,EAASG,MAAM,OAG1C5X,EAAoBrC,UAAU4Y,iBAAmB,SAAUtI,GACvD,OAAQA,EAAE4J,QACN,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,MACGpa,KAAKwI,YACLxI,KAAK2I,UAAU6H,GAGfxQ,KAAKuZ,UAET,MACJ,KAAK,UACIvZ,KAAKwI,cACNxI,KAAKwW,UAAUhG,GACfxQ,KAAKqa,mBAAmB7J,GAAG,GAE/B,MACJ,KAAK,WACL,IAAK,SACDxQ,KAAKqa,mBAAmB7J,GAAG,GAAM,EACjC,MACJ,KAAK,QACDxQ,KAAKwZ,oBAAoB,KAAMhJ,GAC/BxQ,KAAK4I,QAAQ4H,EACb,MACJ,KAAK,OACL,IAAK,MACDxQ,KAAKqa,mBAAmB7J,KAIpCjO,EAAoBrC,UAAU6I,qBAAuB,SAAUyH,EAAG8J,GA2B9D,OA1BIA,IACc,cAAV9J,EAAEjQ,IACFiQ,EAAE4J,OAAS,WAEI,YAAV5J,EAAEjQ,IACPiQ,EAAE4J,OAAS,SAEI,QAAV5J,EAAEjQ,IACPiQ,EAAE4J,OAAS,MAEI,SAAV5J,EAAEjQ,IACPiQ,EAAE4J,OAAS,OAEI,QAAV5J,EAAEjQ,IACPiQ,EAAE4J,OAAS,MAEI,WAAV5J,EAAEjQ,MACPiQ,EAAE4J,OAAS,UAEX5J,EAAE4F,UAAsB,QAAV5F,EAAEjQ,MAChBiQ,EAAE4J,OAAS,YAEX5J,EAAE6F,QAAoB,YAAV7F,EAAEjQ,MACdiQ,EAAE4J,OAAS,UAGX5J,EAAE4J,QACN,IAAK,SACL,IAAK,MACL,IAAK,WACL,IAAK,QACGpa,KAAKwI,cACLgI,EAAE4I,iBACe,WAAb5I,EAAE4J,QACFpa,KAAKqa,mBAAmB7J,GAE5BxQ,KAAK2I,UAAU6H,GAEnB,MACJ,KAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,MACDxQ,KAAKqa,mBAAmB7J,KAIpCjO,EAAoBrC,UAAUma,mBAAqB,SAAU7J,EAAG+J,EAAeC,GAE3E,OADsB,KAAlBD,IAA4BA,GAAgB,GAC5Cva,KAAKwI,YAAa,CAClB,GAAI2B,GAASnK,KAAK6I,OAAOC,QAA0C9I,KAAKwF,QAAQkD,iBAAmB1I,KAAKwF,QAAQkD,iBAAmB,EAAhG1I,KAAKwF,QAAQkD,kBAChC,IAAXyB,IAA8B,aAAbqG,EAAE4J,QAAsC,WAAb5J,EAAE4J,SAAuC,SAAb5J,EAAE4J,OAC3EjQ,EAAQ,EAEFA,GAASnK,KAAKwF,QAAQyC,UAAUtH,QAAuB,aAAb6P,EAAE4J,QAAwC,QAAb5J,EAAE4J,OAC/EjQ,EAAQnK,KAAKwF,QAAQyC,UAAUtH,OAAS,EAEtB,aAAb6P,EAAE4J,QAA0BjQ,GAAS,GAAKA,GAASnK,KAAKwF,QAAQyC,UAAUtH,SAAYX,KAAK6I,OAAOC,SAAW0R,GAClHrQ,GAAS,GAES,WAAbqG,EAAE4J,QAAuBjQ,EAAQ,GAAMnK,KAAK6I,gBAAmB2R,KACpErQ,GAAS,GAEbnK,KAAKwF,QAAQ6E,UAAUF,GACvBnK,KAAKwF,QAAQkD,iBAAmByB,CAChC,IAAIkP,GAAarZ,KAAKkF,QAAQgH,cAAc,eACxCmN,IACAA,EAAWnR,UAAUgR,OAAO,eAE5BqB,GACAva,KAAKyI,gBAAgBzI,KAAKwF,QAAQyC,UAAUkC,GAAQqG,GAAG,KAInEjO,EAAoBrC,UAAU0T,qBAAuB,WACjD,GAAI6G,GAAeza,KAAKmO,aAAajC,cAAc,gBAC/CuO,KACAA,EAAa3N,MAAM4N,QAAkC,KAAxB1a,KAAK+H,SAASC,MAAe,OAAS,SAS3EzF,EAAoBrC,UAAU0I,QAAU,SAAU4H,GAC1CxQ,KAAKoN,UAAYpN,KAAKmN,WAG1Bd,YAAUrM,KAAKmO,eA1uCN,kBA2uCTnO,KAAK+H,SAAS4L,QACd3T,KAAK4T,uBACL5T,KAAKwH,QAAQ,QAASgJ,GACM,UAAxBxQ,KAAK6N,gBACLH,QAAMiN,eAAe3a,KAAK+H,SAAU/H,KAAKmO,gBASjD5L,EAAoBrC,UAAUqZ,SAAW,SAAU/I,GAC/C,IAAIxQ,KAAKoN,WAAYpN,KAAKmN,SAA1B,CAGInN,KAAKwI,aACLxI,KAAK2I,UAAU6H,GAEnBjE,eAAavM,KAAKmO,eA/vCT,iBAgwCT,IAAIsM,GAAeza,KAAKmO,aAAajC,cAAc,gBAC/CuO,KACAA,EAAa3N,MAAM4N,QAAU,QAEL,UAAxB1a,KAAK6N,gBACLH,QAAMiN,eAAe3a,KAAK+H,SAAU/H,KAAKmO,gBASjD5L,EAAoBrC,UAAUsW,UAAY,SAAUhG,EAAGoK,GACnD,GAAIlY,GAAQ1C,KACR6a,GAAcC,KAAM,SAAUC,SAAU,KACxClF,GAAcmF,MAAOhb,KAAKoI,SAAU+I,MAAOX,EAAGjI,QAAQ,EAAO0S,UAAWJ,EAC5E7a,MAAKwH,QAAQ,OAAQqO,EAAW,SAAUA,GACtC,IAAKA,EAAUtN,SAAW7F,EAAM8F,YAAa,CACzC9F,EAAM8F,aAAc,EACpB9F,EAAM0F,SAASC,kBACfgE,YAAU3J,EAAMyL,eAzxCZ,gBA0xCJoD,aAAW7O,EAAMqF,UAAYmT,gBAAiB,OAAQC,YAAazY,EAAMD,QAAQK,GAAK,SAAUsY,gBAAiB1Y,EAAMD,QAAQK,KAC1H8X,KACIlY,EAAMsF,OAAStF,EAAM2G,MAAQ3G,EAAMyH,QACrBzH,EAAM8C,QAAQ+R,gBACpBtN,QAAQ,SAAU9F,EAAMgG,GAC7BzH,EAAM0H,cAAcjG,EAAMgG,KAGlCzH,EAAMkG,QAAQ4H,GAElB,IAAI6K,GAAa3Y,EAAM8C,QAAQkN,YAC/B,IAAI2I,EAAY,CACZ,GAAIC,GAAYD,EAAWnP,cAAc,sBACrCoP,GACA5Y,EAAMqF,SAASmF,aAAa,wBAAyBoO,EAAU/N,cAAcN,aAAa,aAErFoO,EAAWnP,cAAc,WAC9BxJ,EAAMqF,SAASmF,aAAa,wBAAyBmO,EAAWnP,cAAc,UAAUe,aAAa,aAG7GvK,EAAM0F,SAASmT,KAAK,GAAIC,aAAU3F,EAAUoF,WAAYvY,EAAMmK,cAU1EtK,EAAoBrC,UAAUyI,UAAY,SAAU6H,GAChD,GAAI9N,GAAQ1C,KACR6a,GAAcC,KAAM,UAAWC,SAAU,KACzClF,GAAcmF,MAAOhb,KAAKoI,SAAU+I,MAAOX,GAAK,KAAMjI,QAAQ,EAAO0S,UAAWJ,EACpF7a,MAAKwH,QAAQ,QAASqO,EAAW,SAAUA,GACvC,IAAKA,EAAUtN,OAAQ,CAMnB,GALA7F,EAAM8F,aAAc,EACpB+D,eAAa7J,EAAMyL,eA/zCf,gBAg0CJoD,aAAW7O,EAAMqF,UAAYmT,gBAAiB,UAC9CxY,EAAM0F,SAASwE,KAAK,GAAI4O,aAAU3F,EAAUoF,YAC5CvY,EAAMqF,SAASC,MAAQtF,EAAM2G,KAAO3G,EAAM2G,KAAKvC,WAAa,GACxD0J,EAAG,CACH,GAAIlQ,GAASkQ,EAAElQ,MACXA,KAAWA,EAAO4H,UAAUoE,SAAS,4BAA8BhM,EAAO4H,UAAUoE,SAAS,eACxF5J,EAAMsF,OACPtF,EAAM8C,QAAQsU,iBAElBF,WAAW,WAAclX,EAAMkG,QAAQ4H,MAGvC9N,EAAM6W,WAGd7W,EAAMqF,SAAS0T,gBAAgB,aAC/B/Y,EAAMqF,SAAS0T,gBAAgB,4BAGvC7B,WAAW,WACHlX,EAAM8C,UACN9C,EAAM8C,QAAQC,WAAa/C,EAAM+C,WACjC/C,EAAM2P,kBAAiB,GAAM,KAElC,MAUP9P,EAAoBrC,UAAUwb,SAAW,SAAUC,EAAOxR,GACtD,GAAIG,GAAetK,KAAKuK,mBACxBvK,MAAKuK,qBAAsB,EAC3BvK,KAAKwF,QAAQW,aAAaC,aAAc,EACxCpG,KAAKwF,QAAQwJ,WACbhP,KAAKuK,oBAAsBD,EAC3BtK,KAAKwF,QAAQoW,UAAUD,EAAOxR,IAQlC5H,EAAoBrC,UAAU2b,SAAW,WACrC,MAAO7b,MAAKwF,QAAQsW,eAQxBvZ,EAAoBrC,UAAU6Q,eAAiB,SAAU/I,GACrD,GAAItF,GAAQ1C,IACZ,QAAKuE,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB7F,OAC/CI,KAAKyF,WAAWkL,OAAO,SAAUhG,GACpC,MAAOA,GAAKjI,EAAMmG,OAAOb,OAAOlB,aAAekB,IAChD,KAEGzD,oBAAMvE,KAAKyF,aAAezF,KAAKyF,qBAAsB2K,gBAC3DpQ,KAAKyF,WAAW4K,aAAa,GAAIC,UAASC,KAAK,SAAUC,GAGrD,MADgBA,GAAER,OACDW,OAAO,SAAUhG,GAC9B,MAAOA,GAAKjI,EAAMmG,OAAOb,OAAOlB,aAAekB,IAChD,KAGJ,OAEXzF,EAAoBrC,UAAUiZ,QAAU,WAMpC,GALAnZ,KAAKiZ,eACDjZ,KAAKwF,UACLxF,KAAKwF,QAAQ2T,UACb4C,SAAO/b,KAAKwF,QAAQ/C,UAEpBzC,KAAK+H,SAAU,CAGf,IAAK,GAFDiU,IAAa,cAAe,gBAAiB,aAAc,aAAc,OAAQ,OACjF,YAAa,gBAAiB,gBAAiB,eAAgB,iBAAkB,aAAc,yBAC1Fhb,EAAI,EAAGA,EAAIgb,EAAUrb,OAAQK,IAClChB,KAAK+H,SAAS0T,gBAAgBO,EAAUhb,GAE5ChB,MAAK+H,SAASG,UAAUgR,OAAO,WAC/BxL,QAAM2D,SAAS,GAAIrR,KAAK+H,SAAU/H,KAAK6N,eAAgB7N,KAAKiO,iBAE5DjO,KAAK6M,WACL7M,KAAK6M,SAAS4O,gBAAgB,cAC9Bzb,KAAK6M,SAAS4O,gBAAgB,SAE9Bzb,KAAKoI,WACLpI,KAAKoI,SAAS+Q,UACd4C,SAAO/b,KAAKoI,SAAS3F,UAErBzC,KAAKyC,QAAQuK,UAAYhN,KAAK+D,gBAC9B/D,KAAKmO,aAAaZ,cAAcC,aAAaxN,KAAKyC,QAASzC,KAAKmO,cAEhEnO,KAAKyN,WACLsO,SAAO/b,KAAKyN,SAASW,WACrBpO,KAAKyN,SAAW,MAEpBC,QAAMyL,SACF1W,QAASzC,KAAK+H,SACd8F,eAAgB7N,KAAK6N,eACrBC,WAAY9N,KAAK8N,aAErBiO,SAAO/b,KAAKmO,cACZ4N,SAAO/b,KAAK8E,UACZ9E,KAAK+H,SAAW,KAChB/H,KAAKiR,oBAAsB,KAC3BjR,KAAKmO,aAAa4F,UAAY,GAC9B/T,KAAKmO,aAAe,KACpBnO,KAAK8E,SAAW,KAChB9E,KAAKoI,SAAW,KAChBpI,KAAKwF,QAAU,KACfxF,KAAKkF,QAAU,KACflF,KAAK6M,SAAW,KAChB7M,KAAKiS,OAAS,KACdjS,KAAKsU,SAAW,KAChBtS,EAAO9B,UAAUiZ,QAAQxW,KAAK3C,OAUlCuC,EAAoBrC,UAAU+b,kBAAoB,SAAUC,EAASC,GACjE,IAAK,GAAIvN,GAAK,EAAGC,EAAKpP,OAAOmL,KAAKsR,GAAUtN,EAAKC,EAAGlO,OAAQiO,IAAM,CAC9D,GAAIwN,GAAOvN,EAAGD,GACVtJ,MAAc,EAClB,QAAQ8W,GACJ,IAAK,QACL,IAAK,aACY,UAATA,GACApc,KAAKqO,gBAAgB6N,EAAQ9Q,OAE7BpL,KAAKoI,WACLpI,KAAKoI,SAAS3F,QAAQqK,MAAM1B,MAAQpL,KAAK+R,SAAQ,GAErD,MACJ,KAAK,cACD,GAAI/R,KAAKoI,SAAU,CACf,GAAI1B,GAAS1G,KAAK+R,SAAQ,EAC1B/R,MAAKoI,SAAS3F,QAAQqK,MAAMkF,UAAYtL,EACxC1G,KAAK8E,SAASgI,MAAMkF,UAAYtL,EAChC1G,KAAKwF,QAAQkB,OAASA,EAE1B,KACJ,KAAK,cACDgH,QAAMwB,eAAegN,EAAQlO,YAAahO,KAAK+H,SAC/C,MACJ,KAAK,WACD2F,QAAM2O,YAAYrc,KAAKmN,SAAUnN,KAAK+H,SACtC,MACJ,KAAK,WACD2F,QAAMyB,YAAYnP,KAAKoN,SAAUpN,KAAK+H,UACtC/H,KAAK+O,WACL,MACJ,KAAK,WACD/O,KAAK+Z,YAAYmC,EAAQhO,SAAUiO,EAAQjO,SAC3C,MACJ,KAAK,iBACDR,QAAM4O,eAAetc,KAAKyN,UAC1BC,QAAM6O,YAAYvc,KAAK+H,SAAU/H,KAAK6N,eAAgB7N,KAAKgO,YAC3D,MACJ,KAAK,kBACDN,QAAM8O,eAAeN,EAAQjO,gBAAiBjO,KAAK+H,SAAU/H,KAAKyN,SAClE,MACJ,KAAK,QACDzN,KAAKsO,WAAU,GAAM,EACrB,MACJ,KAAK,OACDtO,KAAKsO,WAAU,GAAM,EACrB,MACJ,KAAK,QACDtO,KAAKsO,WACL,MACJ,KAAK,YACGtO,KAAKwF,UACLxF,KAAKwF,QAAQ2D,aAAazD,UAClB0D,MAAOpJ,KAAK6I,OAAOQ,KAAMC,UAAW4S,EAAQjT,YAAcrH,YAAU2H,UAChE3H,YAAU2H,UAAY3H,YAAU4H,aAGhD,MACJ,KAAK,iBACDxJ,KAAKmF,mBACL,MACJ,KAAK,oBACDnF,KAAKmM,YACL,MACJ,KAAK,wBACDnM,KAAKmM,YAAW,EAChB,MACJ,KAAK,iBACDnM,KAAK8R,mBACL,MACJ,KAAK,eACG9R,KAAKwF,UACLxF,KAAKwF,QAAQwB,YAAckV,EAAQjV,aAEvC,MACJ,KAAK,gBACDjH,KAAK8L,cAAgBoQ,EAAQpQ,cAC7B9L,KAAKgJ,oBACL,MACJ,KAAK,YACGhJ,KAAKwF,SAAWxF,KAAKoI,WACrBpI,KAAKwF,QAAQU,UAAYgW,EAAQhW,UACjCwH,QAAM+O,aAAaP,EAAQhW,WAAYlG,KAAKmO,eAC5CnO,KAAKoI,SAASlC,UAAYgW,EAAQhW,UAEtC,MACJ,KAAK,aACGlG,KAAKwF,UACLxF,KAAKwF,QAAQC,WAAayW,EAAQzW,WAEtC,MACJ,KAAK,QACGzF,KAAKwF,UACLxF,KAAKwF,QAAQa,MAAQ6V,EAAQ7V,MAEjC,MACJ,KAAK,eACGrG,KAAKwF,UACLxF,KAAKwF,QAAQK,UAAYqW,EAAQpW,aAAaD,UAC9C7F,KAAKwF,QAAQO,UAAYmW,EAAQpW,aAAaC,UAC9C/F,KAAKwF,QAAQQ,aAAekW,EAAQpW,aAAaE,aAC3CzB,oBAAM2X,EAAQpW,aAAaQ,iBAC7BtG,KAAKwF,QAAQc,cAAgB4V,EAAQpW,aAAaQ,eAEhD/B,oBAAM2X,EAAQpW,aAAaW,gBAC7BzG,KAAKwF,QAAQe,iBAAiBC,SAAW0V,EAAQpW,aAAaW,cAGtE,MACJ,KAAK,SACDzG,KAAK6I,OAASqT,EAAQrT,OACtB7I,KAAKgJ,oBACL,MACJ,KAAK,aACDhJ,KAAK6X,WAAaqE,EAAQrE,UAC1B,MACJ,KAAK,uBACG7X,KAAKwF,UACLxF,KAAKiG,qBAAuBjG,KAAKwF,QAAQS,qBAAuBiW,EAAQjW,qBAE5E,MACJ,KAAK,WACDjG,KAAK6G,SAAWqV,EAAQrV,QACxB,MACJ,KAAK,iBACD7G,KAAKyW,eAAiByF,EAAQzF,cAC9B,MACJ,KAAK,eACGzW,KAAKwF,UACLxF,KAAK2F,aAAe3F,KAAKwF,QAAQG,aAAeuW,EAAQvW,aAE5D,MACJ,KAAK,UACG3F,KAAKwF,UACLF,EAActF,KAAKuF,iBACnBvF,KAAKwF,QAAQE,QAAUJ,MAM3ClF,GACI8B,gBACDK,EAAoBrC,UAAW,iBAAc,IAChDE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,WAAQ,IAC1CE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,YAAS,IAC3CE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,YAAS,IAC3CE,GACI8B,WAAS,SACVK,EAAoBrC,UAAW,YAAS,IAC3CE,GACI8B,WAAS,UACVK,EAAoBrC,UAAW,kBAAe,IACjDE,GACI8B,WAAS,SACVK,EAAoBrC,UAAW,iBAAc,IAChDE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,kBAAe,IACjDE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,qBAAkB,IACpDE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,mBAAgB,IAClDE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,sBAAmB,IACrDE,GACI8B,WAAS,KACVK,EAAoBrC,UAAW,eAAY,IAC9CE,GACIsc,WAAUrT,KAAM,KAAMrB,MAAO,KAAMc,QAAS,MAAQ/G,IACrDQ,EAAoBrC,UAAW,aAAU,IAC5CE,GACIuc,gBAAeva,IAChBG,EAAoBrC,UAAW,cAAW,IAC7CE,GACIsc,aAAYra,IACbE,EAAoBrC,UAAW,mBAAgB,IAClDE,GACI8B,WAASP,aAAWib,aACrBra,EAAoBrC,UAAW,iBAAc,IAChDE,GACI8B,WAAS,UACVK,EAAoBrC,UAAW,qBAAkB,IACpDE,GACI8B,WAASN,YAAUib,OACpBta,EAAoBrC,UAAW,gBAAa,IAC/CE,GACI8B,WAASL,WAASib,YACnBva,EAAoBrC,UAAW,eAAY,IAC9CE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,2BAAwB,IAC1DE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,eAAY,IAC9CE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,eAAY,IAC9CE,GACI8B,YAAS,IACVK,EAAoBrC,UAAW,wBAAqB,IACvDE,GACI8B,cACDK,EAAoBrC,UAAW,YAAS,IAC3CE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,mBAAgB,IAClDE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,qBAAkB,IACpDE,GACI8B,WAAS,OACVK,EAAoBrC,UAAW,oBAAiB,IACnDE,GACI8B,WAAS,mBACVK,EAAoBrC,UAAW,4BAAyB,IAC3DE,GACI8B,WAAS,qBACVK,EAAoBrC,UAAW,wBAAqB,IACvDE,GACI8B,gBACDK,EAAoBrC,UAAW,qBAAkB,IACpDE,GACI2c,WACDxa,EAAoBrC,UAAW,cAAW,IAC7CE,GACI2c,WACDxa,EAAoBrC,UAAW,WAAQ,IAC1CE,GACI2c,WACDxa,EAAoBrC,UAAW,YAAS,IAC3CE,GACI2c,WACDxa,EAAoBrC,UAAW,oBAAiB,IACnDE,GACI2c,WACDxa,EAAoBrC,UAAW,kBAAe,IACjDE,GACI2c,WACDxa,EAAoBrC,UAAW,qBAAkB,IACpDE,GACI2c,WACDxa,EAAoBrC,UAAW,gBAAa,IAC/CE,GACI2c,WACDxa,EAAoBrC,UAAW,aAAU,IAC5CE,GACI2c,WACDxa,EAAoBrC,UAAW,aAAU,IAC5CqC,EAAsBnC,GAClB4c,yBACDza,IAEL0a,sBCvuDwB3b,OAAO4b,gBAAqBC,OAAYC,OAAYC"}
1
+ {"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js","../../src/global.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};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, isNullOrUndefined } 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 } from '@syncfusion/ej2-popups';\nimport { Grid, 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 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);\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 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.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 = 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 = 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.renderGrid();\n this.renderInput();\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.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n this.gridObj = new Grid({\n dataSource: this.dataSource,\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 query: this.query,\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionBegin: function (args) { _this.trigger('actionBegin', args); },\n actionComplete: function (args) {\n _this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n _this.updateRowSelection(args);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataRows = args.rows;\n if (_this.isDataFiltered && dataRows.length > 0 && _this.inputEle.value !== '' && args.requestType !== 'sorting') {\n var firstRowEle = _this.gridObj.getRows()[0];\n firstRowEle.classList.add('e-row-focus');\n }\n _this.popupObj.refreshPosition();\n },\n keyPressed: 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 });\n this.gridEle = this.createElement('div', { id: getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\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 };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var values = Object.values(data).map(String);\n var isRowPresent = values.includes(selectedValue) && values.includes(selectedText);\n return isRowPresent;\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 var data = row.data;\n var index = row.index;\n _this.selectDataRow(data, index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ? 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 /* eslint-enable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (column) {\n var changeType;\n if (column.displayAsCheckBox && !column.format) {\n changeType = 'boolean';\n }\n return {\n field: column.field,\n headerText: column.header,\n width: column.width,\n textAlign: column.textAlign === '' && _this.enableRtl ? 'Right' : column.textAlign,\n format: column.format,\n displayAsCheckBox: column.displayAsCheckBox,\n template: column.template,\n headerTemplate: column.headerTemplate,\n customAttributes: column.customAttributes,\n type: changeType\n };\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\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: [this.fields.groupBy],\n captionTemplate: (this.groupTemplate && this.fields.groupBy !== '' && !isNOU(this.fields.groupBy))\n ? this.groupTemplate : '${key}'\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 dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (this.popupDiv.classList.contains(NODATA) && 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 rowHeight = !this.popupDiv.classList.contains(NODATA) ? this.popupDiv.querySelector('.e-gridcontent tr') ?\n this.popupDiv.querySelector('.e-gridcontent tr').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 };\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 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 this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('aria-readOnly', this.readonly.toString());\n this.inputEle.setAttribute('aria-disabled', this.disabled.toString());\n this.inputEle.setAttribute('autocomplete', 'off');\n this.inputEle.setAttribute('autocapitalize', 'off');\n this.inputEle.setAttribute('spellcheck', 'false');\n this.inputEle.setAttribute('tabindex', '0');\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 if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n /* To calculate the width when change via set model */\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\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 };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\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.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', '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.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\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 return item[isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text].toString() === 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 return data[isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text].toString() === 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 ChangeEventArgs = {\n value: item ? item[this.fields.value].toString() : 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 Input.setValue(item[this.fields.text].toString(), this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: item[this.fields.value].toString(),\n currentText: item[this.fields.text].toString(),\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 this.footer = this.footer ? this.footer : this.popupEle.querySelector('.e-popup-footer');\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, dataSourceCount) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n var totalRowHeight = dataSourceCount * this.popupRowHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n totalRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (totalRowHeight < this.prevGridHeight ? (totalRowHeight + 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.indexOf('%') > -1) {\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 fieldText = selectedRecords ? selectedRecords[this.fields.text].toString() : '';\n var fieldValue = selectedRecords ? selectedRecords[this.fields.value].toString() : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: fieldText, value: fieldValue },\n event: e,\n cancel: false,\n value: fieldValue,\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 selectedRecord = 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(selectedRecord[_this.fields.value], selectedRecord[_this.fields.text], _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecord[_this.fields.text], _this.inputEle, _this.floatLabelType, _this.showClearButton);\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 ? text : this.text;\n this.value = value ? value : this.value;\n this.index = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\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 var inputValue_1 = e.target.value.toLowerCase();\n var customFiltering_1 = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: inputValue_1,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n customFiltering_1 = true;\n _this.filterAction(dataSource, inputValue_1, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !customFiltering_1) {\n _this.filterAction(_this.dataSource, inputValue_1, _this.query, _this.fields);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n var _this = this;\n var data;\n if (this.dataSource instanceof DataManager) {\n var query = new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.executeQuery(query).then(function (result) {\n var totaldata = result.result;\n data = totaldata.filter(function (item) {\n return item[_this.fields.text].toString().toLowerCase().startsWith(inputValue.toLowerCase());\n });\n _this.selectFilteredRows(data);\n });\n }\n else if (Array.isArray(this.dataSource)) {\n data = this.dataSource.filter(function (item) {\n return item[_this.fields.text].toString().toLowerCase().startsWith(inputValue.toLowerCase());\n });\n this.selectFilteredRows(data);\n }\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data) {\n if (data.length > 0) {\n this.matchedContent = data[0];\n }\n else {\n this.matchedContent = null;\n }\n if (this.matchedContent) {\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n }\n else {\n this.matchedRowEle = null;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filterAction = function (dataSource, inputValue, query, fields) {\n var _this = this;\n if (isNullOrUndefined(query) && isNullOrUndefined(fields)) {\n this.updateGridDataSource(dataSource);\n }\n else if (query) {\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, query, fields);\n }\n else {\n new DataManager(dataSource).executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n _this.updateGridDataSource(dataLists);\n });\n }\n }\n else {\n var isQuery = query || new Query();\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, isQuery, fields);\n }\n else if (Array.isArray(dataSource)) {\n var filterType_1 = this.filterType.toString().toLowerCase();\n var filteredData = dataSource.filter(function (item) {\n return _this.filterData(item, filterType_1, inputValue, fields);\n });\n this.updateGridDataSource(filteredData);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filteringHandler = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var filterType = this.filterType.toString().toLowerCase();\n var filteredData;\n dataSource.executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var dataLength = dataLists.length;\n filteredData = dataLists.filter(function (item) { return _this.filterData(item, filterType, inputValue, fields); });\n _this.updateGridDataSource(filteredData, dataLength);\n });\n };\n MultiColumnComboBox.prototype.filterData = function (item, filterType, inputValue, fields) {\n var itemValue = item[fields ? fields.text : this.fields.text].toString().toLowerCase();\n switch (filterType) {\n case 'startswith':\n return itemValue.startsWith(inputValue);\n case 'endswith':\n return itemValue.endsWith(inputValue);\n case 'contains':\n return itemValue.includes(inputValue);\n default:\n return false;\n }\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function (dataSource, dataLength) {\n var autoHeight = true;\n if (dataSource.length > 0) {\n var length_1 = this.dataSource instanceof DataManager ? dataLength\n : this.dataSource.length;\n autoHeight = length_1 !== dataSource.length;\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 = dataSource;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n this.updateGridHeight(true, autoHeight, dataSource.length);\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 if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!(e.target.closest('.e-multicolumn-list'))) {\n this.focusOut();\n }\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n this.updateValuesOnInput(e);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues) {\n var _this = this;\n if (isClearValues === void 0) { isClearValues = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n setTimeout(function () {\n _this.inputEle.value = _this.matchedContent[_this.fields.text].toString();\n _this.value = _this.matchedContent[_this.fields.value].toString();\n var selectIndex = _this.findIndex(_this.gridObj.currentViewData, _this.matchedContent);\n _this.index = selectIndex;\n _this.text = _this.matchedContent[_this.fields.text].toString();\n _this.gridObj.selectRow(selectIndex);\n _this.selectedGridRow(_this.gridObj.getRowByIndex(selectIndex), e);\n _this.previousItemElement = _this.gridObj.getSelectedRows()[0];\n }, 100);\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);\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 if (isGroup) {\n if (e.key === 'ArrowDown') {\n e.action = 'moveDown';\n }\n else if (e.key === 'ArrowUp') {\n e.action = 'moveUp';\n }\n else if (e.key === 'End') {\n e.action = 'end';\n }\n else if (e.key === 'Home') {\n e.action = 'home';\n }\n else if (e.key === 'Tab') {\n e.action = 'tab';\n }\n else if (e.key === 'Escape') {\n e.action = 'escape';\n }\n if (e.shiftKey && e.key === 'Tab') {\n e.action = 'shiftTab';\n }\n if (e.altKey && e.key === 'ArrowUp') {\n e.action = 'altUp';\n }\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 if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index = !this.fields.groupBy ? this.gridObj.selectedRowIndex\n : this.gridObj.selectedRowIndex ? this.gridObj.selectedRowIndex : 0;\n if ((index === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index = 0;\n }\n else if ((index >= this.gridObj.getRows().length && e.action === 'moveDown') || (e.action === 'end')) {\n index = this.gridObj.getRows().length - 1;\n }\n else if (e.action === 'moveDown' && (index >= 0 && index <= this.gridObj.getRows().length) && (this.fields.groupBy || isInputTarget)) {\n index += 1;\n }\n else if (e.action === 'moveUp' && index > 0 && (this.fields.groupBy) || isInputTarget) {\n index -= 1;\n }\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 };\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 /**\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 var dataRows = _this.gridObj.getRowsObject();\n var groupIndex_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataRows.forEach(function (data, index) {\n if (_this.fields.groupBy && isNOU(data.data.items)) {\n if (isNOU(groupIndex_1)) {\n groupIndex_1 = 0;\n }\n else {\n groupIndex_1 += 1;\n }\n }\n _this.selectDataRow(data.data, !_this.fields.groupBy ? index : groupIndex_1);\n });\n }\n _this.focusIn(e);\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (contentEle.querySelector('.e-row')) {\n _this.inputEle.setAttribute('aria-activedescendant', contentEle.querySelector('.e-row').getAttribute('data-uid'));\n }\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle);\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 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 _this.inputEle.value = _this.text ? _this.text.toString() : '';\n if (e) {\n var target = e.target;\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 }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.dataSource;\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 return item[_this.fields.value].toString() === 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 return item[_this.fields.value].toString() === 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 _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 if (this.gridObj) {\n this.gridObj.dataSource = newProp.dataSource;\n }\n break;\n case 'query':\n if (this.gridObj) {\n this.gridObj.query = newProp.query;\n }\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 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 }\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","import * as index from './index';\nindex.MultiColumnComboBox.Inject(index.VirtualScroll, index.Sort, index.Edit, index.Group);\nexport * from './index';\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","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","apply","Property","ChildProperty","Column","GridSettings","Both","MultiColumnComboBox","options","element","_this","call","gridInject","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderGrid","renderInput","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","gridColumns","getGridColumns","gridObj","dataSource","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","query","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowMultiSorting","sortType","toString","toLowerCase","rowTemplate","itemTemplate","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","requestType","updateRowSelection","dataRows","rows","isDataFiltered","inputEle","value","getRows","classList","add","popupObj","refreshPosition","keyPressed","cancel","isPopupOpen","selectedGridRow","selectedRowIndex","hidePopup","focusIn","fields","groupBy","gridKeyActionHandler","updateGroupByField","sortOrder","isPrimaryKey","sortSettings","field","text","direction","Ascending","Descending","appendTo","isRowMatching","selectedValue","selectedText","values","map","String","includes","forEach","row","index","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","item","keys","every","column","changeType","displayAsCheckBox","format","headerText","header","width","textAlign","template","headerTemplate","customAttributes","type","allowGrouping","groupSettings","showDropArea","captionTemplate","groupTemplate","isVue","dataCount","popupChild","querySelector","l10nUpdate","removeChild","addClass","contains","removeClass","noRecordEle","isInitialRender","getBoundingClientRect","popupRowHeight","hide","popupEle","style","visibility","tagName","getAttribute","setAttribute","readonly","disabled","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","setElementWidth","initValue","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","_a","htmlAttr","setEnable","dataBind","indexOf","setPlaceholder","setEnabled","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","result","updateCurrentValues","undefined","value_1","DataManager","executeQuery","Query","then","e","dataLists","filteredData","filter","updateChangeEvent","setTimeout","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","setValue","MULTICOLUMNLIST","attributes","aria-label","document","body","createPopup","prepend","footerTemplate","setFooterTemplate","getSize","maxHeight","footer","Math","round","updateGridHeight","isFilter","autoHeight","dataSourceCount","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","totalRowHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","innerHTML","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","offsetWidth","documentElement","parseFloat","isKeyNav","eventArgs","selectedRecords","fieldText","fieldValue","selectedRecord","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","allowFiltering","inputValue_1","customFiltering_1","eventArgs_1","preventDefaultAction","updateData","filterAction","updateInputValue","inputValue","totaldata","startsWith","selectFilteredRows","isArray","selectedIndex","currentViewData","getRowByIndex","isNullOrUndefined","updateGridDataSource","filteringHandler","isQuery","filterType_1","filterType","filterData","dataLength","itemValue","endsWith","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","bind","eventName","unWireEvents","remove","destroy","preventDefault","focusedEle","closest","focusOut","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","split","action","updateSelectedItem","isGroup","isUpdateIndex","isInputTarget","clearIconEle","display","calculateWidth","isInputOpen","animModel","name","duration","popup","animation","aria-expanded","aria-owns","aria-controls","groupIndex_1","getRowsObject","items","contentEle","activeRow","show","Animation","removeAttribute","addItems","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","Event","NotifyPropertyChanges","Component","index.VirtualScroll","index.Sort","index.Edit","index.Group"],"mappings":"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"}