@syncfusion/ej2-lists 19.2.49 → 19.3.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/ej2-lists.umd.min.js +2 -2
- package/dist/ej2-lists.umd.min.js.map +1 -1
- package/dist/es6/ej2-lists.es2015.js +243 -685
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +243 -688
- package/dist/es6/ej2-lists.es5.js.map +1 -1
- package/dist/global/ej2-lists.min.js +2 -2
- package/dist/global/ej2-lists.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +8 -8
- package/src/common/list-base.d.ts +1 -16
- package/src/common/list-base.js +19 -12
- package/src/list-view/list-view-model.d.ts +1 -6
- package/src/list-view/list-view.d.ts +3 -19
- package/src/list-view/list-view.js +163 -460
- package/src/list-view/virtualization.js +56 -204
- package/src/sortable/sortable-model.d.ts +1 -1
- package/src/sortable/sortable.js +3 -9
- package/styles/bootstrap5-dark.css +533 -0
- package/styles/bootstrap5-dark.scss +2 -0
- package/styles/bootstrap5.css +533 -0
- package/styles/bootstrap5.scss +2 -0
- package/styles/list-view/_bootstrap5-dark-definition.scss +1 -0
- package/styles/list-view/_bootstrap5-definition.scss +129 -0
- package/styles/list-view/_layout.scss +26 -26
- package/styles/list-view/_tailwind-dark-definition.scss +1 -116
- package/styles/list-view/_tailwind-definition.scss +33 -29
- package/styles/list-view/_theme.scss +35 -10
- package/styles/list-view/bootstrap5-dark.css +506 -0
- package/styles/list-view/bootstrap5-dark.scss +5 -0
- package/styles/list-view/bootstrap5.css +506 -0
- package/styles/list-view/bootstrap5.scss +5 -0
- package/styles/list-view/icons/_bootstrap5-dark.scss +1 -0
- package/styles/list-view/icons/_bootstrap5.scss +8 -0
- package/styles/list-view/material-dark.css +1 -1
- package/styles/material-dark.css +1 -1
- package/styles/sortable/bootstrap5-dark.css +26 -0
- package/styles/sortable/bootstrap5-dark.scss +2 -0
- package/styles/sortable/bootstrap5.css +26 -0
- package/styles/sortable/bootstrap5.scss +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-lists.min.js","sources":["../../src/common/list-base.js","../../src/sortable/sortable.js","../../src/list-view/list-view.js","../../src/list-view/virtualization.js","../../src/global.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compile(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n var blazId = 'BlazId';\n if (options && !!options.removeBlazorID\n && typeof item === 'object'\n // eslint-disable-next-line no-prototype-builtins\n && item.hasOwnProperty(blazId)) {\n delete item[blazId];\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.groupTemplate);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.template);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\n","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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isNullOrUndefined, getComponent, isBlazor } from '@syncfusion/ej2-base';\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n /* es-lint enable */\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n removeClass([element], ['e-listboxtool-container']);\n if (element && element.className.indexOf(\"e-listbox-wrapper\") < 0) {\n addClass([element], ['e-listbox-wrapper']);\n }\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n _this.onDrag = function (e) {\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target :\n true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n // eslint-disable-next-line\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n // eslint-disable-next-line\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n var prevIndx = _this === dropInst && (prevIdx - curIdx_1) > 0 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIndx, currentIndex: _this.curTarget === _this.target ? prevIndx : curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) > 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n var target = (e.target.className.indexOf(\"e-list-nrt\") > -1) ? e.target.parentElement : e.target;\n if (dropInst.element === target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if (dropInst.element === e.target && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, Draggable).intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 5\n });\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n idx = e.clientY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","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 { merge, formatUnit, isNullOrUndefined, append, detach, isBlazor, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, blazorTemplates } from '@syncfusion/ej2-base';\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n content: 'e-content',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\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('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.itemReRender = false;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n if (!(this.isServerRendered && isBlazor())) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (!isBlazor() || !this.isServerRendered) {\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n if (!(this.isServerRendered && isBlazor())) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n if (!(this.isServerRendered && isBlazor())) {\n this.refresh();\n }\n }\n break;\n case 'showIcon':\n if (isBlazor() && this.isServerRendered) {\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('ItemSorting');\n }\n else {\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (isBlazor() && this.isServerRendered) {\n var args = { HeaderText: text, BackButton: showBack };\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('HeaderTitle', args);\n }\n else {\n if (this.headerEle === undefined && this.showHeader) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' e-but-back',\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n this.updateBlazorTemplates(false, true, true);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'option', listRole: 'presentation', itemText: '',\n groupItemRole: 'group', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n removeBlazorID: true\n };\n this.initialization();\n };\n ListView.prototype.updateLiElementHeight = function () {\n var liContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (liContainer.children[0]) {\n this.liElementHeight = liContainer.children[0].getBoundingClientRect().height;\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('LiElementHeight', this.liElementHeight);\n }\n };\n ListView.prototype.initialization = function () {\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n var ulContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (ulContainer !== null) {\n if (this.height === '') {\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('SetComponentHeight', window.innerHeight);\n this.isWindow = true;\n ulContainer.scrollIntoView();\n }\n if (this.height.toString().indexOf('%') !== -1) {\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('SetContainerHeight', this.element.getBoundingClientRect().height.toString());\n }\n if (ulContainer.children[0]) {\n this.liElementHeight = ulContainer.children[0].getBoundingClientRect().height;\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('LiElementHeight', this.liElementHeight);\n }\n }\n }\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData = void 0;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n args.item.setAttribute('aria-selected', 'true');\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n liElement.setAttribute('aria-selected', checked ? 'true' : 'false');\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.clickHandler = function (e) {\n var target = e.target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n }\n }\n else {\n this.setSelectLI(li, e);\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n var ulElementContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (ulElementContainer.querySelector('.e-active')) {\n // eslint-disable-next-line\n var selectedElements = ulElementContainer.querySelectorAll('.e-active');\n if (this.showCheckBox) {\n for (var i = 0; i < selectedElements.length; i++) {\n // eslint-disable-next-line\n if (!this.previousSelectedItems.includes(selectedElements[i].getAttribute('data-uid'))) {\n this.previousSelectedItems.push(selectedElements[i].getAttribute('data-uid'));\n }\n }\n }\n else {\n this.previousSelectedItems[0] = (ulElementContainer.querySelector('.e-active').getAttribute('data-uid'));\n }\n }\n if (ulElementContainer.querySelector('.e-focused')) {\n // eslint-disable-next-line\n var focusElement = ulElementContainer.querySelector('.e-focused');\n if (!focusElement.classList.contains('e-active')) {\n var focusElementId = focusElement.getAttribute('data-uid');\n // eslint-disable-next-line\n if (this.previousSelectedItems.includes(focusElementId)) {\n var selectedElement1 = this.previousSelectedItems.slice(0, this.previousSelectedItems.indexOf(focusElementId));\n var selectedElement2 = this.previousSelectedItems.\n slice(this.previousSelectedItems.indexOf(focusElementId) + 1, this.previousSelectedItems.length);\n this.previousSelectedItems = selectedElement1.concat(selectedElement2);\n }\n }\n }\n }\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n if (this.selectedItems) {\n (this.selectedItems.item).setAttribute('aria-selected', 'false');\n }\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n this.spaceKeyHandler(e);\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n var activeElement = this.curUL.querySelector('[aria-selected = true]');\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (activeElement && !this.showCheckBox) {\n activeElement.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n this.touchModule.destroy();\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.setAttribute('aria-selected', 'false');\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n li.classList.add(classNames.focused);\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n // eslint-disable-next-line\n { item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs);\n this.selectedLI = li;\n this.renderSubList(li);\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = \n // eslint-disable-next-line\n getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[column]) &&\n this.fields[column] !==\n ListBase.defaultMappedFields[column]\n && columns.indexOf(this.fields[column]) === -1) {\n columns.push(this.fields[column]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy)), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy));\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n if (_this.isDestroyed) {\n return;\n }\n _this.localData = e.result;\n if (!_this.isServerRendered || (!isBlazor())) {\n listViewComponent.removeElement(listViewComponent.contentContainer);\n }\n _this.renderList();\n _this.trigger('actionComplete', e);\n }).catch(function (e) {\n if (_this.isDestroyed) {\n return;\n }\n _this.trigger('actionFailure', e);\n });\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n this.resetBlazorTemplates();\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n }\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.resetBlazorTemplates();\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('aria-selected', 'false');\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n this.updateBlazorTemplates(true);\n };\n ListView.prototype.resetBlazorTemplates = function () {\n // eslint-disable-next-line\n var templateCollection = blazorTemplates;\n if (this.template) {\n templateCollection[this.LISTVIEW_TEMPLATE_ID] = [];\n resetBlazorTemplate(this.LISTVIEW_TEMPLATE_ID, LISTVIEW_TEMPLATE_PROPERTY);\n }\n if (this.groupTemplate) {\n templateCollection[this.LISTVIEW_GROUPTEMPLATE_ID] = [];\n resetBlazorTemplate(this.LISTVIEW_GROUPTEMPLATE_ID, LISTVIEW_GROUPTEMPLATE_PROPERTY);\n }\n if (this.headerTemplate) {\n resetBlazorTemplate(this.LISTVIEW_HEADERTEMPLATE_ID, LISTVIEW_HEADERTEMPLATE_PROPERTY);\n }\n };\n ListView.prototype.updateBlazorTemplates = function (template, headerTemplate, resetExistingElements) {\n if (template === void 0) { template = false; }\n if (headerTemplate === void 0) { headerTemplate = false; }\n if (resetExistingElements === void 0) { resetExistingElements = false; }\n if (this.template && template && !this.enableVirtualization) {\n updateBlazorTemplate(this.LISTVIEW_TEMPLATE_ID, LISTVIEW_TEMPLATE_PROPERTY, this, resetExistingElements);\n }\n if (this.groupTemplate && template && !this.enableVirtualization) {\n updateBlazorTemplate(this.LISTVIEW_GROUPTEMPLATE_ID, LISTVIEW_GROUPTEMPLATE_PROPERTY, this, resetExistingElements);\n }\n if (this.headerTemplate && headerTemplate) {\n updateBlazorTemplate(this.LISTVIEW_HEADERTEMPLATE_ID, LISTVIEW_HEADERTEMPLATE_PROPERTY, this, resetExistingElements);\n }\n };\n ListView.prototype.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n };\n ListView.prototype.removeActiveClass = function () {\n // eslint-disable-next-line\n var listViewComponent = this;\n setTimeout(function () {\n var ulContainer = listViewComponent.element.querySelector('.' + classNames.virtualElementContainer);\n for (var i = 0; i < ulContainer.childElementCount; i++) {\n var selectedElement = ulContainer.children[i];\n var elementIndex = void 0;\n var hiddenElementIndex = void 0;\n if (listViewComponent.showCheckBox) {\n if (listViewComponent.previousSelectedItems.length > 0) {\n for (var j = 0; j < listViewComponent.previousSelectedItems.length; j++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[j]) {\n selectedElement.classList.add('e-active');\n selectedElement.setAttribute('aria-selected', 'true');\n if (selectedElement.querySelector('.e-frame.e-icons')) {\n selectedElement.querySelector('.e-frame.e-icons').classList.add('e-check');\n }\n elementIndex = i;\n }\n else {\n if (elementIndex !== i) {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n if (selectedElement.querySelector('.e-check')) {\n selectedElement.querySelector('.e-check').classList.remove('e-check');\n }\n }\n }\n }\n }\n else {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n if (selectedElement.querySelector('.e-check')) {\n selectedElement.querySelector('.e-check').classList.remove('e-check');\n }\n }\n }\n else {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[0]) {\n selectedElement.classList.add('e-active');\n selectedElement.setAttribute('aria-selected', 'true');\n }\n else {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n }\n }\n if (listViewComponent.hiddenItems.length > 0) {\n for (var k = 0; k < listViewComponent.hiddenItems.length; k++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[k]) {\n selectedElement.style.display = 'none';\n hiddenElementIndex = i;\n }\n else {\n if (hiddenElementIndex !== i) {\n selectedElement.style.display = null;\n }\n }\n }\n }\n if (listViewComponent.enabledItems.length > 0) {\n for (var x = 0; x < listViewComponent.enabledItems.length; x++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.enabledItems[x]) {\n if (selectedElement.classList.contains('e-disabled')) {\n selectedElement.classList.remove('e-disabled');\n }\n }\n }\n }\n if (listViewComponent.disabledItems.length > 0) {\n for (var y = 0; y < listViewComponent.disabledItems.length; y++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.disabledItems[y]) {\n if (!selectedElement.classList.contains('e-disabled')) {\n selectedElement.classList.add('e-disabled');\n }\n }\n }\n }\n }\n }, 200);\n };\n ListView.prototype.renderingNestedList = function () {\n var ul = closest(this.liElement.parentNode, '.' + classNames.parentItem);\n var ctrlId = this.element.id;\n var ulElement = document.getElementById(ctrlId);\n var currentListItem = ulElement.getElementsByTagName('UL')[ulElement.getElementsByTagName('UL').length - 1];\n this.switchView(ul, currentListItem);\n this.liElement = null;\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n var data = this.curViewDS;\n if (isBlazor() && this.isServerRendered) {\n // eslint-disable-next-line\n this.interopAdaptor.invokeMethodAsync('ListChildDataSource', data);\n }\n else {\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n this.updateBlazorTemplates(true);\n }\n }\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n this.switchView(ul, ele);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n // eslint-disable-next-line\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if (!(isBlazor() && this.isServerRendered)) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n if (this.isReact) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n // eslint-disable-next-line\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n if (!isBlazor() || !this.isServerRendered) {\n this.element.classList.add(classNames.root);\n attributes(this.element, { role: 'list', tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n }\n else {\n this.initBlazor(true);\n }\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n };\n ListView.prototype.initBlazor = function (firstRender) {\n if (firstRender === null) {\n firstRender = false;\n }\n this.setLocalData();\n this.setViewDataSource(this.localData);\n this.contentContainer = this.element.querySelector('.' + classNames.content);\n if (firstRender) {\n this.wireEvents();\n }\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n this.resetBlazorTemplates();\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter(function (css) { return css; }));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n }\n else {\n this.element.style.display = 'none';\n }\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n toUL = toUL.parentElement.parentElement.parentElement;\n }\n else {\n toUL = toUL.parentElement;\n }\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n // eslint-disable-next-line\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked)) {\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n * @blazorType ListSelectedItem<TValue>\n */\n ListView.prototype.getSelectedItems = function () {\n // eslint-disable-next-line\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n // eslint-disable-next-line\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n if (isBlazor()) {\n // eslint-disable-next-line\n return this.blazorGetSelectedItems(finalValue);\n }\n else {\n return finalValue;\n }\n };\n // eslint-disable-next-line\n ListView.prototype.blazorGetSelectedItems = function (finalGetSelectedItem) {\n var blazorSelectedItem = {\n data: [],\n index: [],\n parentId: [],\n text: []\n };\n if (!isNullOrUndefined(finalGetSelectedItem)) {\n if (!isNullOrUndefined(finalGetSelectedItem.data)) {\n if (this.showCheckBox && this.isNestedList) {\n for (var i = 0; i < finalGetSelectedItem.data.length; i++) {\n blazorSelectedItem.data.push(finalGetSelectedItem.data[i].data);\n }\n if (!isNullOrUndefined(finalGetSelectedItem.data[0])\n && !isNullOrUndefined(finalGetSelectedItem.data[0].parentId)) {\n blazorSelectedItem.parentId = finalGetSelectedItem.data[0].parentId;\n }\n }\n else {\n blazorSelectedItem.data = this.convertItemsToArray(finalGetSelectedItem.data);\n }\n }\n if (!isNullOrUndefined(finalGetSelectedItem.text)) {\n blazorSelectedItem.text = this.convertItemsToArray(finalGetSelectedItem.text);\n }\n if (!isNullOrUndefined(finalGetSelectedItem.index)) {\n blazorSelectedItem.index = this.convertItemsToArray(finalGetSelectedItem.index);\n }\n }\n return blazorSelectedItem;\n };\n // eslint-disable-next-line\n ListView.prototype.convertItemsToArray = function (items) {\n return Array.isArray(items) ? items.slice() : [items];\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n * @blazorType TValue\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n // eslint-disable-next-line\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n // eslint-disable-next-line\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @blazorType data|object,fields|object\n */\n ListView.prototype.addItem = function (data, fields) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource.push(data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n if (this.curUL) {\n this.updateBlazorTemplates(true);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n var isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n if (isRefreshTemplateNeeded) {\n this.updateBlazorTemplates(true);\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n // eslint-disable-next-line\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n this.updateBlazorTemplates(true);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n this.updateBlazorTemplates(true);\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, removeClass, addClass, compile, formatUnit } from '@syncfusion/ej2-base';\nimport { isBlazor, debounce } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var firstDs = curViewDS.slice(0, 1);\n if (!(isBlazor() || this.listViewInstance.isServerRendered)) {\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n }\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n var otherDs = curViewDS.slice(1, this.domItemCount);\n if (!(isBlazor() || this.listViewInstance.isServerRendered)) {\n var listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n }\n else {\n this.listViewInstance.contentContainer = this.listViewInstance.element.querySelector('.e-content');\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n }\n this.listDiff = 0;\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (!(isBlazor() && this.listViewInstance.isServerRendered)) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n this.onVirtualScroll = debounce(this.onVirtualUiScroll.bind(this), 350);\n this.updateUl = this.updateUlContainer.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n window.addEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', debounce(this.onVirtualUiScroll, 350), this);\n EventHandler.add(this.listViewInstance.element, 'scroll', this.updateUlContainer, this);\n }\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n };\n Virtualization.prototype.updateUlContainer = function (e) {\n var listDiff;\n var virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n // eslint-disable-next-line max-len\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n this.listViewInstance.ulElement.children[0].style.height =\n (this.listViewInstance.liElementHeight * (Object.keys(curViewDS).length)) + 'px';\n }\n else {\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function (e) {\n var _a;\n var startingHeight;\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n var listDiff = void 0;\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n listDiff = Math.round(document.documentElement.scrollTop / this.listViewInstance.liElementHeight);\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight);\n }\n if ((listDiff - 2) - this.elementDifference >= 3 || (listDiff - 2) - this.elementDifference <= -1) {\n var args = { listDiff: listDiff - 2, selectedItems: this.listViewInstance.previousSelectedItems };\n this.listViewInstance.interopAdaptor.invokeMethodAsync('VirtalScrolling', args);\n if (this.listViewInstance.ulElement.querySelector('.e-focused')) {\n this.listViewInstance.ulElement.querySelector('.e-focused').classList.remove('e-focused');\n }\n this.elementDifference = listDiff - 2;\n }\n }\n else {\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n // eslint-disable-next-line\n fields[_this.listViewInstance.fields.id]\n // eslint-disable-next-line\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n var scrollDiff = Math.round(this.listViewInstance.element.scrollTop /\n this.listViewInstance.liElementHeight) - 2;\n if (scrollDiff < 0) {\n scrollDiff = 0;\n }\n this.activeIndex += scrollDiff;\n }\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][text]);\n dataCollection.push(curViewDS_2[indexArray[i]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n // eslint-disable-next-line\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked = void 0;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs = void 0;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // eslint-disable-next-line\n var elementId = resutJSON.data[this.listViewInstance.fields.id];\n if (this.listViewInstance.showCheckBox) {\n if (!this.listViewInstance.previousSelectedItems.includes(elementId)) {\n this.listViewInstance.previousSelectedItems.push(elementId);\n }\n else {\n var indexPosition = this.listViewInstance.previousSelectedItems.indexOf(elementId);\n if (indexPosition > -1) {\n this.listViewInstance.previousSelectedItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n this.listViewInstance.previousSelectedItems[0] = elementId;\n }\n this.listViewInstance.removeActiveClass();\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // eslint-disable-next-line\n var itemId = resutJSON.data[this.listViewInstance.fields.id];\n if (!this.listViewInstance.enabledItems.includes(itemId)) {\n this.listViewInstance.enabledItems.push(itemId);\n this.listViewInstance.removeActiveClass();\n }\n if (this.listViewInstance.disabledItems.includes(itemId)) {\n var indexPosition = this.listViewInstance.disabledItems.indexOf(itemId);\n if (indexPosition > -1) {\n this.listViewInstance.disabledItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // eslint-disable-next-line\n var liElementId = resutJSON.data[this.listViewInstance.fields.id];\n if (!this.listViewInstance.disabledItems.includes(liElementId)) {\n this.listViewInstance.disabledItems.push(liElementId);\n this.listViewInstance.removeActiveClass();\n }\n if (this.listViewInstance.enabledItems.includes(liElementId)) {\n var indexPosition = this.listViewInstance.enabledItems.indexOf(liElementId);\n if (indexPosition > -1) {\n this.listViewInstance.enabledItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // eslint-disable-next-line\n var hiddenElementId = resutJSON.data[this.listViewInstance.fields.id];\n if (this.listViewInstance.hiddenItems.includes(hiddenElementId)) {\n var indexPosition = this.listViewInstance.hiddenItems.indexOf(hiddenElementId);\n if (indexPosition > -1) {\n this.listViewInstance.previousSelectedItems.splice(indexPosition, 1);\n this.listViewInstance.removeActiveClass();\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // eslint-disable-next-line\n var elementId = resutJSON.data[this.listViewInstance.fields.id];\n if (!this.listViewInstance.hiddenItems.includes(elementId)) {\n this.listViewInstance.hiddenItems.push(elementId);\n this.listViewInstance.removeActiveClass();\n }\n }\n else {\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n if (resutJSON.index !== undefined) {\n this.listViewInstance.interopAdaptor.invokeMethodAsync('RemoveItemPosition', resutJSON.index);\n }\n }\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n if (!(isBlazor() && this.listViewInstance.isServerRendered)) {\n this.removeUiItem(resutJSON.index);\n }\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n this.uiFirstIndex = Math.round(this.listViewInstance.element.scrollTop / 36) - 4;\n if (this.uiFirstIndex < 0) {\n this.uiFirstIndex = 0;\n }\n }\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource.push(currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, \n // eslint-disable-next-line\n [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n var virtualTemplate = this.listViewInstance.template;\n var template = this.listViewInstance.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n if (this.listViewInstance.isReact) {\n commonTemplate = null;\n }\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n }\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // eslint-disable-next-line\n var templateElements = template.getElementsByTagName('*');\n var groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // eslint-disable-next-line\n var groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == \"string\" && !args.item.classList.contains(\"e-list-group-item\")) ||\n (typeof this.listViewInstance.groupTemplate == \"string\" && args.item.classList.contains(\"e-list-group-item\"))) {\n args.item.innerHTML = '';\n }\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (var i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (var i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n var element = args.curData.isHeader ? groupTemplate : template;\n if (element.firstElementChild) {\n args.item.insertBefore(element.firstElementChild, null);\n }\n };\n Virtualization.prototype.compileTemplate = function (element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n };\n Virtualization.prototype.onChange = function (newData, listElement) {\n listElement.context.data = newData;\n // eslint-disable-next-line max-len\n var groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n // eslint-disable-next-line max-len\n var flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n // eslint-disable-next-line\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n // eslint-disable-next-line\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.updateContextData = function (listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n };\n Virtualization.prototype.classProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n var _loop_1 = function (i) {\n var classNameMatch = resultantOutput[i];\n // eslint-disable-next-line\n var classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n // eslint-disable-next-line\n var subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this_1.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this_1.templateData);\n }\n subNode.onChange = function (value) {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n var newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter(function (css) { return css; }));\n }\n subNode.bindedvalue = newCss;\n };\n var className = classNameMatch[0].split(' ');\n for (var i_1 = 0; i_1 < className.length; i_1++) {\n element.classList.remove(className[i_1]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n this_1.updateContextData(listElement, subNode, isHeader);\n };\n var this_1 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_1(i);\n }\n }\n };\n Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {\n var attributeNames = [];\n for (var i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n var _loop_2 = function (i) {\n var attributeName = attributeNames[i];\n var attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n var attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n // eslint-disable-next-line\n var attributeNameFunction;\n // eslint-disable-next-line\n var attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n var subNode_1 = {};\n if (isHeader) {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];\n }\n else {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];\n }\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?\n attributeName : subNode_1.bindedvalue[0];\n subNode_1.onChange = function (value) {\n var bindedvalue = subNode_1.bindedvalue[1] === undefined ?\n element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode_1.attrName);\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);\n element.setAttribute(subNode_1.attrName, bindedvalue);\n subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode_1.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode_1.attrName, attributeValue);\n this_2.updateContextData(listElement, subNode_1, isHeader);\n }\n };\n var this_2 = this;\n for (var i = 0; i < attributeNames.length; i++) {\n _loop_2(i);\n }\n };\n Virtualization.prototype.textProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n var _loop_3 = function (i) {\n var textPropertyMatch = resultantOutput[i];\n // eslint-disable-next-line\n var subNode = {};\n // eslint-disable-next-line\n var textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this_3.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this_3.templateData);\n }\n subNode.onChange = function (value) {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this_3.updateContextData(listElement, subNode, isHeader);\n };\n var this_3 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_3(i);\n }\n }\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n // eslint-disable-next-line\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import * as index from './index';\nindex.ListView.Inject(index.Virtualization);\nexport * from './index';\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","exports","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createList","createElement","dataSource","options","isSingleLevel","componentInstance","curOpt","extend","defaultListBaseOptions","ariaAttributes","defaultAriaAttributes","type","typeofData","typeof","createListFromArray","createListFromJson","generateUL","createListItemFromArray","subChild","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","defaultMappedFields","checkboxElement","anchorElement","child","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","showIcon","iconCss","itemClass","querySelector","prepend","firstElementChild","classList","add","setAttribute","toString","tooltip","htmlAttributes","enabled","isVisible","style","display","imageUrl","template","attr","src","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","processSubChild","addClass","listClass","getSiblingLI","elementArray","element","isPrevious","siblingLI","liIndex","liCollections","Array","prototype","indexOf","contains","groupDataSource","sortOrder","curFields","cusQuery","Query","groupBy","ds","getDataSource","addSorting","j","itemObj","items","grpItem","key","newtext","_id","trim","k","sortBy","query","queries","fn","splice","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","elementAttributes","class","split","attributes","nodeName","nodeValue","renderContentTemplate","ulElement","role","compiledString","compile","liCollection","innerText","currentID","groupTemplateID","templateID","compiledElement","isStringTemplate","append","renderGroupTemplate","groupTemplate","headerItems","category","headerItems_1","header","headerData","innerHTML","Math","floor","random","substring","subDS","hasChildren","subLi","expandCollapse","expandIconPosition","expandIconClass","innerElements","grpLI","elementID","groupItemRole","itemRole","href","anchorTag","document","createTextNode","isFullNavigation","anchorWrapper","uID","enableHtmlSanitizer","removeBlazorID","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","isChecked","headerTemplate","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","content","backIcon","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","itemReRender","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","isServerRendered","isBlazor","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","interopAdaptor","invokeMethodAsync","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","args","HeaderText","BackButton","headerEle","showHeader","setProperties","SanitizeHtmlHelper","sanitize","innerHeaderEle","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","updateBlazorTemplates","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","name","timingFunction","easing","end","model","trigger","curUL","preRender","e","renderCheckbox","bind","initialization","updateLiElementHeight","liContainer","liElementHeight","getBoundingClientRect","ulContainer","window","innerHeight","scrollIntoView","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","isValidLI","createCheckBox","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","clickHandler","closestElement","back","closest","parentNode","removeFocus","setCheckboxLI","eventArgs","selectEventData","removeHover","removeSelect","setSelectLI","ulElementContainer","selectedElements","includes","getAttribute","focusElement","focusElementId","selectedElement1","selectedElement2","concat","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","focusedElement","removeAttribute","onArrowKeyDown","prev","arrowKeyHandler","preventDefault","elementTop","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","scroll","pageYOffset","scrollTop","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","activeElement","wireEvents","EventHandler","touchModule","Touch","swipe","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","selectedLI","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","isInAnimation","setLocalData","listViewComponent","executeQuery","then","isDestroyed","result","renderList","catch","resetBlazorTemplates","clearTemplate","renderIntoDom","setAttributes","liElements","templateCollection","blazorTemplates","resetBlazorTemplate","resetExistingElements","updateBlazorTemplate","exceptionEvent","UpdateCurrentUL","removeActiveClass","setTimeout","childElementCount","selectedElement","elementIndex","hiddenElementIndex","x","y","renderingNestedList","ctrlId","getElementById","currentListItem","getElementsByTagName","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","initBlazor","tabindex","rippleFn","rippleEffect","selector","renderComplete","firstRender","classAr","pID","pop","toUL","fromUL","selectItem","uid","selectMultipleItems","getParentId","parentId","getSelectedItems","finalValue","isCompleted","getElementsByClassName","liTextCollection","liDataCollection","dataParent","tempData","blazorGetSelectedItems","finalGetSelectedItem","blazorSelectedItem","convertItemsToArray","isArray","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","isRefreshTemplateNeeded","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","getModuleName","requiredModules","modules","member","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","Component","Virtualization","instance","elementDifference","listViewInstance","templateRef","wireScrollEvent","firstDs","expectedDomItemCount","ValidateItemCount","domItemCount","uiLastIndex","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","listDiff","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","updateUlContainer","debounce","addEventListener","round","documentElement","dataSourceLength","itemCount","parseFloat","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","get","nextSibling","getscrollerHeight","startingHeight","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","scrollDiff","curViewDS_2","indexArray","dataSource_1","resutJSON","isSelected","elementId","indexPosition","itemId","liElementId","hiddenElementId","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","createAndInjectNewItem","itemData","virtualTemplate","commonTemplate","div","templateElements","groupTemplateElements","templateData","nodes","flatTemplateNodes","groupTemplateNodes","compileTemplate","textProperty","classProperty","attributeProperty","onChange","newData","listElement","updateContextData","node","regexMatch","regex","RegExp","resultantOutput","exec","this_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","newCss","attributeNames","this_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","attrName","attributeValue","isChildHasTextContent","this_3","textFunction","textPropertyMatch","targetElement","onNgChange","virtualThis","resultElement","lastChild","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","refreshDisabled","idx","updateItemClass","droppedElement","previousIndex","currentIndex","scope","removePlaceHolder","inst_1","onDragStart","cancelDrag","cancel","observedArgs","onDragStop","bindEvents","dragElement","prevIdx","curIdx","handled","dropInst","curIdx_1","prevIndx","curIdx_2","scopeName","beforeDropArgs","getComponent","Draggable","intDestroy","Sortable_1","getUniqueID","dataBind","initializeDraggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","grabbedElement","compareElementParent","inst","increased","disabledIdx","start","placeHolderPresent","offset","clientY","bottom","left","pageXOffset","destination","Base","index.ListView","Inject","index.Virtualization"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-lists.min.js","sources":["../../src/common/list-base.js","../../src/sortable/sortable.js","../../src/list-view/list-view.js","../../src/list-view/virtualization.js","../../src/global.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor } from '@syncfusion/ej2-base';\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n /* es-lint enable */\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n _this.onDrag = function (e) {\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target :\n true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n // eslint-disable-next-line\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n // eslint-disable-next-line\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) > 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if (dropInst.element === e.target && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, Draggable).intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 5\n });\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n idx = e.clientY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","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 { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n content: 'e-content',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\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('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' e-but-back',\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'option', listRole: 'presentation', itemText: '',\n groupItemRole: 'group', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData = void 0;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n args.item.setAttribute('aria-selected', 'true');\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n liElement.setAttribute('aria-selected', checked ? 'true' : 'false');\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.clickHandler = function (e) {\n var target = e.target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n }\n }\n else {\n this.setSelectLI(li, e);\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n if (this.selectedItems) {\n (this.selectedItems.item).setAttribute('aria-selected', 'false');\n }\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n this.spaceKeyHandler(e);\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n var activeElement = this.curUL.querySelector('[aria-selected = true]');\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (activeElement && !this.showCheckBox) {\n activeElement.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n this.touchModule.destroy();\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.setAttribute('aria-selected', 'false');\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n li.classList.add(classNames.focused);\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n // eslint-disable-next-line\n { item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs);\n this.selectedLI = li;\n this.renderSubList(li);\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = \n // eslint-disable-next-line\n getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[column]) &&\n this.fields[column] !==\n ListBase.defaultMappedFields[column]\n && columns.indexOf(this.fields[column]) === -1) {\n columns.push(this.fields[column]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy)), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy));\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, listViewComponent);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('aria-selected', 'false');\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n // eslint-disable-next-line\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n if (this.isReact) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n // eslint-disable-next-line\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { role: 'list', tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter(function (css) { return css; }));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n // eslint-disable-next-line\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked)) {\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n // eslint-disable-next-line\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n // eslint-disable-next-line\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n // eslint-disable-next-line\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n // eslint-disable-next-line\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n */\n ListView.prototype.addItem = function (data, fields) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource.push(data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n var isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n // eslint-disable-next-line\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, removeClass, addClass, compile, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n var otherDs = curViewDS.slice(1, this.domItemCount);\n var listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n };\n Virtualization.prototype.updateUlContainer = function (e) {\n var listDiff;\n var virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n // eslint-disable-next-line max-len\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function (e) {\n var _a;\n var startingHeight;\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n // eslint-disable-next-line\n fields[_this.listViewInstance.fields.id]\n // eslint-disable-next-line\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][text]);\n dataCollection.push(curViewDS_2[indexArray[i]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n // eslint-disable-next-line\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked = void 0;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs = void 0;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource.push(currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, \n // eslint-disable-next-line\n [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n var virtualTemplate = this.listViewInstance.template;\n var template = this.listViewInstance.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n if (this.listViewInstance.isReact) {\n commonTemplate = null;\n }\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n }\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // eslint-disable-next-line\n var templateElements = template.getElementsByTagName('*');\n var groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // eslint-disable-next-line\n var groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == \"string\" && !args.item.classList.contains(\"e-list-group-item\")) ||\n (typeof this.listViewInstance.groupTemplate == \"string\" && args.item.classList.contains(\"e-list-group-item\"))) {\n args.item.innerHTML = '';\n }\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (var i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (var i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n var element = args.curData.isHeader ? groupTemplate : template;\n if (element.firstElementChild) {\n args.item.insertBefore(element.firstElementChild, null);\n }\n };\n Virtualization.prototype.compileTemplate = function (element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n };\n Virtualization.prototype.onChange = function (newData, listElement) {\n listElement.context.data = newData;\n // eslint-disable-next-line max-len\n var groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n // eslint-disable-next-line max-len\n var flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n // eslint-disable-next-line\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n // eslint-disable-next-line\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.updateContextData = function (listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n };\n Virtualization.prototype.classProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n var _loop_1 = function (i) {\n var classNameMatch = resultantOutput[i];\n // eslint-disable-next-line\n var classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n // eslint-disable-next-line\n var subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this_1.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this_1.templateData);\n }\n subNode.onChange = function (value) {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n var newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter(function (css) { return css; }));\n }\n subNode.bindedvalue = newCss;\n };\n var className = classNameMatch[0].split(' ');\n for (var i_1 = 0; i_1 < className.length; i_1++) {\n element.classList.remove(className[i_1]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n this_1.updateContextData(listElement, subNode, isHeader);\n };\n var this_1 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_1(i);\n }\n }\n };\n Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {\n var attributeNames = [];\n for (var i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n var _loop_2 = function (i) {\n var attributeName = attributeNames[i];\n var attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n var attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n // eslint-disable-next-line\n var attributeNameFunction;\n // eslint-disable-next-line\n var attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n var subNode_1 = {};\n if (isHeader) {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];\n }\n else {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];\n }\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?\n attributeName : subNode_1.bindedvalue[0];\n subNode_1.onChange = function (value) {\n var bindedvalue = subNode_1.bindedvalue[1] === undefined ?\n element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode_1.attrName);\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);\n element.setAttribute(subNode_1.attrName, bindedvalue);\n subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode_1.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode_1.attrName, attributeValue);\n this_2.updateContextData(listElement, subNode_1, isHeader);\n }\n };\n var this_2 = this;\n for (var i = 0; i < attributeNames.length; i++) {\n _loop_2(i);\n }\n };\n Virtualization.prototype.textProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n var _loop_3 = function (i) {\n var textPropertyMatch = resultantOutput[i];\n // eslint-disable-next-line\n var subNode = {};\n // eslint-disable-next-line\n var textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this_3.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this_3.templateData);\n }\n subNode.onChange = function (value) {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this_3.updateContextData(listElement, subNode, isHeader);\n };\n var this_3 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_3(i);\n }\n }\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n // eslint-disable-next-line\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import * as index from './index';\nindex.ListView.Inject(index.Virtualization);\nexport * from './index';\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","compileTemplate","template","document","querySelector","compile","innerHTML","trim","e","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","exports","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createList","createElement","dataSource","options","isSingleLevel","componentInstance","curOpt","extend","defaultListBaseOptions","ariaAttributes","defaultAriaAttributes","type","typeofData","typeof","createListFromArray","createListFromJson","generateUL","createListItemFromArray","subChild","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","defaultMappedFields","checkboxElement","anchorElement","child","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","showIcon","iconCss","itemClass","prepend","firstElementChild","classList","add","setAttribute","toString","tooltip","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","processSubChild","addClass","listClass","getSiblingLI","elementArray","element","isPrevious","siblingLI","liIndex","liCollections","Array","prototype","indexOf","contains","groupDataSource","sortOrder","curFields","cusQuery","Query","groupBy","ds","getDataSource","addSorting","j","itemObj","items","grpItem","key","newtext","_id","k","sortBy","query","queries","fn","splice","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","elementAttributes","class","split","attributes","nodeName","nodeValue","renderContentTemplate","ulElement","role","compiledString","liCollection","innerText","currentID","groupTemplateID","templateID","compiledElement","isStringTemplate","append","renderGroupTemplate","groupTemplate","headerItems","category","headerItems_1","header","headerData","Math","floor","random","substring","subDS","hasChildren","subLi","expandCollapse","expandIconPosition","expandIconClass","innerElements","grpLI","elementID","groupItemRole","itemRole","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","enableHtmlSanitizer","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","isChecked","headerTemplate","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","content","backIcon","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerEle","showHeader","setProperties","SanitizeHtmlHelper","sanitize","innerHeaderEle","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","name","timingFunction","easing","end","model","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","isValidLI","createCheckBox","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","clickHandler","closestElement","back","closest","parentNode","removeFocus","setCheckboxLI","eventArgs","selectEventData","removeHover","removeSelect","setSelectLI","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","focusedElement","removeAttribute","onArrowKeyDown","prev","arrowKeyHandler","preventDefault","elementTop","getBoundingClientRect","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","window","scroll","pageYOffset","scrollTop","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","activeElement","wireEvents","EventHandler","touchModule","Touch","swipe","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","selectedLI","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","getAttribute","exceptionEvent","UpdateCurrentUL","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","pID","pop","toUL","fromUL","selectItem","uid","selectMultipleItems","getParentId","parentId","getSelectedItems","finalValue","isCompleted","getElementsByClassName","liTextCollection","liDataCollection","dataParent","tempData","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","isArray","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","getModuleName","requiredModules","modules","member","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","Component","Virtualization","instance","elementDifference","listViewInstance","templateRef","wireScrollEvent","firstDs","expectedDomItemCount","ValidateItemCount","domItemCount","uiLastIndex","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","listDiff","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","updateUlContainer","addEventListener","liElementHeight","updateLiElementHeight","round","documentElement","dataSourceLength","itemCount","parseFloat","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","get","nextSibling","getscrollerHeight","startingHeight","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","resutJSON","isSelected","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","createAndInjectNewItem","itemData","virtualTemplate","commonTemplate","div","templateElements","getElementsByTagName","groupTemplateElements","templateData","nodes","flatTemplateNodes","groupTemplateNodes","textProperty","classProperty","attributeProperty","onChange","newData","listElement","updateContextData","node","regexMatch","regex","RegExp","resultantOutput","exec","this_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","newCss","attributeNames","this_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","attrName","attributeValue","isChildHasTextContent","this_3","textFunction","textPropertyMatch","targetElement","onNgChange","virtualThis","resultElement","lastChild","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","childElementCount","refreshDisabled","idx","updateItemClass","droppedElement","previousIndex","currentIndex","scope","removePlaceHolder","inst_1","onDragStart","cancelDrag","cancel","observedArgs","onDragStop","isBlazor","bindEvents","dragElement","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","beforeDropArgs","getComponent","Draggable","intDestroy","Sortable_1","getUniqueID","dataBind","initializeDraggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","grabbedElement","compareElementParent","inst","increased","disabledIdx","start","placeHolderPresent","offset","clientY","bottom","left","pageXOffset","destination","Base","index.ListView","Inject","index.Virtualization"],"mappings":"gEAq8BA,SAAgBA,GAAeC,EAAUC,GACrC,GAAIC,KACJ,IAAIC,oBAAkBH,IAAmC,oBAAkC,qBACnFG,oBAAkBH,EAASI,UAC/B,MAAOJ,EAGP,KAAK,GAAIK,GAAK,EAAGC,EAAKC,OAAOC,KAAKP,GAASI,EAAKC,EAAGG,OAAQJ,IAAM,CAC7D,GACIK,GAAYT,EADJK,EAAGD,IAEXM,EAASR,oBAAkBO,IACJ,uBAA2CE,GAAhCC,WAASH,EAAWV,EACrDG,qBAAkBQ,KACnBT,EAAUQ,GAAaC,GAInC,MAAOT,GAEX,QAASY,GAAgBC,GACrB,GAAIA,EACA,IACI,GAAIC,SAASC,cAAcF,GACvB,MAAOG,WAAQF,SAASC,cAAcF,GAAUI,UAAUC,QAGlE,MAAOC,GACH,MAAOH,WAAQH,ICvjB3B,QAAgBO,GAAOC,EAAMC,EAAIC,EAAeC,GAC5C,GAAIC,KAYJ,IAXKH,IACDA,EAAKD,GAELE,GAAiBA,EAAchB,OAC/BgB,EAAcG,QAAQ,SAAUC,GAC5BF,EAAeG,KAAKP,EAAKQ,SAASF,MAItCF,KAAoBK,MAAMC,KAAKV,EAAKQ,UAEpC5B,oBAAkBuB,GAClBC,EAAeC,QAAQ,SAAUM,GAC7BV,EAAGW,YAAYD,SAGlB,CACD,GAAIE,GAAkBZ,EAAGO,SAASL,EAClCC,GAAeC,QAAQ,SAAUM,GAC7BV,EAAGE,aAAaQ,EAAQE,MD7bpCC,YAKIC,GAAI,cACJC,GAAI,qBACJC,MAAO,oBACPC,KAAM,cACNC,KAAM,cACNC,MAAO,eACPC,QAAS,YACTC,SAAU,aACVC,SAAU,aACVC,YAAa,iBACbC,SAAU,cACVC,MAAO,UACPC,IAAK,aACLC,YAAa,qBACbC,SAAU,aACVC,MAAO,aACPC,YAAa,iBACbC,WAAY,gBACZC,UAAW,eAOf,SAAWC,GAoEP,QAASC,GAAWC,EAAeC,EAEnCC,EAASC,EAAeC,GACpB,GAAIC,GAASC,YAAWC,EAAwBL,GAC5CM,EAAiBF,YAAWG,EAAuBJ,EAAOG,gBAC1DE,EAAOC,EAAWV,GAAYW,MAClC,OAAa,WAATF,GAA8B,WAATA,EACdG,EAAoBb,EAAeC,EAAYE,EAAeD,EAASE,GAGvEU,EAAmBd,EAAeC,EAAYC,EAASM,EAAelB,MAAOa,EAAeC,GAmB3G,QAASS,GAAoBb,EAAeC,EAG5CE,EAAeD,EAASE,GAEpB,MAAOW,GAAWf,EADHgB,EAAwBhB,EAAeC,EAAYE,EAAeD,EAASE,GAC/C,KAAMF,GAkBrD,QAASc,GAAwBhB,EAAeC,EAEhDE,EAAeD,EAASE,GACpB,GAAIa,MACAZ,EAASC,YAAWC,EAAwBL,EAChDgB,YAAWC,EAAed,EAAOe,WAEjC,KAAK,GADDC,GAAKC,IACAC,EAAI,EAAGA,EAAItB,EAAWnD,OAAQyE,IACnC,IAAI/E,oBAAkByD,EAAWsB,IAAjC,CAGA,GAAI5C,OAAK,EACT,IAAI0B,EAAOmB,cAA+C,kBAAxBnB,GAAOmB,aAA6B,CAC9DC,GACAxB,WAAYA,EACZwB,QAASxB,EAAWsB,GACpBxC,KAAMkB,EAAWsB,GACjBrB,QAASG,EAEbA,GAAOmB,aAAaC,GAQxB,GALI9C,EADAwB,EACKuB,EAAsB1B,EAAeC,EAAWsB,OAAItE,GAAW,KAAM,QAAU,KAAMoE,EAAIE,EAAGrB,GAG5FyB,EAAW3B,EAAeC,EAAWsB,OAAItE,GAAW,KAAM,KAAMiD,EAASE,GAE9EC,EAAOuB,aAA6C,kBAAvBvB,GAAOuB,YAA4B,CAChE,GAAIH,IACAxB,WAAYA,EACZwB,QAASxB,EAAWsB,GACpBxC,KAAMkB,EAAWsB,GACjBM,KAAMlD,EACNuB,QAASG,EAEbA,GAAOuB,YAAYH,GAEvBR,EAAS9C,KAAKQ,GAElB,MAAOsC,GAoBX,QAASa,GAAuB9B,EAAeC,EAE/CC,EAASZ,EAAOa,EAAeC,GAC3B,GAAIC,GAASC,YAAWC,EAAwBL,EAChDgB,YAAWC,EAAed,EAAOe,WACjC,IAEIC,GAFA/E,EAASgE,YAAWR,EAASiC,oBAAqB1B,EAAO/D,QACzDkE,EAAiBF,YAAWG,EAAuBJ,EAAOG,gBAE1DwB,IACA1C,KACAkB,EAAelB,MAAQA,EAE3B,IACIX,GACAsD,EAFAC,IAGAjC,IAAcA,EAAWnD,SAAWN,oBAAkBmE,EAAWV,GAAY4B,QAE5ElB,EAAWV,GAAY4B,KAAKM,eAAe7F,EAAO+E,MACnDA,EAAKC,IAET,KAAK,GAAIC,GAAI,EAAGA,EAAItB,EAAWnD,OAAQyE,IAAK,CACxC,GAAIhF,GAAYH,EAAe6D,EAAWsB,GAAIjF,EAC9C,KAAIE,oBAAkByD,EAAWsB,IAAjC,CAGA,GAAIlB,EAAOmB,cAA+C,kBAAxBnB,GAAOmB,aAA6B,CAC9DC,GACAxB,WAAYA,EACZwB,QAASxB,EAAWsB,GACpBxC,KAAMxC,EAAUD,EAAOyC,MACvBmB,QAASG,EACT/D,OAAQA,EAEZ+D,GAAOmB,aAAaC,GAExB,GAAIW,GAAUnC,EAAWsB,EACrBlB,GAAOmB,cAA+C,kBAAxBnB,GAAOmB,eACrCjF,EAAYH,EAAe6D,EAAWsB,GAAIjF,IAG1CC,EAAU4F,eAAe7F,EAAO+E,MAAQ7E,oBAAkBD,EAAUD,EAAO+E,OAC3EA,EAAK9E,EAAUD,EAAO+E,IAE1B,IAAIgB,KASJ,IARIhC,EAAOiC,eACHjC,EAAOkC,gBAAkBhG,EAAUD,EAAOiD,MAAQhD,EAAUD,EAAOkG,gBACnER,EAAgB7D,KAAK6B,EAAc,SAAWyC,UAAWvB,WAASlC,MAAO0D,OAAShC,KAAM,eAGxF2B,EAASlE,KAAK6B,EAAc,SAAWyC,UAAWvB,WAASlC,MAAO0D,OAAShC,KAAM,iBAGnE,IAAlBP,EAEIE,EAAOsC,UAAYpG,EAAU4F,eAAe7F,EAAOsG,WAAapG,oBAAkBD,EAAUD,EAAOsG,WACnGP,EAASlE,KAAK6B,EAAc,QAAUyC,UAAWvB,WAASpC,KAAO,IAAMvC,EAAUD,EAAOsG,YAM5FX,GAJAtD,EAAK+C,EAAsB1B,EAAeoC,EAAS7F,EAAWD,EAAQ+D,EAAOwC,UAAWR,KAEvFD,EAAQD,eAAe,cACpBC,EAAQ3F,UAA0B4E,EAAIE,EAAGrB,IAC1B5C,cAAc,IAAM4D,WAAStB,YAC5CS,EAAOkC,eAAiBP,EAAgBlF,QACxCgG,UAAQd,EAAiBrD,EAAGoE,uBAG/B,CAsBD,IArBApE,EAAKgD,EAAW3B,EAAeoC,EAAS7F,EAAWD,EAAQ+D,EAAOwC,UAAW3C,EAASE,IACnF4C,UAAUC,IAAI/B,WAAS5B,MAAQ,IAAMkB,EAAelB,OACvDX,EAAGuE,aAAa,aAAc1C,EAAelB,MAAM6D,YACnDlB,EAAgBtD,EAAGrB,cAAc,IAAM4D,WAAStB,YAE5CrD,EAAU4F,eAAe7F,EAAO8G,UAChCzE,EAAGuE,aAAa,QAAS3G,EAAUD,EAAO8G,UAG1C7G,EAAU4F,eAAe7F,EAAO+G,iBAAmB9G,EAAUD,EAAO+G,iBACpEH,EAAavE,EAAIpC,EAAUD,EAAO+G,iBAGlC9G,EAAU4F,eAAe7F,EAAOgH,WAA0C,IAA9B/G,EAAUD,EAAOgH,UAC7D3E,EAAGqE,UAAUC,IAAI/B,WAASzB,UAG1BlD,EAAU4F,eAAe7F,EAAOiH,aAA8C,IAAhChH,EAAUD,EAAOiH,aAC/D5E,EAAG6E,MAAMC,QAAU,QAGnBlH,EAAU4F,eAAe7F,EAAOoH,YAAclH,oBAAkBD,EAAUD,EAAOoH,aAC7ErD,EAAOjD,SAAU,CACrB,GAAIuG,IAASC,IAAKrH,EAAUD,EAAOoH,UACnCG,SAAMF,EAAMpH,EAAUD,EAAOwH,iBAC7B,IAAIC,GAAc/D,EAAc,OAASyC,UAAWvB,WAASxB,MAAOgD,MAAOiB,GACvE1B,GACAA,EAAc+B,sBAAsB,aAAcD,GAGlDjB,WAASiB,GAAcpF,EAAGoE,mBAIlC,GAAI1C,EAAOsC,UAAYpG,EAAU4F,eAAe7F,EAAOsG,WAClDpG,oBAAkBD,EAAUD,EAAOsG,YAAcvC,EAAOjD,SAAU,CACnE,GAAI6G,GAAcjE,EAAc,OAASyC,UAAWvB,WAASpC,KAAO,IAAMvC,EAAUD,EAAOsG,UACvFX,GACAA,EAAc+B,sBAAsB,aAAcC,GAGlDnB,WAASmB,GAActF,EAAGoE,mBAG9BV,EAASvF,QACTgG,UAAQT,EAAU1D,EAAGoE,mBAErB1C,EAAOkC,eAAiBP,EAAgBlF,QACxCgG,UAAQd,EAAiBrD,EAAGoE,mBAEhCmB,EAAgBlE,EAAezD,EAAWD,EAAQ2D,EAAYI,EAAQ1B,EAAI6B,EAAelB,OAK7F,GAHI2C,GACAkC,YAAUxF,IAAMuC,WAASrB,YAEzBQ,EAAOuB,aAA6C,kBAAvBvB,GAAOuB,YAA4B,CAChE,GAAIH,IACAxB,WAAYA,EACZwB,QAASxB,EAAWsB,GACpBxC,KAAMxC,EAAUD,EAAOyC,MACvB8C,KAAMlD,EACNuB,QAASG,EACT/D,OAAQA,EAEZ+D,GAAOuB,YAAYH,GAEvBO,KACAE,EAAM/D,KAAKQ,IAEf,MAAOuD,GAoBX,QAASpB,GAAmBd,EAAeC,EAE3CC,EAASZ,EAAOa,EAAeC,GAC3B,GAAIC,GAASC,YAAWC,EAAwBL,EAEhD,OAAOa,GAAWf,EADT8B,EAAuB9B,EAAeC,EAAYC,EAASZ,EAAOa,EAAeC,GACrDC,EAAO+D,UAAWlE,GAU3D,QAASmE,GAAaC,EAAcC,EAASC,GAEzC,GADAtD,WAAWC,EAAeZ,EAAuBa,YAC5CkD,GAAiBA,EAAaxH,OAAnC,CAGA,GAAI2H,GACAC,EACAC,EAAgBC,MAAMC,UAAUxG,MAAMC,KAAKgG,EAQ/C,KADAG,EAAYE,GALRD,EADAH,EACUO,EAAQP,EAASI,IAGD,IAAfH,EAAsBG,EAAc7H,QAAU,KAET,IAAf0H,GAAuB,EAAI,IACzDC,KAAelB,YAAUkB,IAAcA,EAAUzB,UAAU+B,SAAS7D,WAASzB,YAEhFgF,EAAYE,EADZD,IAAoC,IAAfF,GAAuB,EAAI,EAGpD,OAAOC,IASX,QAASK,GAAQjD,EAAMyC,GACnB,GAAKA,GAAiBzC,EAGjB,CAGD,MADgB+C,OAAMC,UAAUxG,MAAMC,KAAKgG,GACtBQ,QAAQjD,IAWrC,QAASmD,GAAgB/E,EAAY3D,EAAQ2I,OACvB,KAAdA,IAAwBA,EAAY,OACxC,IAAIC,GAAY5E,YAAWR,EAASiC,oBAAqBzF,GACrD6I,GAAW,GAAIC,UAAQvG,MAAMqG,EAAUG,SAGvCC,EAAKC,EAActF,EADvBkF,EAAWK,EAAWP,EAAW,MAAOE,GAExClF,KACA,KAAK,GAAIwF,GAAI,EAAGA,EAAIH,EAAGxI,OAAQ2I,IAAK,CAChC,GAAIC,GAAUJ,EAAGG,GAAGE,MAChBC,IAEJA,GAAQV,EAAUnG,MAAQuG,EAAGG,GAAGI,IAChCD,EAAW,UAAI,CACf,IAAIE,GAAUZ,EAAUnG,IACR,QAAZ+G,IAEAF,EADAE,EAAU,QACSR,EAAGG,GAAGI,KAE7BD,EAAQG,IAAM,oBAAsBT,EAAGG,GAAGI,IACtCP,EAAGG,GAAGI,IAAI1C,WAAW1F,OAAS,aAClCmI,EAAQD,MAAQD,EAChBzF,EAAW9B,KAAKyH,EAChB,KAAK,GAAII,GAAI,EAAGA,EAAIN,EAAQ5I,OAAQkJ,IAChC/F,EAAW9B,KAAKuH,EAAQM,IAGhC,MAAO/F,GAUX,QAASuF,GAAWP,EAAWgB,EAAQC,GAEnC,OADc,KAAVA,IAAoBA,EAAQ,GAAId,UAClB,cAAdH,EACAiB,EAAMD,OAAOA,EAAQ,aAAa,OAEjC,IAAkB,eAAdhB,EACLiB,EAAMD,OAAOA,EAAQ,cAAc,OAGnC,KAAK,GAAI1E,GAAI,EAAGA,EAAI2E,EAAMC,QAAQrJ,OAAQyE,IACV,aAAxB2E,EAAMC,QAAQ5E,GAAG6E,IACjBF,EAAMC,QAAQE,OAAO9E,EAAG,EAIpC,OAAO2E,GAUX,QAASX,GAActF,EAAYiG,GAE/B,MAAO,IAAII,eAAYrG,GAClBsG,aAAaL,GAStB,QAASM,GAAsBjC,EAASrE,GACpC,GAAIG,GAASC,YAAWC,EAAwBL,GAC5C5D,EAASgE,YAAWR,EAASiC,oBAAqB1B,EAAO/D,QACzDmK,EAASlC,EAAQmC,WAAU,GAE3BC,IACJF,GAAOzD,UAAUC,IAAI,cACrB,IAAI2D,GAASH,EAAOI,iBAAiB,kBACrCJ,GAAOzD,UAAU8D,OAAO,cACxB,KAAK,GAAIvF,GAAI,EAAGA,EAAIqF,EAAO9J,OAAQyE,IAAK,CAQpC,IAAK,GAPD5C,GAAKiI,EAAOrF,GACZwF,EAASpI,EAAGrB,cAAc,KAC1BsB,EAAKD,EAAGrB,cAAc,MAEtB0J,KACAC,EAAaF,EAASA,EAAOE,WAAatI,EAAGsI,WAC7CpK,EAAOD,OAAOC,KAAKoK,GACdC,EAAM,EAAGA,EAAMD,EAAWnK,OAAQoK,IACjCD,EAAWE,OAAOtK,EAAKqK,KAAQE,kBACjCJ,EAAK1K,EAAOyC,MAAQkI,EAAWE,OAAOtK,EAAKqK,KAAO9H,YAG1D,IAAIiI,GAAeC,EAAiB3I,EAChC0I,GAAahG,IACb2F,EAAK1K,EAAO+E,IAAMgG,EAAahG,SACxBgG,GAAahG,IAGpB2F,EAAK1K,EAAO+E,IAAMC,IAElB1E,OAAOC,KAAKwK,GAAcvK,SAC1BkK,EAAK1K,EAAO+G,gBAAkBgE,GAE9BN,IACAM,EAAeC,EAAiBP,GAC5BnK,OAAOC,KAAKwK,GAAcvK,SAC1BkK,EAAK1K,EAAOkG,eAAiB6E,IAGjCzI,IACAoI,EAAK1K,EAAO4F,OAASsE,EAAsB5H,EAAIsB,IAEnDyG,EAAOxI,KAAK6I,GAEhB,MAAOL,GAGX,QAAShG,GAAW4G,GAEhB,IAAK,GADDC,IAAU5G,OAAQ,KAAMiB,KAAM,MACzBN,EAAI,EAAGA,EAAIgG,EAAKzK,OAAQyE,IAC7B,IAAK/E,oBAAkB+K,EAAKhG,IACxB,MAAOiG,IAAU5G,aAAe2G,GAAKhG,GAAIM,KAAM0F,EAAKhG,GAG5D,OAAOiG,GAEX,QAAStE,GAAaqB,EAASkD,GAC3B,GAAI9D,KACJE,SAAMF,EAAM8D,GACR9D,EAAK+D,QACLvD,YAAUI,GAAUZ,EAAK+D,MAAMC,MAAM,YAC9BhE,GAAK+D,OAEhBE,aAAWrD,EAASZ,GAExB,QAAS2D,GAAiB/C,GAGtB,IAAK,GAFDqD,MACAjE,EAAOY,EAAQqD,WACV1J,EAAQ,EAAGA,EAAQyF,EAAK7G,OAAQoB,IACrC0J,EAAWjE,EAAKzF,GAAO2J,UAAYlE,EAAKzF,GAAO4J,SAEnD,OAAOF,GASX,QAASG,GAAsB/H,EAAe5C,EAAU6C,EAExD3D,EAAQ4D,EAASE,GACbc,WAAWC,EAAeZ,EAAuBa,WASjD,KAAK,GAFDpE,GANAgL,EAAYhI,EAAc,MAAQyC,UAAWvB,WAAStC,GAAI8D,OAASuF,KAAM,kBACzE5H,EAASC,YAAWC,EAAwBL,GAC5CgF,EAAY5E,YAAWR,EAASiC,oBAAqBzF,GAErD4L,EAAiB/K,EAAgBC,GACjC+K,KAEA9G,EAAKC,IACAC,EAAI,EAAGA,EAAItB,EAAWnD,OAAQyE,IAAK,CACxC,GAAIhF,GAAYH,EAAe6D,EAAWsB,GAAI2D,GAC1C9C,EAAUnC,EAAWsB,GACrB9E,EAAW2F,EAAQ3F,QAOvB,IALIO,EADyB,gBAAlBiD,GAAWsB,IAA4C,gBAAlBtB,GAAWsB,GAC/Ca,EAGA7F,EAAU2I,EAAUlI,OAE5BqD,EAAOmB,cAA+C,kBAAxBnB,GAAOmB,aAA6B,CAC9DC,GACAxB,WAAYA,EACZwB,QAASW,EACTrD,KAAM/B,EACNkD,QAASG,EACT/D,OAAQ4I,EAEZ7E,GAAOmB,aAAaC,GAEpBpB,EAAOmB,cAA+C,kBAAxBnB,GAAOmB,eACrCjF,EAAYH,EAAe6D,EAAWsB,GAAI2D,GAEtClI,EADyB,gBAAlBiD,GAAWsB,IAA4C,gBAAlBtB,GAAWsB,GAC/Ca,EAGA7F,EAAU2I,EAAUlI,OAGpC,IAAI2B,GAAKqB,EAAc,MACnBqB,GAAIA,EAAK,IAAME,EACfkB,UAAWhG,EAAWyE,WAASrC,MAAQqC,WAASvC,GAAI+D,OAASuF,KAAM,iBAEvE,IAAIxL,EAC6B,gBAAlBwD,GAAWsB,IAA4C,gBAAlBtB,GAAWsB,GACvD5C,EAAGyJ,UAAYhG,EAGfzD,EAAGyJ,UAAY7L,EAAU2I,EAAUnG,UAGtC,CACD,GAAIsJ,GAAY5L,EAAW4D,EAAOiI,gBAAkBjI,EAAOkI,UAC3D,IAAI9L,GAEI+L,EAAkBN,EAAe9F,EAAShC,EAAmB,iBAAkBiI,IAAahI,EAAOoI,iBAAkB,KAAM9J,KAE3H+J,SAAOF,EAAiB7J,OAG3B,CAED,GAAI6J,GAAkBN,EAAe9F,EAAShC,EAAmB,WAAYiI,IAAahI,EAAOoI,iBAAkB,KAAM9J,EACrH6J,IACAE,SAAOF,EAAiB7J,GAGhCA,EAAGuE,aAAa,aAAc1G,oBAAkBQ,GAAS,OAASA,GAClE2B,EAAGuE,aAAa,OAAQ,UAE5B,GAAI7C,EAAOuB,aAA6C,kBAAvBvB,GAAOuB,YAA4B,CAChE,GAAIH,IACAxB,WAAYA,EACZwB,QAASW,EACTrD,KAAM/B,EACN6E,KAAMlD,EACNuB,QAASG,EACT/D,OAAQ4I,EAEZ7E,GAAOuB,YAAYH,GAEvB0G,EAAahK,KAAKQ,GAGtB,MADA+J,UAAOP,EAAcH,GACdA,EAeX,QAASW,GAAoBC,EAAe5D,EAAiB1I,EAE7DuM,EAAa3I,EAASE,GAMlB,IAAK,GAJD8H,GAAiB/K,EAAgByL,GACjC1D,EAAY5E,YAAWR,EAASiC,oBAAqBzF,GACrD+D,EAASC,YAAWC,EAAwBL,GAC5C4I,EAAW5D,EAAUG,QAChB3I,EAAK,EAAGqM,EAAgBF,EAAanM,EAAKqM,EAAcjM,OAAQJ,IAAM,CAC3E,GAAIsM,GAASD,EAAcrM,GACvBuM,IACJA,GAAWH,GAAYE,EAAO5J,YAC9B4J,EAAOxL,UAAY,EAEnB,IAAIgL,GAAkBN,EAAee,EAAY7I,EAAmB,gBAAiBC,EAAOiI,kBAAmBjI,EAAOoI,iBAAkB,KAAMO,EAC1IR,IACAE,SAAOF,EAAiBQ,GAGhC,MAAOH,GAGX,QAASvH,KACL,MAAO4H,MAAKC,MAA4B,OAArB,EAAID,KAAKE,WACvBjG,SAAS,IACTkG,UAAU,GAGnB,QAASnF,GAAgBlE,EAAezD,EAAWD,EAAQgJ,EAAIpF,EAASqE,EAASjF,GAE7E,GAAIgK,GAAQ/M,EAAUD,EAAO4F,WACzBqH,EAAchN,EAAUD,EAAOiN,YAEnC,IAAID,EAAMxM,SACNyM,GAAc,EACdhF,EAAQvB,UAAUC,IAAI/B,WAAS7B,UAC3Ba,EAAQgE,iBAAiB,CACzB,GAAIsF,GAAQ1I,EAAmBd,EAAesJ,EAAOpJ,IAAWZ,EAChEiF,GAAQ/F,YAAYgL,GAItBtJ,EAAQuJ,gBAAkBF,IAAgBrJ,EAAQ9C,WACpDmH,EAAQxB,kBAAkBC,UAAUC,IAAI/B,WAASvB,cAEE,SAA/BO,EAAQwJ,mBAAgC5G,UAAU4F,WACvD1I,EAAc,OAASyC,UAAW,WAAavC,EAAQyJ,mBAAqBpF,EAAQjH,cAAc,IAAM4D,WAAS9B,eAGxI,QAASsC,GAAsB1B,EAAe6B,EAAMtF,EAAWD,EAAQmG,EAAWmH,EAAeC,EAAOxI,EAAInD,EAAOgC,GAC/G,GAIID,GAJAI,EAASC,YAAWC,EAAwBL,GAC5CM,EAAiBF,YAAWG,EAAuBJ,EAAOG,gBAC1DzB,EAAO8C,EACP7E,EAAQ6E,CAEQ,iBAATA,IAAqC,gBAATA,IAAqC,iBAATA,KAC/D5B,EAAa4B,EACb9C,EAA0C,iBAA3BxC,GAAUD,EAAOyC,OAAyD,gBAA3BxC,GAAUD,EAAOyC,MAC3ExC,EAAUD,EAAOyC,MAASxC,EAAUD,EAAOyC,OAAS,GACxD/B,EAAQT,EAAUD,EAAOU,OAE7B,IAAI8M,EAMAA,GALCtN,oBAAkByD,IAAgBzD,oBAAkBD,EAAUD,EAAO+E,MAC1C,KAAzB9E,EAAUD,EAAO+E,IAIRA,EAAK,IAAMnD,EAHXmD,CAKhB,IAAI1C,GAAKqB,EAAc,MACnByC,YAAsB,IAAVoH,EAAiB3I,WAASrC,MAAQqC,WAASvC,IAAM,KAAOnC,oBAAkBiG,GAAa,GAAKA,GACxGpB,GAAIyI,EAAWpH,MAAyC,KAAjClC,EAAeuJ,eAAoD,KAA5BvJ,EAAewJ,UACvE/B,MAAiB,IAAV4B,EAAiBrJ,EAAeuJ,cAAgBvJ,EAAewJ,cA8BhF,OA3BI/J,IAAc1D,EAAU4F,eAAe7F,EAAOgH,UAAqD,UAAzC/G,EAAUD,EAAOgH,SAASH,YACpFxE,EAAGqE,UAAUC,IAAI/B,WAASzB,UAE1BoK,EACAlL,EAAGyJ,UAAYrJ,GAGfJ,EAAGuE,aAAa,aAAc1G,oBAAkBQ,GAAS,OAASA,GAClE2B,EAAGuE,aAAa,OAAQ,UAEpBjD,GAAc1D,EAAU4F,eAAe7F,EAAO+G,iBAAmB9G,EAAUD,EAAO+G,iBAClFH,EAAavE,EAAIpC,EAAUD,EAAO+G,iBAElCuG,EAAc9M,SAAWuD,EAAOkC,eAChCmG,SAAOkB,EAAejL,GAEtBsB,IAAe1D,EAAUD,EAAOiD,MAAShD,EAAUD,EAAOkG,gBAC1DjG,EAAUD,EAAOkG,eAAeyH,MAChCtL,EAAGH,YAAY0L,EAAUlK,EAAeC,EAAY3D,EAAQyC,EAAM6K,EAAevJ,EAAOkC,iBAGpFqH,EAAc9M,QAAUuD,EAAOkC,eAC/BmG,SAAOkB,EAAejL,GAE1BA,EAAGH,YAAYnB,SAAS8M,eAAepL,MAGxCJ,EAEX,QAASwC,GAAeC,GAGpB,OACIzC,GAAI,KAAOyC,EAAa,QACxBxC,GAAI,KAAOwC,EAAa,eACxBvC,MAAO,KAAOuC,EAAa,cAC3BtC,KAAM,KAAOsC,EAAa,QAC1BrC,KAAM,KAAOqC,EAAa,QAC1BpC,MAAO,KAAOoC,EAAa,SAC3BnC,QAAS,YACTC,SAAU,aACVC,SAAU,aACVC,YAAa,iBACbC,SAAU,cACVC,MAAO,UACPC,IAAK,KAAO6B,EAAa,OACzB5B,YAAa,qBACbC,SAAU,aACVC,MAAO,KAAO0B,EAAa,OAC3BzB,YAAa,iBACbC,WAAY,gBACZC,UAAW,eAGnB,QAASqK,GAAUlK,EAAeC,EAAY3D,EAAQyC,EAAM6K,EAAeQ,GACvE,GAAI7N,GAAYH,EAAe6D,EAAY3D,GACvCqH,GAASsG,KAAM1N,EAAUD,EAAOiD,KAEhChD,GAAU4F,eAAe7F,EAAOkG,gBAAkBjG,EAAUD,EAAOkG,iBACnEqB,QAAMF,EAAMpH,EAAUD,EAAOkG,gBAC7BmB,EAAKsG,KAAO1N,EAAUD,EAAOiD,KAAOhD,EAAUD,EAAOiD,KACjDhD,EAAUD,EAAOkG,eAAeyH,KAExC,IAAIC,EACJ,IAAKE,EAGA,CACDF,EAAYlK,EAAc,KAAOyC,UAAWvB,WAASnC,KAAO,IAAMmC,WAAS3B,KAC3E,IAAI8K,GAAgBrK,EAAc,OAASyC,UAAWvB,WAAStB,YAC3DgK,IAAiBA,EAAc9M,QAC/B4L,SAAOkB,EAAeS,GAE1BA,EAAc7L,YAAYnB,SAAS8M,eAAepL,IAClD2J,UAAQ2B,GAAgBH,OATxBA,GAAYlK,EAAc,KAAOyC,UAAWvB,WAASnC,KAAO,IAAMmC,WAAS3B,IAAK/B,UAAWuB,GAY/F,OADAmE,GAAagH,EAAWvG,GACjBuG,EAIX,QAASvI,GAAW3B,EAAe6B,EAAMtF,EAEzCD,EAAQmG,EAAWvC,EAASE,GACxB,GAGIkK,GACAT,EACA5J,EALAI,EAASC,YAAWC,EAAwBL,GAC5CM,EAAiBF,YAAWG,EAAuBJ,EAAOG,gBAC1DzB,EAAO8C,CAIS,iBAATA,IAAqC,gBAATA,KACnC5B,EAAa4B,EACb9C,EAAOxC,EAAUD,EAAOyC,OAAS,GAEjCuL,EAAO9N,oBAAkBD,EAAe,KAAMA,EAAUD,EAAO+E,IAAM9E,EAAe,IAEpFsN,KAAShI,EAAKM,eAAe,cAAeN,EAAKpF,WAGjDyD,GAAWA,EAAQqK,sBAEnBxL,EAAOA,EAEX,IAAIJ,GAAKqB,EAAc,MACnByC,YAAsB,IAAVoH,EAAiB3I,WAASrC,MAAQqC,WAASvC,IAAM,KAAOnC,oBAAkBiG,GAAa,GAAKA,GACxGC,MAAyC,KAAjClC,EAAeuJ,eAAoD,KAA5BvJ,EAAewJ,UACxD/B,MAAiB,IAAV4B,EAAiBrJ,EAAeuJ,cAAgBvJ,EAAewJ,cAQhF,KANgC,IAA3BxN,oBAAkB8N,GACnB3L,EAAGuE,aAAa,WAAYoH,GAG5B3L,EAAGuE,aAAa,WAAY5B,KAE5BuI,GAAS3J,GAAWA,EAAQ0I,eAIxBJ,GAFAN,EAAiB/K,EAAgB+C,EAAQ0I,gBAER/G,EAAMzB,EAAmB,gBAAiBC,EAAOiI,kBAAmBjI,EAAOoI,iBAAkB,KAAM9J,KAEpI+J,SAAOF,EAAiB7J,OAG3B,KAAKkL,GAAS3J,GAAWA,EAAQ9C,SAAU,CAE5C,GAAI8K,GAAiB/K,EAAgB+C,EAAQ9C,UAEzCoL,EAAkBN,EAAerG,EAAMzB,EAAmB,WAAYC,EAAOkI,aAAclI,EAAOoI,iBAAkB,KAAM9J,EAC1H6J,IACAE,SAAOF,EAAiB7J,OAG3B,CACD,GAAI6L,GAAWxK,EAAc,OACzByC,UAAWvB,WAAS9B,YACpBsD,MAAuC,KAA/BlC,EAAeiK,aAAuBxC,KAAMzH,EAAeiK,iBAEvE,IAAIxK,IAAe1D,EAAUD,EAAOiD,MAAShD,EAAUD,EAAOkG,gBAC1DjG,EAAUD,EAAOkG,eAAeyH,MAChCO,EAAShM,YAAY0L,EAAUlK,EAAeC,EAAY3D,EAAQyC,EAAM,KAAMsB,EAAOkC,oBAEpF,CACD,GAAIgC,GAAUvE,EAAc,QACxByC,UAAWvB,WAASnC,KACpB2D,MAAoC,KAA5BlC,EAAekK,UAAoBzC,KAAMzH,EAAekK,cAEhExK,IAAWA,EAAQqK,oBACnBhG,EAAQ6D,UAAYrJ,EAGpBwF,EAAQ/G,UAAYuB,EAExByL,EAAShM,YAAY+F,GAEzB5F,EAAGH,YAAYgM,GAEnB,MAAO7L,GAWX,QAASoC,GAAWf,EAAe2K,EAAWlI,EAAWvC,GACrD,GAAIG,GAASC,YAAWC,EAAwBL,GAC5CM,EAAiBF,YAAWG,EAAuBJ,EAAOG,eAC9DU,YAAWC,EAAed,EAAOe,WACjC,IAAI4G,GAAYhI,EAAc,MAC1ByC,UAAWvB,WAAStC,GAAK,KAAOpC,oBAAkBiG,GAAa,GAAKA,GACpEC,MAAoC,KAA5BlC,EAAeoK,UAAoB3C,KAAMzH,EAAeoK,cAGpE,OADAlC,UAAOiC,EAAW3C,GACXA,EAYX,QAAS6C,GAAa7K,EAAe2K,EAAWlI,EAAWvC,GACvD,GAAIG,GAASC,YAAWC,EAAwBL,EAQhD,OAPAgB,YAAWC,EAAed,EAAOe,aAEiB,SAA9Bf,EAAOqJ,mBAAgC5G,UAAU4F,WACtD1I,EAAc,OACrByC,UAAW,WAAapC,EAAOsJ,gBAAkB,KAC5CnN,oBAAkBiG,GAAa,GAAKA,MACxCkI,EAAUrN,cAAc,IAAM4D,WAAS9B,cACzCuL,EAt5BX7K,EAASiC,qBACLV,GAAI,KACJtC,KAAM,OACNQ,IAAK,MACLvC,MAAO,QACP8N,UAAW,YACXxH,QAAS,UACTnE,SAAU,WACVD,SAAU,WACV0D,QAAS,UACTV,MAAO,QACPqB,UAAW,YACXgG,YAAa,cACbnG,QAAS,UACTC,eAAgB,iBAChBb,cAAe,gBACfsB,gBAAiB,kBACjBJ,SAAU,WACV2B,QAAS,KACTY,OAAQ,KAEZ,IAAIxF,IACAnB,MAAO,EACPsL,SAAU,eACVZ,SAAU,eACVD,cAAe,QACfW,SAAU,YACVD,YAAa,gBAEblK,GACA+B,cAAc,EACdK,UAAU,EACV4H,qBAAqB,EACrBd,gBAAgB,EAChBnN,OAAQwD,EAASiC,oBACjBvB,eAAgBC,EAChB2D,UAAW,GACXvB,UAAW,GACXqB,iBAAiB,EACjBe,UAAW,OACX7H,SAAU,KACVwL,cAAe,KACfmC,eAAgB,KAChBpB,gBAAiB,qBACjBvI,WAAY,OACZsI,mBAAoB,QACpBnH,eAAe,EA8BnBzC,GAASC,WAAaA,EAuBtBD,EAASe,oBAAsBA,EAyD/Bf,EAASkB,wBAA0BA,EA4JnClB,EAASgC,uBAAyBA,EAyBlChC,EAASgB,mBAAqBA,EA6B9BhB,EAASuE,aAAeA,EAiBxBvE,EAASgF,QAAUA,EAqCnBhF,EAASkF,gBAAkBA,EAyB3BlF,EAAS0F,WAAaA,EAatB1F,EAASyF,cAAgBA,EAqDzBzF,EAAS0G,sBAAwBA,EA0HjC1G,EAASiI,sBAAwBA,EAkCjCjI,EAAS6I,oBAAsBA,EAM/B7I,EAASwB,WAAaA,EAkOtBxB,EAASiB,WAAaA,EAqBtBjB,EAAS+K,aAAeA,GACzB/K,aAAaA,eE77BhB,IAAIkL,GAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBrO,OAAOwO,iBAChBC,uBAA2BzG,QAAS,SAAUsG,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIG,KAAKH,GAAOA,EAAEhJ,eAAemJ,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASI,KAAOC,KAAKC,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAErG,UAAkB,OAANsG,EAAavO,OAAO8O,OAAOP,IAAMI,EAAG1G,UAAYsG,EAAEtG,UAAW,GAAI0G,QAGnFI,EAA0C,SAAUC,EAAYrN,EAAQsH,EAAKgG,GAC7E,GAA2HX,GAAvHY,EAAIC,UAAUjP,OAAQkP,EAAIF,EAAI,EAAIvN,EAAkB,OAATsN,EAAgBA,EAAOjP,OAAOqP,yBAAyB1N,EAAQsH,GAAOgG,CACrH,IAAuB,gBAAZK,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrN,EAAQsH,EAAKgG,OACpH,KAAK,GAAItK,GAAIqK,EAAW9O,OAAS,EAAGyE,GAAK,EAAGA,KAAS2J,EAAIU,EAAWrK,MAAIyK,GAAKF,EAAI,EAAIZ,EAAEc,GAAKF,EAAI,EAAIZ,EAAE3M,EAAQsH,EAAKmG,GAAKd,EAAE3M,EAAQsH,KAASmG,EAChJ,OAAOF,GAAI,GAAKE,GAAKpP,OAAOwP,eAAe7N,EAAQsH,EAAKmG,GAAIA,GAY5DK,GACAC,QACAC,WAAc,gBAAiB,eAAgB,cAAe,gBAC9DC,WAAc,cAAe,iBAAkB,gBAAiB,cAChEC,MAAS,UAAW,cAAe,aAAc,UACjDC,MAAS,UAAW,UAAW,SAAU,WAEzCC,GACAL,QACAC,WAAc,eAAgB,gBAAiB,eAAgB,eAC/DC,WAAc,iBAAkB,cAAe,aAAc,iBAC7DC,MAAS,cAAe,UAAW,SAAU,cAC7CC,MAAS,UAAW,UAAW,SAAU,WAGlCE,GACPC,KAAM,aACNC,MAAO,UACP5N,SAAU,WACV6N,QAAS,YACTC,WAAY,gBACZC,SAAU,cACVC,SAAU,cACV9N,YAAa,iBACb+N,aAAc,cACdC,cAAe,oBACf/N,SAAU,cACVgO,KAAM,SACNrE,OAAQ,gBACRsE,WAAY,eACZC,mBAAoB,wBACpBxO,KAAM,SACNyO,QAAS,aACTC,QAAS,YACT3O,KAAM,UACN4O,SAAU,cACVC,gBAAiB,qBACjBC,SAAU,aACV3O,QAAS,UACT4O,UAAW,cACXC,aAAc,UACdC,cAAe,mBACfC,aAAc,kBACdC,iBAAkB,sBAClBC,cAAe,cACfC,wBAAyB,2BASzBC,EAA+B,SAAUC,GAEzC,QAASD,KACL,MAAkB,QAAXC,GAAmBA,EAAOC,MAAM9C,KAAMO,YAAcP,KAsC/D,MAxCAR,GAAUoD,EAAeC,GAIzB1C,GACI4C,WAAS,OACVH,EAAcvJ,UAAW,SAAM,IAClC8G,GACI4C,WAAS,SACVH,EAAcvJ,UAAW,WAAQ,IACpC8G,GACI4C,WAAS,cACVH,EAAcvJ,UAAW,gBAAa,IACzC8G,GACI4C,WAAS,cACVH,EAAcvJ,UAAW,gBAAa,IACzC8G,GACI4C,WAAS,YACVH,EAAcvJ,UAAW,cAAW,IACvC8G,GACI4C,WAAS,YACVH,EAAcvJ,UAAW,cAAW,IACvC8G,GACI4C,WAAS,UACVH,EAAcvJ,UAAW,YAAS,IACrC8G,GACI4C,WAAS,YACVH,EAAcvJ,UAAW,cAAW,IACvC8G,GACI4C,WAAS,YACVH,EAAcvJ,UAAW,cAAW,IACvC8G,GACI4C,WAAS,SACVH,EAAcvJ,UAAW,aAAU,IACtC8G,GACI4C,WAAS,mBACVH,EAAcvJ,UAAW,qBAAkB,IAC9C8G,GACI4C,WAAS,cACVH,EAAcvJ,UAAW,gBAAa,IAClCuJ,GACTI,iBAkBEC,EAA0B,SAAUJ,GASpC,QAASI,GAASvO,EAASqE,GACvB,GAAImK,GAAQL,EAAO/P,KAAKkN,KAAMtL,EAASqE,IAAYiH,IAKnD,OAJAkD,GAAMC,yBACND,EAAME,eACNF,EAAMG,gBACNH,EAAMI,iBACCJ,EA02DX,MAx3DA1D,GAAUyD,EAAUJ,GAuBpBI,EAAS5J,UAAUkK,kBAAoB,SAAUC,EAASC,GACtD,IAAK,GAAIvS,GAAK,EAAGC,EAAKC,OAAOC,KAAKmS,GAAUtS,EAAKC,EAAGG,OAAQJ,IAExD,OADWC,EAAGD,IAEV,IAAK,iBACD8O,KAAK0D,kBACL,MACJ,KAAK,WACD1D,KAAK2D,YAAYF,EAAQ/N,SACzB,MACJ,KAAK,SACDsK,KAAK4D,WACL,MACJ,KAAK,QACL,IAAK,SACD5D,KAAK6D,SACL,MACJ,KAAK,YACD7D,KAAK8D,cACL,MACJ,KAAK,SAED9D,KAAK+D,eAAejT,OAASkP,KAAKlP,OAAOkT,WACrChE,KAAKiE,qBACLjE,KAAKkE,qBAAqBC,2BAG1BnE,KAAKoE,UAET,MACJ,KAAK,cACIpE,KAAKqE,WAAW/S,QACjB0O,KAAKxC,OAAOwC,KAAKsE,aAAa,EAAO,SAEzC,MACJ,KAAK,QACGtE,KAAKiE,qBACLjE,KAAKkE,qBAAqBC,2BAG1BnE,KAAKoE,UAET,MACJ,KAAK,aACDpE,KAAKxC,OAAOwC,KAAKsE,aAAa,EAAO,SACrC,MACJ,KAAK,uBACItT,oBAAkBgP,KAAKuE,mBACxBC,SAAOxE,KAAKuE,kBAEhBvE,KAAKyE,SACL,MACJ,KAAK,eACL,IAAK,mBACGzE,KAAKiE,qBACLjE,KAAKkE,qBAAqBC,2BAG1BnE,KAAK0E,aAET,MACJ,KAAK,aACG1E,KAAKiE,qBACLjE,KAAKkE,qBAAqBC,2BAG1BnE,KAAKoE,UAET,MACJ,KAAK,YACL,IAAK,WACIpE,KAAKiE,sBACNjE,KAAKyE,SAET,MACJ,KAAK,WACGzE,KAAKiE,qBACLjE,KAAKkE,qBAAqBC,4BAG1BnE,KAAK+D,eAAe5M,SAAW6I,KAAK7I,SACpC6I,KAAK2E,UAAY3E,KAAK4E,WACtB5E,KAAK6E,sBASzB5B,EAAS5J,UAAUqK,iBAAmB,WAC9BtS,OAAOC,KAAK2O,KAAKnI,gBAAgBvG,QACjC8K,aAAW4D,KAAKjH,QAASiH,KAAKnI,iBAGtCoL,EAAS5J,UAAUsK,YAAc,SAAUmB,GACnC9E,KAAKtK,UACLiD,YAAUqH,KAAKjH,SAAUiH,KAAKtK,SAASyG,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,MAEjFF,GACAG,eAAajF,KAAKjH,SAAU+L,EAAY3I,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,OAG1F/B,EAAS5J,UAAUwK,QAAU,WACzB7D,KAAKjH,QAAQf,MAAMkN,OAASC,aAAWnF,KAAKkF,QAC5ClF,KAAKjH,QAAQf,MAAMoN,MAAQD,aAAWnF,KAAKoF,OAC3CpF,KAAKqF,UAAWrF,KAAKjH,QAAQuM,cAEjCrC,EAAS5J,UAAUuK,UAAY,WAC3B5D,KAAKuF,cAAcvF,KAAKjH,QAASiH,KAAKwF,SAE1CvC,EAAS5J,UAAUyK,aAAe,WAC1B9D,KAAKyF,UACLzF,KAAKjH,QAAQvB,UAAUC,IAAI,SAG3BuI,KAAKjH,QAAQvB,UAAU8D,OAAO,UAGtC2H,EAAS5J,UAAUkM,cAAgB,SAAUxM,EAAS2M,GAC9CA,EACA3M,EAAQvB,UAAU8D,OAAO8F,EAAWY,SAGpCjJ,EAAQvB,UAAUC,IAAI2J,EAAWY,UAIzCiB,EAAS5J,UAAUmE,OAAS,SAAUjK,EAAMoS,EAAUC,GAClD,OAAuBnU,KAAnBuO,KAAK6F,WAA2B7F,KAAK8F,WAAY,CAC7C9F,KAAKjB,qBACLiB,KAAK+F,eAAgBzB,YAAa0B,qBAAmBC,SAASjG,KAAKsE,eAAgB,GAEvFtE,KAAK6F,UAAY7F,KAAKxL,cAAc,OAASyC,UAAWmK,EAAW5D,QACnE,IAAI0I,GAAiBlG,KAAKxL,cAAc,QAAUyC,UAAWmK,EAAWU,WAAY9P,UAAWgO,KAAKsE,cAChG6B,EAAUnG,KAAKxL,cAAc,OAASyC,UAAWmK,EAAW7N,KAAMvB,UAAWkU,EAAeE,YAC5FC,EAAgBrG,KAAKxL,cAAc,OACnCyC,UAAWmK,EAAW9N,KAAO,IAAM8N,EAAWc,SAAW,cACzDhL,OAASc,MAAO,kBAIpB,IAFAgI,KAAK6F,UAAU7S,YAAYqT,GAC3BrG,KAAK6F,UAAU7S,YAAYmT,GACvBnG,KAAKT,eAAgB,CAErB,GAAI7C,GAAiB3K,UAAQiO,KAAKT,gBAC9B+G,EAAoBtG,KAAKxL,cAAc,OAASyC,UAAWmK,EAAWW,qBAEtE/E,EAAkBN,KAAmBsD,KAAM4F,EAAM5F,KAAKuG,2BAA4B,KAAM,KAAMvG,KAAK6F,UACnG7I,IACAE,SAAOF,EAAiBsJ,GAE5BpJ,UAAQoJ,GAAoBtG,KAAK6F,WAE7B7F,KAAKwG,SACLxG,KAAKyG,uBAGTzG,KAAKT,gBAAkBS,KAAKsE,aAC5B6B,EAAQ3O,UAAUC,IAAI,UAE1BuI,KAAKjH,QAAQvB,UAAUC,IAAI,gBAC3BH,WAAS0I,KAAK6F,WAAY7F,KAAKjH,aAE9B,IAAIiH,KAAK6F,UACV,GAAI7F,KAAK8F,WAAY,CACjB9F,KAAK6F,UAAU7N,MAAMC,QAAU,EAC/B,IAAIkO,GAAUnG,KAAK6F,UAAU/T,cAAc,IAAMsP,EAAWU,YACxDuE,EAAgBrG,KAAK6F,UAAU/T,cAAc,IAAMsP,EAAWc,SAC9DlC,MAAKjB,sBACLxL,EAAOyS,qBAAmBC,SAAS1S,IAEvC4S,EAAQnU,UAAYuB,EAChByM,KAAKT,gBAAkBoG,IACvBQ,EAAQO,cAAclP,UAAU8D,OAAO,UACvC0E,KAAK6F,UAAU/T,cAAc,IAAMsP,EAAWW,oBAAoBvK,UAAUC,IAAI,kBAEhFuI,KAAKT,iBAAmBoG,IACxBQ,EAAQO,cAAclP,UAAUC,IAAI,UACpCuI,KAAK6F,UAAU/T,cAAc,IAAMsP,EAAWW,oBAAoBvK,UAAU8D,OAAO,iBACnF0E,KAAK6F,UAAU/T,cAAc,IAAMsP,EAAWW,oBAAoBvK,UAAUC,IAAI,WAGhF4O,EAAcrO,MAAMC,SADP,IAAb0N,EAC8B,GAGA,WAIlC3F,MAAK6F,UAAU7N,MAAMC,QAAU,QAK3CgL,EAAS5J,UAAUsN,WAAa,SAAUC,EAAUC,EAAQC,GACxD,GAAI5D,GAAQlD,IACZ,IAAI4G,GAAYC,EAAQ,CACpB,GAAIE,GAASH,EAAS5O,MAAMgP,SACxBC,EAA8C,WAAhCjH,KAAKjH,QAAQf,MAAMkP,SAAyBlH,KAAKjH,QAAQf,MAAMkP,SAAW,EAC5FN,GAAS5O,MAAMgP,SAAW,WAC1BJ,EAASpP,UAAUC,IAAI,SACvB,IAAI0P,OAAO,GACPC,EAAWpH,KAAKqH,UAAUD,QAC9B,IAAIpH,KAAKqH,UAAUC,OACfH,EAAQnH,KAAKyF,UAAYtE,EAAiBnB,KAAKqH,UAAUC,QAAUzG,EAAcb,KAAKqH,UAAUC,YAE/F,CAEDH,EAAOtG,EAAuB,UAC9BiG,EAAU9G,KAAKyF,UACf2B,EAAW,EAEfpH,KAAKjH,QAAQf,MAAMkP,SAAW,SAC9BlH,KAAKuH,OAAOC,QAAQZ,GAChBa,MAAmB,IAAZX,EAAmBK,EAAK,GAAKA,EAAK,GACzCC,SAAUA,EACVM,eAAgB1H,KAAKqH,UAAUM,OAE/BC,IAAK,SAAUC,GACXjB,EAAS5O,MAAMC,QAAU,OACzBiL,EAAMnK,QAAQf,MAAMkP,SAAWD,EAC/BL,EAAS5O,MAAMgP,SAAWD,EAC1BH,EAASpP,UAAU8D,OAAO,aAGlCuL,EAAO7O,MAAMC,QAAU,GACvB+H,KAAKuH,OAAOC,QAAQX,GAChBY,MAAmB,IAAZX,EAAmBK,EAAK,GAAKA,EAAK,GACzCC,SAAUA,EACVM,eAAgB1H,KAAKqH,UAAUM,OAC/BC,IAAK,WACD1E,EAAM4E,QAAQ,qBAGtB9H,KAAK+H,MAAQlB,IAGrB5D,EAAS5J,UAAU2O,UAAY,WAC3B,GAAIhI,KAAKpO,SACL,IACQC,SAASwJ,iBAAiB2E,KAAKpO,UAAUN,QACzC0O,KAAK+F,eAAgBnU,SAAUC,SAASC,cAAckO,KAAKpO,UAAUI,UAAUC,SAAU,GAGjG,MAAOC,GACHH,UAAQiO,KAAKpO,UAGrBoO,KAAK+D,gBACDnS,SAAUoO,KAAKpO,SACf2N,eAAgBS,KAAKT,eACrBnC,cAAe4C,KAAK5C,cAAea,gBAAgB,EAAMrF,UAAW,GACpE5D,gBACIwJ,SAAU,SAAUY,SAAU,eAAgBF,SAAU,GACxDX,cAAe,QAASU,YAAa,gBAGzCnO,OAASkP,KAAKlP,OAAkB,WAChC2I,UAAWuG,KAAKvG,UAChBtC,SAAU6I,KAAK7I,SACff,YAAa4J,KAAKiI,eAAeC,KAAKlI,MACtCjD,WAAiBiD,KAAKjH,QAAQlD,GAjWT,WAkWrBiH,gBAAsBkD,KAAKjH,QAAQlD,GAjWT,gBAkW1BkJ,oBAAqBiB,KAAKjB,qBAE9BiB,KAAKmI,kBAETlF,EAAS5J,UAAU8O,eAAiB,WAChCnI,KAAKqE,cACLrE,KAAKoI,kBACLpI,KAAK2E,aACL3E,KAAKqI,qBACLrI,KAAKsI,cAAe,EACpBtI,KAAKuI,gBACLvI,KAAKwI,cACLxI,KAAKyI,qBAA4BzI,KAAKjH,QAAQlD,GA/WrB,WAgXzBmK,KAAK0I,0BAAiC1I,KAAKjH,QAAQlD,GA/WrB,gBAgX9BmK,KAAKuG,2BAAkCvG,KAAKjH,QAAQlD,GA/WrB,iBAgX/BmK,KAAKuH,OAAS,GAAIoB,aAAU3I,KAAKoI,gBACjCpI,KAAK4I,cAAc5I,KAAK+H,OACxB/H,KAAK4I,cAAc5I,KAAKxD,WACxBwD,KAAK4I,cAAc5I,KAAK6F,WACxB7F,KAAK4I,cAAc5I,KAAKuE,kBACxBvE,KAAK+H,MAAQ/H,KAAKxD,UAAYwD,KAAKrD,aAAeqD,KAAK6F,UAAY7F,KAAKuE,qBAAmB9S,IAE/FwR,EAAS5J,UAAU4O,eAAiB,SAAUY,GAI1C,GAHIA,EAAKxS,KAAKmB,UAAU+B,SAAS6H,EAAWvN,YACxCmM,KAAKsI,cAAe,GAEpBtI,KAAKlJ,cAAgBkJ,KAAK8I,UAAUD,EAAKxS,MAAO,CAChD,GAAIG,OAAkB,IAGtBA,EAAkBuS,iBAAe/I,KAAKxL,eAAe,GACjDf,SAAS,EAAOgS,UAAWzF,KAAKyF,UAChC/P,SAAU0L,EAAWqB,oBAET/K,aAAa,OAAQ,WACrC,IAAIsR,GAAiBxS,EAAgB1E,cAAc,IAAMsP,EAAWkB,aACpEuG,GAAKxS,KAAKmB,UAAUC,IAAI2J,EAAWsB,eACnCmG,EAAKxS,KAAKkB,kBAAkBC,UAAUC,IAAI2J,EAAWgB,UACnB,gBAAvBpC,MAAKvL,WAAW,IAAiD,gBAAvBuL,MAAKvL,WAAW,GACrD7D,EAAeiY,EAAK5S,QAAS+J,KAAK+D,eAAejT,QAC/CkP,KAAK+D,eAAejT,OAAOwO,YACrCU,KAAKiJ,gBAAgBJ,EAAMrS,GAGM,gBAAvBwJ,MAAKvL,WAAW,IACA,gBAAvBuL,MAAKvL,WAAW,KAA8D,IAA1CuL,KAAKuI,aAAajP,QAAQuP,EAAKtV,OAC1EyM,KAAKiJ,gBAAgBJ,EAAMrS,GAE/BA,EAAgBkB,aAAa,eAAgBsR,EAAexR,UAAU+B,SAAS6H,EAAW3N,SAAW,OAAS,SAChF,SAA1BuM,KAAKkJ,kBACL1S,EAAgBgB,UAAUC,IAAI2J,EAAWoB,cACzCqG,EAAKxS,KAAKkB,kBAAkBC,UAAUC,IAAI2J,EAAWoB,cACrDqG,EAAKxS,KAAKkB,kBAAkBhF,aAAaiE,EAAiBqS,EAAKxS,KAAKkB,kBAAkBkE,WAAW,MAGjGjF,EAAgBgB,UAAUC,IAAI2J,EAAWmB,eACzCsG,EAAKxS,KAAKkB,kBAAkBC,UAAUC,IAAI2J,EAAWmB,eACrDsG,EAAKxS,KAAKkB,kBAAkBvE,YAAYwD,IAE5CwJ,KAAKqI,kBAAkB1V,KAAKkW,EAAKxS,MACH,SAA1B2J,KAAKkJ,iBACLlJ,KAAKmJ,gBAAkBN,EAAKxS,KAAKkB,kBAAkB3E,SAAS,GAG5DoN,KAAKmJ,gBAAkBN,EAAKxS,KAAKkB,kBAAkB6R,mBAI/DnG,EAAS5J,UAAU4P,gBAAkB,SAAUJ,EAAMrS,GACjDqS,EAAKxS,KAAKmB,UAAUC,IAAI2J,EAAW1N,UACnCmV,EAAKxS,KAAKqB,aAAa,gBAAiB,QACxClB,EAAgB1E,cAAc,IAAMsP,EAAWkB,cAAc9K,UAAUC,IAAI2J,EAAW3N,SACtF+C,EAAgBkB,aAAa,eAAgB,SAOjDuL,EAAS5J,UAAUgQ,UAAY,SAAUhT,GACrC2J,KAAKsJ,gBAAgBjT,GAAM,IAE/B4M,EAAS5J,UAAUiQ,gBAAkB,SAAUjT,EAAM5C,GACjD,GAAIuM,KAAKlJ,aAAc,CACnB,GAAIqI,GAAY9I,CAIhB,IAHIA,YAAgBjF,SAAUiF,EAAK4J,cAAgBsJ,gBAC/CpK,EAAYa,KAAKwJ,sBAAsBnT,KAEtCrF,oBAAkBmO,GAAY,CAC/B,GAAImD,GAAenD,EAAUrN,cAAc,IAAMsP,EAAWkB,eAC5C,IAAZ7O,EACA0L,EAAU3H,UAAUC,IAAI2J,EAAW1N,UAGnCyL,EAAU3H,UAAU8D,OAAO8F,EAAW1N,UAE1CyL,EAAUzH,aAAa,gBAAiBjE,EAAU,OAAS,UAC3C,IAAZA,EACA6O,EAAa9K,UAAUC,IAAI2J,EAAW3N,SAGtC6O,EAAa9K,UAAU8D,OAAO8F,EAAW3N,SAE7C6O,EAAaoE,cAAchP,aAAa,eAAgBjE,EAAU,OAAS,SAE/EuM,KAAKyJ,oBAAoBtK,KAQjC8D,EAAS5J,UAAUqQ,YAAc,SAAUrT,GACvC2J,KAAKsJ,gBAAgBjT,GAAM,IAK/B4M,EAAS5J,UAAUsQ,cAAgB,WAC/B3J,KAAK4J,oBAAmB,IAK5B3G,EAAS5J,UAAUwQ,gBAAkB,WACjC7J,KAAK4J,oBAAmB,IAE5B3G,EAAS5J,UAAUuQ,mBAAqB,SAAUnW,GAC9C,GAAIuM,KAAKlJ,aAAc,CACnB,IAAK,GAAIf,GAAI,EAAGA,EAAIiK,KAAKrD,aAAarL,OAAQyE,IAAK,CAC/C,GAAI+T,GAAY9J,KAAKrD,aAAa5G,GAAGjE,cAAc,IAAMsP,EAAWkB,aAChEwH,KACIrW,EACKqW,EAAUtS,UAAU+B,SAAS6H,EAAW3N,UACzCuM,KAAKqJ,UAAUrJ,KAAKrD,aAAa5G,IAIjC+T,EAAUtS,UAAU+B,SAAS6H,EAAW3N,UACxCuM,KAAK0J,YAAY1J,KAAKrD,aAAa5G,KAK/CiK,KAAKiE,sBACLjE,KAAKkE,qBAAqB6F,YAAYtW,KAIlDwP,EAAS5J,UAAUqL,YAAc,WAC7B,GAAI1E,KAAKlJ,aAML,IAAK,GALD6F,GAAevD,MAAMC,UAAUxG,MAAMC,KAAKkN,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWK,WACzFoH,GACAxS,SAAM5E,GAAWwE,YAASxE,GAAWgD,eAAYhD,GAAWX,WAAQW,GACpEiD,YAASjD,GAAW8B,KAAM,IAErBwC,EAAI,EAAGA,EAAI4G,EAAarL,OAAQyE,IAAK,CAC1C,GAAIgD,GAAU4D,EAAa5G,EAC3B8S,GAAKxS,KAAO0C,EAEZ8P,EAAK5S,QAAU+J,KAAKgK,YAAYjR,GAC5BA,EAAQjH,cAAc,IAAMsP,EAAWe,kBACvCnC,KAAK4I,cAAc7P,EAAQjH,cAAc,IAAMsP,EAAWe,kBAE9DnC,KAAKiI,eAAeY,GAChBA,EAAKxS,KAAKmB,UAAU+B,SAAS6H,EAAW1N,WACxCsM,KAAKiJ,gBAAgBJ,EAAMA,EAAKxS,KAAKvE,cAAc,IAAMsP,EAAWe,sBAI3E,CAED,IAAK,GADDxF,GAAevD,MAAMC,UAAUxG,MAAMC,KAAKkN,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWsB,gBACpF3M,EAAI,EAAGA,EAAI4G,EAAarL,OAAQyE,KACjCgD,EAAU4D,EAAa5G,IACnByB,UAAU8D,OAAO8F,EAAW1N,UACpCqF,EAAQxB,kBAAkBC,UAAU8D,OAAO8F,EAAWgB,UACtDpC,KAAK4I,cAAc7P,EAAQjH,cAAc,IAAMsP,EAAWe,iBAE1DnC,MAAKiK,eACLjK,KAAKiK,cAAc5T,KAAKmB,UAAUC,IAAI2J,EAAW1N,YAO7DuP,EAAS5J,UAAU6Q,kBAAoB,WAC/BlK,KAAKkE,sBACLlE,KAAKkE,qBAAqBgG,qBAGlCjH,EAAS5J,UAAU8Q,aAAe,SAAUjY,GACxC,GAEIkY,GAFArX,EAASb,EAAEa,OACXyE,EAAYzE,EAAOyE,SAEvB,IAAIA,EAAU+B,SAAS6H,EAAWc,WAAa1K,EAAU+B,SAAS6H,EAAWU,YACrE9B,KAAKlJ,cAAgBkJ,KAAKqE,WAAWrE,KAAKqE,WAAW/S,OAAS,IAC9D0O,KAAK6J,kBAET7J,KAAKqK,WAEJ,CACD,GAAIlX,GAAKmX,UAAQvX,EAAOwX,WAAY,IAAMnJ,EAAWK,SAKrD,IAJW,OAAPtO,IACAA,EAAKJ,GAETiN,KAAKwK,cACDxK,KAAKwF,QAAUxF,KAAKlJ,cAAgBkJ,KAAK8I,UAAU3V,GACnD,GAAIjB,EAAEa,OAAOyE,UAAU+B,SAAS6H,EAAWkB,cAAe,CAEtD,GADAnP,EAAGqE,UAAUC,IAAI2J,EAAWG,SACxBvQ,oBAAkBmC,EAAGrB,cAAc,IAAMsP,EAAW3N,UAAW,CAC/D,GAAIoV,IACA5S,YAASxE,GAAWgD,eAAYhD,GAAWX,WAAQW,GAAWiD,YAASjD,GACvE8B,SAAM9B,GAAW4E,KAAMlD,EAE3B6M,MAAKiJ,gBAAgBJ,EAAMA,EAAKxS,KAAKvE,cAAc,IAAMsP,EAAWe,sBAGpEnC,MAAK0J,YAAYvW,GACjBA,EAAGqE,UAAUC,IAAI2J,EAAWG,QAKhC,IAHIvB,KAAKiE,sBACLjE,KAAKkE,qBAAqBuG,cAActX,EAAIjB,GAE5CA,EAAG,CACH,GAAIwY,GAAY1K,KAAK2K,gBAAgBxX,EAAIjB,GACrC4X,EAAY3W,EAAGrB,cAAc,IAAMsP,EAAWkB,aAClDjK,SAAMqS,GAAapL,UAAWwK,EAAUtS,UAAU+B,SAAS6H,EAAW3N,WACtEuM,KAAK8H,QAAQ,SAAU4C,QAGtBvX,GAAGqE,UAAU+B,SAAS6H,EAAWvN,WACtCmM,KAAK4K,cACL5K,KAAK6K,eACL7K,KAAK6K,aAAa1X,GAClB6M,KAAK8K,YAAY3X,EAAIjB,GACrBiB,EAAGqE,UAAU8D,OAAO8F,EAAW1N,WAG/BsM,KAAKyK,cAActX,EAAIjB,OAI3B8N,MAAK8K,YAAY3X,EAAIjB,EAEzBkY,GAAiBE,UAAQpY,EAAEa,OAAQ,MAC9B/B,oBAAkBoZ,IACfA,EAAe5S,UAAU+B,SAAS,iBACjCrH,EAAEa,OAAO2T,cAAclP,UAAU+B,SAAS,wBAC3C6Q,EAAe5S,UAAUC,IAAI2J,EAAWY,WAKxDiB,EAAS5J,UAAUuP,cAAgB,SAAU7P,GACzC,MAAOA,IAAWA,EAAQwR,YAAcxR,EAAQwR,WAAWQ,YAAYhS,IAE3EkK,EAAS5J,UAAU2R,aAAe,SAAU9Y,GACxC,GAAI+Y,GAAQX,UAAQpY,EAAEa,OAAOwX,WAAY,IAAMnJ,EAAWK,SAC1DzB,MAAKkL,WAAWD,IAGpBhI,EAAS5J,UAAU8R,aAAe,SAAUjZ,GACxC8N,KAAK4K,eAET3H,EAAS5J,UAAU+R,eAAiB,SAAUlZ,EAAG0V,GAC7C,GAAIxW,OAAOC,KAAK2O,KAAKvL,YAAYnD,QAAU0O,KAAK+H,MAAO,CAC/C/H,KAAKiK,eACJjK,KAAKiK,mBAAoBvS,aAAa,gBAAiB,QAE5D,IAAIvE,GAAK6M,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAClD4J,EAAiBrL,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,UAC3DvB,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAW1N,SAC1C2X,KACAA,EAAe7T,UAAU8D,OAAO8F,EAAWG,SACtCvB,KAAKlJ,cACNuU,EAAe7T,UAAU8D,OAAO8F,EAAW1N,UAGnD,IAAIhB,GAASkV,EAAUzU,EAAG7B,OAAS,EAAhB,CACf6B,GAAGT,GAAO8E,UAAU+B,SAAS6H,EAAWvN,WAAamM,KAAKlJ,aAC1D3D,EAAGT,GAAO8E,UAAUC,IAAI2J,EAAWG,SAGnCvB,KAAK8K,YAAY3X,EAAGT,GAAQR,GAE5BiB,EAAGT,GACHsN,KAAKjH,QAAQrB,aAAa,wBAAyBvE,EAAGT,GAAOmD,GAAG8B,YAGhEqI,KAAKjH,QAAQuS,gBAAgB,2BAIzCrI,EAAS5J,UAAUkS,eAAiB,SAAUrZ,EAAGsZ,GAC7C,GAAIvS,GACA9F,CA+BJ,QA9BgBnC,oBAAkBgP,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWvN,YAC5DmM,KAAKlJ,cACjB3D,EAAK6M,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,UAAYvB,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAW1N,UACrGuF,EAAY3E,WAASuE,aAAamH,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAAWtO,EAAIqY,GACzFxa,oBAAkBiI,KACf9F,IACAA,EAAGqE,UAAU8D,OAAO8F,EAAWG,SAC1BvB,KAAKlJ,cACN3D,EAAGqE,UAAU8D,OAAO8F,EAAW1N,WAGnCuF,EAAUzB,UAAU+B,SAAS6H,EAAWvN,WAAamM,KAAKlJ,aAC1DmC,EAAUzB,UAAUC,IAAI2J,EAAWG,SAGnCvB,KAAK8K,YAAY7R,EAAW/G,MAKpCiB,EAAK6M,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAW1N,UAC/CuF,EAAY3E,WAASuE,aAAamH,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAAWtO,EAAIqY,GAC9FxL,KAAK8K,YAAY7R,EAAW/G,IAE5B+G,EACA+G,KAAKjH,QAAQrB,aAAa,wBAAyBuB,EAAUpD,GAAG8B,YAGhEqI,KAAKjH,QAAQuS,gBAAgB,yBAE1BrS,GAEXgK,EAAS5J,UAAUoS,gBAAkB,SAAUvZ,EAAGsZ,GAC9C,GAAItI,GAAQlD,IAEZ,IADA9N,EAAEwZ,iBACEta,OAAOC,KAAK2O,KAAKvL,YAAYnD,QAAU0O,KAAK+H,MAAO,CACnD,GAAI9O,GAAY+G,KAAKuL,eAAerZ,EAAGsZ,GACnCG,EAAa3L,KAAKjH,QAAQ6S,wBAAwBC,IAClDC,EAAgB9L,KAAKjH,QAAQ6S,wBAAwB1G,OACrD6G,EAAkB/L,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWK,UAAUmK,wBACtEI,MAAa,GACbC,MAAkB,EAItB,IAHIjM,KAAKlP,OAAO+I,UACZoS,EAAkBjM,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWQ,eAAegK,yBAE3E3S,EAAW,CACX,GAAIiT,GAAajT,EAAU2S,wBAAwBC,IAC/CM,EAAgBlT,EAAU2S,wBAAwB1G,MACtD,IAAKsG,GAcDQ,EAAahM,KAAKqF,SAAW6G,EAAcA,EAAaP,GACvC,KACS,IAAlB3L,KAAKqF,SACL+G,OAAOC,OAAO,EAAGC,YAAcN,GAG/BhM,KAAKjH,QAAQwT,UAAYvM,KAAKjH,QAAQwT,UAAYP,OApBnD,CACP,GAAI9G,GAASlF,KAAKqF,SAAW+G,OAAOI,YAAcV,GAClDE,EAAahM,KAAKqF,SAAY6G,EAAaC,EACrCD,EAAaP,EAAcQ,GAChBjH,KACS,IAAlBlF,KAAKqF,SACL+G,OAAOC,OAAO,EAAGC,aAAeN,EAAa9G,IAG7ClF,KAAKjH,QAAQwT,UAAYvM,KAAKjH,QAAQwT,WAAaP,EAAa9G,SAgB3E,IAAIlF,KAAKiE,sBAAwBuH,GAAQxL,KAAKkE,qBAAqBuI,aACpEzM,KAAK0M,aAAe,WAChBxJ,EAAMqI,eAAerZ,EAAGsZ,GACxBtI,EAAMwJ,iBAAejb,IAEzBua,EAAahM,KAAKkE,qBAAqByI,gBACjB,IAAlB3M,KAAKqF,SACL+G,OAAOC,OAAO,EAAGC,YAAcN,GAG/BhM,KAAKjH,QAAQwT,UAAYvM,KAAKjH,QAAQwT,UAAYP,MAGrD,IAAIR,EACL,GAAIxL,KAAK8F,YAAc9F,KAAK6F,UAAW,CACnC,GAAI+G,GAAYX,EAAkBA,EAAgBJ,IAAME,EAAgBF,IACpEgB,EAAe7M,KAAK6F,UAAU+F,uBAClCI,GAAaa,EAAahB,IAAM,EAAKgB,EAAa3H,OAAS0H,EAAa,GAClD,IAAlB5M,KAAKqF,SACL+G,OAAOC,OAAO,EAAGC,YAAcN,GAG/BhM,KAAKjH,QAAQwT,UAAY,MAGxBvM,MAAKlP,OAAO+I,UACjBmS,EAAahM,KAAKqF,SAAY4G,EAAgBJ,IAAM,EAAII,EAAgBJ,IAAM,EACzEF,EAAaI,EAAgBF,IAAOI,EAAgB/G,QACnC,IAAlBlF,KAAKqF,SACL+G,OAAOC,OAAO,EAAGC,YAAcN,GAG/BhM,KAAKjH,QAAQwT,UAAYvM,KAAKjH,QAAQwT,UAAYP,KAMtE/I,EAAS5J,UAAUyT,gBAAkB,SAAU5a,GAC3C,GAAId,OAAOC,KAAK2O,KAAKvL,YAAYnD,QAAU0O,KAAK+H,MAAO,CACnD,GAAIlU,IAAY7C,oBAAkBgP,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWvN,WACxEV,EAAK6M,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,QAC/C1N,IAAYV,IACZA,EAAGqE,UAAU8D,OAAO8F,EAAWG,SAC3BvB,KAAKlJ,eACLkJ,KAAK6K,eACL7K,KAAK6K,aAAa1X,GAClB6M,KAAK4K,eAET5K,KAAK8K,YAAY3X,EAAIjB,MAIjC+Q,EAAS5J,UAAU0T,gBAAkB,SAAU7a,GAC3C,GAAI8N,KAAKwF,QAAUxF,KAAKlJ,cAAgB1F,OAAOC,KAAK2O,KAAKvL,YAAYnD,QAAU0O,KAAK+H,MAAO,CACvF,GAAI5U,GAAK6M,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,SAC/C/K,MAAkB,GAClBsT,MAAY,EAChB,KAAK9Y,oBAAkBmC,IAAOnC,oBAAkBmC,EAAGrB,cAAc,IAAMsP,EAAW3N,UAAW,CACzF,GAAIoV,IACA5S,YAASxE,GAAWgD,eAAYhD,GAAWX,WAAQW,GAAWiD,YAASjD,GACvE8B,SAAM9B,GAAW4E,KAAMlD,EAE3BqD,GAAkBqS,EAAKxS,KAAKvE,cAAc,IAAMsP,EAAWe,iBAC3DnC,KAAKiJ,gBAAgBJ,EAAMrS,GAC3BsT,EAAYtT,EAAgB1E,cAAc,IAAMsP,EAAWkB,aAAe,IAAMlB,EAAW9N,UAG3F0M,MAAK0J,YAAYvW,EAErB,IAAIuX,GAAY1K,KAAK2K,gBAAgBxX,EAAIjB,EACzCmG,SAAMqS,GAAapL,YAAWwK,GAAYA,EAAUtS,UAAU+B,SAAS6H,EAAW3N,WAClFuM,KAAK8H,QAAQ,SAAU4C,KAG/BzH,EAAS5J,UAAU2T,iBAAmB,SAAU9a,GAC5C,OAAQA,EAAE+a,SACN,IAAK,IACDjN,KAAKoL,eAAelZ,EACpB,MACJ,KAAK,IACD8N,KAAKoL,eAAelZ,GAAG,EACvB,MACJ,KAAK,IACD8N,KAAKyL,gBAAgBvZ,EACrB,MACJ,KAAK,IACD8N,KAAKyL,gBAAgBvZ,GAAG,EACxB,MACJ,KAAK,IACD8N,KAAK8M,gBAAgB5a,EACrB,MACJ,KAAK,GACG8N,KAAKlJ,cAAgBkJ,KAAKqE,WAAWrE,KAAKqE,WAAW/S,OAAS,IAC9D0O,KAAK6J,kBAET7J,KAAKqK,MACL,MACJ,KAAK,IACDrK,KAAK+M,gBAAgB7a,KAIjC+Q,EAAS5J,UAAU6T,mBAAqB,SAAUhb,GACrB,UAArBA,EAAEib,gBAA8Bjb,EAAEkb,SA3zB1B,IA2zB+E,aAAzBlb,EAAEmb,cAAcnY,OAC1E8K,KAAKlJ,cAAgBkJ,KAAKqE,WAAWrE,KAAKqE,WAAW/S,OAAS,IAC9D0O,KAAK6J,kBAET7J,KAAKqK,SAGbpH,EAAS5J,UAAUiU,SAAW,WAC1B,GAAIlc,OAAOC,KAAK2O,KAAKvL,YAAYnD,QAAU0O,KAAK+H,MAAO,CACnD,GAAIsD,GAAiBrL,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,SAC3DgM,EAAgBvN,KAAK+H,MAAMjW,cAAc,yBACzCuZ,KACAA,EAAe7T,UAAU8D,OAAO8F,EAAWG,SACvCgM,IAAkBvN,KAAKlJ,cACvByW,EAAc/V,UAAUC,IAAI2J,EAAW1N,aAKvDuP,EAAS5J,UAAUmU,WAAa,WAC5BC,eAAahW,IAAIuI,KAAKjH,QAAS,UAAWiH,KAAKgN,iBAAkBhN,MACjEyN,eAAahW,IAAIuI,KAAKjH,QAAS,QAASiH,KAAKmK,aAAcnK,MAC3DyN,eAAahW,IAAIuI,KAAKjH,QAAS,YAAaiH,KAAKgL,aAAchL,MAC/DyN,eAAahW,IAAIuI,KAAKjH,QAAS,WAAYiH,KAAKmL,aAAcnL,MAC9DyN,eAAahW,IAAIuI,KAAKjH,QAAS,WAAYiH,KAAKsN,SAAUtN,MAC1DA,KAAK0N,YAAc,GAAIC,SAAM3N,KAAKjH,SAAW6U,MAAO5N,KAAKkN,mBAAmBhF,KAAKlI,SAErFiD,EAAS5J,UAAUwU,aAAe,WAC9BJ,eAAanS,OAAO0E,KAAKjH,QAAS,QAASiH,KAAKmK,cAChDsD,eAAanS,OAAO0E,KAAKjH,QAAS,YAAaiH,KAAKgL,cACpDyC,eAAanS,OAAO0E,KAAKjH,QAAS,WAAYiH,KAAKmL,cACnDsC,eAAanS,OAAO0E,KAAKjH,QAAS,YAAaiH,KAAKgL,cACpDyC,eAAanS,OAAO0E,KAAKjH,QAAS,WAAYiH,KAAKmL,cACnDnL,KAAK0N,YAAYI,WAErB7K,EAAS5J,UAAUmR,YAAc,WAE7B,IAAK,GAAItZ,GAAK,EAAG6c,EADD/N,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWG,SACrBrQ,EAAK6c,EAAYzc,OAAQJ,IACrD6c,EAAY7c,GAClBsG,UAAU8D,OAAO8F,EAAWG,UAGxC0B,EAAS5J,UAAUuR,YAAc,WAC7B,GAAIoD,GAAUhO,KAAKjH,QAAQjH,cAAc,IAAMsP,EAAWE,MACtD0M,IACAA,EAAQxW,UAAU8D,OAAO8F,EAAWE,QAG5C2B,EAAS5J,UAAUwR,aAAe,SAAU1X,GACxC,GAAInC,oBAAkBmC,GAElB,IAAK,GAAIjC,GAAK,EAAG+c,EADAjO,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAW1N,UACpBxC,EAAK+c,EAAa3c,OAAQJ,IAAM,CACxE,GAAIgd,GAAMD,EAAa/c,EACnB8O,MAAKlJ,cAAgBoX,EAAIpc,cAAc,IAAMsP,EAAW3N,WAIxDya,EAAIxW,aAAa,gBAAiB,SAClCwW,EAAI1W,UAAU8D,OAAO8F,EAAW1N,eAKxCP,GAAGqE,UAAU8D,OAAO8F,EAAW1N,UAC/BP,EAAGuE,aAAa,gBAAiB,UAGzCuL,EAAS5J,UAAUyP,UAAY,SAAU3V,GACrC,MAAQA,IAAMA,EAAGqE,UAAU+B,SAAS6H,EAAWK,YACvCtO,EAAGqE,UAAU+B,SAAS6H,EAAWQ,iBACjCzO,EAAGqE,UAAU+B,SAAS6H,EAAWY,UAE7CiB,EAAS5J,UAAUoR,cAAgB,SAAUtX,EAAIjB,GAC7C,GAAI8N,KAAK8I,UAAU3V,IAAO6M,KAAKwF,QAAUxF,KAAKlJ,aAAc,CACpDkJ,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,UAC1CvB,KAAK+H,MAAMjW,cAAc,IAAMsP,EAAWG,SAAS/J,UAAU8D,OAAO8F,EAAWG,SAEnFpO,EAAGqE,UAAUC,IAAI2J,EAAWG,QAC5B,IAAI/K,GAAkBrD,EAAGrB,cAAc,IAAMsP,EAAWe,iBACpD2H,EAAYtT,EAAgB1E,cAAc,IAAMsP,EAAWkB,aAAe,IAAMlB,EAAW9N,KAC/F0M,MAAK4K,cACAd,EAAUtS,UAAU+B,SAAS6H,EAAW3N,UAMzCqW,EAAUtS,UAAU8D,OAAO8F,EAAW3N,SACtCN,EAAGqE,UAAU8D,OAAO8F,EAAW1N,UAC/BP,EAAGuE,aAAa,gBAAiB,WAPjCoS,EAAUtS,UAAUC,IAAI2J,EAAW3N,SACnCN,EAAGqE,UAAUC,IAAI2J,EAAW1N,UAC5BP,EAAGuE,aAAa,gBAAiB,SAOrClB,EAAgBkB,aAAa,eAAgBoS,EAAUtS,UAAU+B,SAAS6H,EAAW3N,SACjF,OAAS,QACb,IAAIiX,GAAY1K,KAAK2K,gBAAgBxX,EAAIjB,EACzCmG,SAAMqS,GAAapL,UAAWwK,EAAUtS,UAAU+B,SAAS6H,EAAW3N,WAClEuM,KAAKiE,sBACLjE,KAAKkE,qBAAqBuG,cAActX,EAAIjB,GAEhD8N,KAAK8H,QAAQ,SAAU4C,GACvB1K,KAAKyJ,oBAAoBtW,GACzB6M,KAAKmO,cAAchb,KAG3B8P,EAAS5J,UAAUsR,gBAAkB,SAAUxX,EAAIjB,GAC/C,GAEIkc,GAFArS,EAAOiE,KAAKgK,YAAY7W,GACxBpC,EAAYH,EAAemL,EAAMiE,KAAK+D,eAAejT,OAIrDsd,IAFCpd,oBAAkB+K,IACc,gBAAvBiE,MAAKvL,WAAW,IAAiD,gBAAvBuL,MAAKvL,WAAW,IACnD4B,KAAMlD,EAAII,KAAMJ,GAAMA,EAAGyJ,UAAU3K,OAAQ8J,KAAMiE,KAAKvL,aAKjE4B,KAAMlD,EAAII,KAAMxC,GAAaA,EAAUiP,KAAK+D,eAAejT,OAAOyC,MAEhEwI,KAAMA,EAElB,IAAI2O,KAKJ,OAJArS,SAAMqS,EAAW0D,GACblc,GACAmG,QAAMqS,GAAa2D,cAAc,EAAMC,MAAOpc,EAAGQ,MAAOsN,KAAK+H,OAAS3O,MAAMC,UAAUC,QAAQxG,KAAKkN,KAAK+H,MAAMnV,SAAUO,KAErHuX,GAEXzH,EAAS5J,UAAUoQ,oBAAsB,SAAUtW,GAC/C,GAAI4I,GAAOiE,KAAKgK,YAAY7W,GAExBpC,EAAYH,EAAemL,EAAMiE,KAAK+D,eAAejT,OACpDE,qBAAkB+K,IAAyC,gBAAvBiE,MAAKvL,WAAW,IACtB,gBAAvBuL,MAAKvL,WAAW,GAQxBuL,KAAKiK,eACD5T,KAAMlD,EAENI,KAAMxC,GAAaA,EAAUiP,KAAK+D,eAAejT,OAAOyC,MAExDwI,KAAMA,GAZViE,KAAKiK,eACD5T,KAAMlD,EACNI,KAAMJ,GAAMA,EAAGyJ,UAAU3K,OACzB8J,KAAMiE,KAAKvL,aAavBwO,EAAS5J,UAAUyR,YAAc,SAAU3X,EAAIjB,GAC3C,GAAI8N,KAAK8I,UAAU3V,KAAQA,EAAGqE,UAAU+B,SAAS6H,EAAW1N,WAAasM,KAAKwF,OAAQ,CAC7ExF,KAAKlJ,cACNkJ,KAAK6K,eAET1X,EAAGqE,UAAUC,IAAI2J,EAAW1N,UAC5BP,EAAGuE,aAAa,gBAAiB,QACjCsI,KAAK4K,cACL5K,KAAKyJ,oBAAoBtW,GACrB6M,KAAKiE,sBACLjE,KAAKkE,qBAAqB4G,YAAY3X,EAAIjB,EAE9C,IAAIwY,GAAY1K,KAAK2K,gBAAgBxX,EAAIjB,EACzC8N,MAAK8H,QAAQ,SAAU4C,GACvB1K,KAAKuO,WAAapb,EAClB6M,KAAKmO,cAAchb,KAG3B8P,EAAS5J,UAAU6R,WAAa,SAAU/X,GACtC,GAAI6M,KAAK8I,UAAU3V,KAAQA,EAAGqE,UAAU+B,SAAS6H,EAAWE,QAAUtB,KAAKwF,OAAQ,CAC/E,GAAIgJ,GAASxO,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWE,MACxDkN,IAAUA,EAAOld,QACjB2T,cAAYuJ,EAAQpN,EAAWE,OAE9BnO,EAAGqE,UAAU+B,SAAS6H,EAAW1N,YAAasM,KAAKlJ,cACpD3D,EAAGqE,UAAUC,IAAI2J,EAAWE,SAKxC2B,EAAS5J,UAAUuL,SAAW,WAC1B,GAAI6J,GAAYzO,KAAKqE,UACrB,IAAIoK,EAAUnd,OAAQ,CAElB,IAAK,GADDwI,GAAKkG,KAAK0O,UACLxd,EAAK,EAAGyd,EAAcF,EAAWvd,EAAKyd,EAAYrd,OAAQJ,IAAM,CACrE,GAAImJ,GAAMsU,EAAYzd,GAClB0d,IAEJA,GAAM5O,KAAKlP,OAAO+E,IAAMwE,EACxB2F,KAAK6O,UAAY7O,KAAK8O,eAAehV,EAAI8U,EACzC,IAAI7d,GAAYH,EAAeoP,KAAK6O,UAAW7O,KAAK+D,eAAejT,OACnEgJ,GAAKkG,KAAK6O,UAAY9d,EAAUiP,KAAKlP,OAAO4F,OAASoD,EAEzD,MAAOA,GAEX,MAAOkG,MAAK0O,WAEhBzL,EAAS5J,UAAU2Q,YAAc,SAAU7W,GACvC,GAGI4b,GAHAta,EAAauL,KAAKvL,qBAAsBqG,eACxCkF,KAAK0O,UAAY1O,KAAKvL,WACtB3D,EAASkP,KAAKgP,cAAc7b,EAQhC,OALI4b,GADA/d,oBAAkBgP,KAAKjH,QAAQjH,cAAc,IAAMsP,EAAWvN,YAAcmM,KAAKlP,OAAO+I,QAChFmG,KAAK2E,UAGLlQ,EAELuL,KAAK8O,eAAeC,EAAOje,IAEtCmS,EAAS5J,UAAUyV,eAAiB,SAAUra,EAAY3D,EAAQme,GAC9D,GACIC,GADAhM,EAAQlD,IAmCZ,OAjCIvL,IAAcA,EAAWnD,QAAUR,EACnC2D,EAAW0a,KAAK,SAAUpT,GACtB,GAAIhL,GAEJH,EAAemL,EAAMmH,EAAMa,eAAejT,OAE1C,KAAKA,EAAOoS,EAAMpS,OAAO+E,MAAO/E,EAAOoS,EAAMpS,OAAOyC,OAC9CzC,EAAOoS,EAAMpS,OAAO+E,OAAS7E,oBAAkBD,EAAUmS,EAAMpS,OAAO+E,MACpE9E,EAAUmS,EAAMpS,OAAO+E,IAAI8B,cAAgB7G,EAAOoS,EAAMpS,OAAO+E,IAAI8B,YACrE7G,EAAOoS,EAAMpS,OAAOyC,OAASxC,EAAUmS,EAAMpS,OAAOyC,QAAUzC,EAAOoS,EAAMpS,OAAOyC,MAGnF,GAAoB,gBAATwI,KAAmD,IAA9BtH,EAAW6E,QAAQyC,GACpDmT,EAAcD,EAASxa,EAAasH,MAEnC,KAAK/K,oBAAkBF,EAAOoS,EAAMpS,OAAO+E,MAAQ7E,oBAAkBD,EAAUmS,EAAMpS,OAAO+E,KAAM,CACnG,GAAI1C,GAAK+P,EAAMnK,QAAQjH,cAAc,cAC/BhB,EAAOoS,EAAMpS,OAAO+E,IAAM,KAE5B1C,IAAMA,EAAGyJ,UAAU3K,SAAWlB,EAAUmS,EAAMpS,OAAOyC,QACrD2b,EAAanT,OAIZhL,GAAU4F,eAAeuM,EAAMpS,OAAO4F,QAAU3F,EAAUmS,EAAMpS,OAAO4F,OAAOpF,SACnF4d,EAAahM,EAAM4L,eAAe/d,EAAUmS,EAAMpS,OAAO4F,OAAQ5F,EAAQme,QAfzEC,GAAcD,EAASxa,EAAasH,CAiBxC,SAASmT,IAIbA,EAAaza,EAEVya,GAEXjM,EAAS5J,UAAU+V,SAAW,WAC1B,GAAIC,MACA3U,EAASsF,KAAKtF,MAAQsF,KAAKtF,MAAQ,GAAId,QAC3C,KAAKoG,KAAKtF,MAAO,CAEb,IAAK,GAAIxJ,GAAK,EAAGC,EAAKC,OAAOC,KAAK2O,KAAKlP,OAAOkT,YAAa9S,EAAKC,EAAGG,OAAQJ,IAAM,CAC7E,GAAIoe,GAASne,EAAGD,EACD,eAAXoe,GAA6BtP,KAAKlP,OAAOwe,IACzCtP,KAAKlP,OAAOwe,KACRhb,WAASiC,oBAAoB+Y,KACY,IAA1CD,EAAQ/V,QAAQ0G,KAAKlP,OAAOwe,KAC/BD,EAAQ1c,KAAKqN,KAAKlP,OAAOwe,IAGjC5U,EAAM6U,OAAOF,GAETrP,KAAKlP,OAAOkT,WAAWrN,eAAe,cACtC+D,EAAMtI,KAAK4N,KAAKlP,OAAO0e,WAG/B,MAAO9U,IAEXuI,EAAS5J,UAAUoW,kBAAoB,SAAUhb,OAC1B,KAAfA,IAAyBA,EAAauL,KAAK0O,WAC3Cja,GAAcuL,KAAKlP,OAAO+I,QACH,SAAnBmG,KAAKvG,UACLuG,KAAK2E,UAAYrQ,WAASkF,gBAAgBlF,WAASyF,cAActF,EAAYH,WAAS0F,WAAWgG,KAAKvG,UAAYzI,oBAAkBgP,KAAKlP,OAAO2J,QAAWuF,KAAKlP,OAAOyC,KAAOyM,KAAKlP,OAAO2J,SAAUuF,KAAK+D,eAAejT,OAAQkP,KAAKvG,WAGrOuG,KAAK2E,UAAYrQ,WAASkF,gBAAgB/E,EAAYuL,KAAK+D,eAAejT,OAAQkP,KAAKvG,WAGtFhF,GAAiC,SAAnBuL,KAAKvG,UACxBuG,KAAK2E,UAAYrQ,WAASyF,cAActF,EAAYH,WAAS0F,WAAWgG,KAAKvG,UAAYzI,oBAAkBgP,KAAKlP,OAAO2J,QAAWuF,KAAKlP,OAAOyC,KAAOyM,KAAKlP,OAAO2J,SAGjKuF,KAAK2E,UAAYlQ,GAGzBwO,EAAS5J,UAAUqW,cAAgB,WAC/B,MAAO1P,MAAK+H,MAAMvQ,UAAU+B,SAAS,eAEzC0J,EAAS5J,UAAUsW,kBAAoB,SAAUzd,EAAG0d,GAC5C5P,KAAK6P,cAGT7P,KAAK0O,UAAYxc,EAAE4d,OACnBF,EAAkBhH,cAAcgH,EAAkBrL,kBAClDvE,KAAK+P,aACL/P,KAAK8H,QAAQ,iBAAkB5V,KAEnC+Q,EAAS5J,UAAU2W,qBAAuB,SAAU9d,GAC5C8N,KAAK6P,aAGT7P,KAAK8H,QAAQ,gBAAiB5V,IAElC+Q,EAAS5J,UAAU4W,aAAe,WAC9B,GAAI/M,GAAQlD,IACZA,MAAK8H,QAAQ,cAEb,IAAI8H,GAAoB5P,IACxB,IAAIA,KAAKvL,qBAAsBqG,eACvBkF,KAAKvL,WAAWyb,MAChBlQ,KAAKvL,WAAWyb,MAAMC,KAAK,SAAUje,GAEjCgR,EAAMkN,UAAYlN,EAAMzO,WAAWA,WAAW4b,QAC1CnN,EAAMzO,qBAAsBqG,gBAAeoI,EAAMkN,WACjDlN,EAAMyM,kBAAkBzd,EAAG0d,KAEhCU,MAAM,SAAUpe,GACfgR,EAAM8M,qBAAqB9d,KAI/B8N,KAAKvL,WAAW8b,aAAavQ,KAAKoP,YAAYe,KAAK,SAAUje,GACzDgR,EAAMyM,kBAAkBzd,EAAG0d,KAC5BU,MAAM,SAAUpe,GACfgR,EAAM8M,qBAAqB9d,SAIlC,IAAK8N,KAAKvL,YAAeuL,KAAKvL,WAAWnD,OAW1C0O,KAAK0O,UAAY1O,KAAKvL,WACtBuL,KAAK+P,aACL/P,KAAK8H,QAAQ,kBAAoB/L,KAAMiE,KAAK0O,gBAbM,CAClD,GAAItb,GAAK4M,KAAKjH,QAAQjH,cAAc,KAChCsB,KACAkI,SAAOlI,GACP4M,KAAK+F,eAAgBtR,WAAYH,WAAS0G,sBAAsB5H,KAAO,GACvE4M,KAAK0O,UAAY1O,KAAKvL,WACtBuL,KAAK+P,aACL/P,KAAK8H,QAAQ,kBAAoB/L,KAAMiE,KAAK0O,eASxDzL,EAAS5J,UAAU+K,SAAW,WAC1BpE,KAAK4I,cAAc5I,KAAK6F,WACxB7F,KAAK4I,cAAc5I,KAAKxD,WACxBwD,KAAK4I,cAAc5I,KAAKuE,kBAEpBvE,KAAKwG,SACLxG,KAAKwQ,iBAE0C,IAA/Cpf,OAAOC,KAAK+a,QAAQ9S,QAAQ,gBAC5B0G,KAAKjH,QAAQ/G,UAAY,IAE7BgO,KAAK6F,UAAY7F,KAAKxD,UAAYwD,KAAKrD,iBAAelL,GACtDuO,KAAKxC,SACLwC,KAAKiQ,gBAEThN,EAAS5J,UAAUwL,iBAAmB,WAClC7E,KAAKyP,kBAAkBzP,KAAK2E,WAC5B3E,KAAKuE,iBAAiBvS,UAAY,GAClCgO,KAAKzL,aACLyL,KAAKyQ,cAAczQ,KAAK+H,QAE5B9E,EAAS5J,UAAUqX,cAAgB,SAAUC,GACzC,IAAK,GAAI5a,GAAI,EAAGA,EAAI4a,EAAWrf,OAAQyE,IAAK,CACxC,GAAIgD,GAAU4X,EAAW5a,EACrBgD,GAAQvB,UAAU+B,SAAS,iBAC3BR,EAAQrB,aAAa,KAAMsI,KAAKjH,QAAQlD,GAAK,IAAMkD,EAAQ6X,aAAa,aACxE7X,EAAQrB,aAAa,gBAAiB,SACtCqB,EAAQrB,aAAa,WAAY,SAI7CuL,EAAS5J,UAAU9E,WAAa,WAC5ByL,KAAKqI,qBACLrI,KAAKsI,cAAe,EACpBtI,KAAKxD,UAAYwD,KAAK+H,MAAQzT,WAASC,WAAWyL,KAAKxL,cAAewL,KAAK2E,UAAW3E,KAAK+D,eAAgB,KAAM/D,MACjHA,KAAKrD,aAAeqD,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UACjEzB,KAAK0Q,cAAc1Q,KAAKrD,eAE5BsG,EAAS5J,UAAUwX,eAAiB,SAAU3e,GAC1C8N,KAAK8H,QAAQ,gBAAiB5V,IAElC+Q,EAAS5J,UAAUyX,gBAAkB,WACjC9Q,KAAKxD,UAAYwD,KAAK+H,MAAQ/H,KAAKjH,QAAQjH,cAAc,IAAMsP,EAAWI,YACtExB,KAAK+H,QAEL/H,KAAKrD,aAAeqD,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,YAGzEwB,EAAS5J,UAAU8U,cAAgB,SAAUhb,GACzC6M,KAAKb,UAAYhM,CACjB,IAAI2L,GAAM3L,EAAGyd,aAAa,WAC1B,IAAIzd,EAAGqE,UAAU+B,SAAS6H,EAAWvN,WAAaiL,EAAK,CACnD,GAAI1L,GAAKkX,UAAQnX,EAAGoX,WAAY,IAAMnJ,EAAWI,YAC7C0M,EAAMlO,KAAKjH,QAAQjH,cAAc,SAAYgN,EAAM,KAGvD,IAFAkB,KAAKqE,WAAW1R,KAAKmM,GACrBkB,KAAKyP,kBAAkBzP,KAAK4E,aACvBsJ,EAAK,CACN,GAAInS,GAAOiE,KAAK2E,SAChBuJ,GAAM5Z,WAASgB,mBAAmB0K,KAAKxL,cAAeuH,EAAMiE,KAAK+D,eAAgB/D,KAAKqE,WAAW/S,OAAQ,KAAM0O,MAE3GA,KAAKwG,SACLxG,KAAKyG,sBAET,IAAIsK,GAAQ7C,EAAI7S,iBAAiB,IAAM+F,EAAWK,SAClDzB,MAAK0Q,cAAcK,GACnB7C,EAAIxW,aAAa,MAAOoH,GACxBoP,EAAIlW,MAAMC,QAAU,OACpB+H,KAAKyQ,cAAcvC,GAIvB,GAFAlO,KAAK2G,WAAWvT,EAAI8a,GACpBlO,KAAKrD,aAAeqD,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAC7DzB,KAAKiK,cAAe,CACpB,GAAIlZ,GAAYH,EAAeoP,KAAKiK,cAAclO,KAAMiE,KAAK+D,eAAejT,OAE5EkP,MAAKxC,OAAQzM,EAAUiP,KAAK+D,eAAejT,OAAOyC,OAAQ,EAAM,UAEpEyM,KAAKuO,eAAa9c,KAG1BwR,EAAS5J,UAAUoX,cAAgB,SAAUvC,GACzClO,KAAKuE,iBAAiBvR,YAAYkb,IAEtCjL,EAAS5J,UAAU0W,WAAa,SAAUhU,GACtCiE,KAAKyP,kBAAkB1T,GACnBiE,KAAKiE,sBACD7S,OAAOC,KAAK2O,KAAKvL,YAAYnD,UACxB0O,KAAKpO,WAAYoO,KAAK5C,eAAmB4C,KAAKkE,qBAAqB8M,iBAChEhR,KAAKwG,SACuB,gBAAjBxG,MAAKpO,WACZoO,KAAK+D,eAAenS,SAAW,MAEF,gBAAtBoO,MAAK5C,gBACZ4C,KAAK+D,eAAe3G,cAAgB,QAIxC4C,KAAK+D,eAAenS,SAAW,KAC/BoO,KAAK+D,eAAe3G,cAAgB,MAExC4C,KAAK+D,eAAe3N,YAAc4J,KAAKkE,qBAAqB+M,aAAa/I,KAAKlI,KAAKkE,wBAG3FlE,KAAKkE,qBAAqBgN,qBAG1BlR,KAAKzL,aACLyL,KAAKuE,iBAAmBvE,KAAKxL,cAAc,OAASyC,UAAWmK,EAAWa,UAC1EjC,KAAKjH,QAAQ/F,YAAYgN,KAAKuE,kBAC9BvE,KAAKyQ,cAAczQ,KAAKxD,WAEpBwD,KAAKwG,SACLxG,KAAKyG,yBAIjBxD,EAAS5J,UAAU2V,cAAgB,SAAUmC,GACzC,GAAIrgB,KAQJ,OAPIqgB,aAAeC,SAEftgB,EAAOkP,KAAKlP,OAAO+E,IAAMsb,EAAIP,aAAa,YAG1C9f,EAASqgB,EAENrgB,GAKXmS,EAAS5J,UAAUgY,OAAS,WACxBrR,KAAKjH,QAAQvB,UAAUC,IAAI2J,EAAWC,MACtCjF,aAAW4D,KAAKjH,SAAW0D,KAAM,OAAQ6U,SAAU,MACnDtR,KAAK2D,cACL3D,KAAK8D,eACL9D,KAAK4D,YACL5D,KAAK6D,UACL7D,KAAKwN,aACLxN,KAAKxC,SACLwC,KAAKiQ,eACLjQ,KAAK0D,mBACL1D,KAAKuR,SAAWC,eAAaxR,KAAKjH,SAC9B0Y,SAAU,IAAMrQ,EAAWK,WAE/BzB,KAAK0R,kBAKTzO,EAAS5J,UAAUyU,QAAU,WAErB9N,KAAKwG,SACLxG,KAAKwQ,gBAETxQ,KAAK6N,cACL,IAAI8D,IAAWvQ,EAAWC,KAAMD,EAAWY,QAAS,QAChD,eAAgB,SAAS4P,OAAO5R,KAAKtK,SAASyG,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,KAC5FC,gBAAajF,KAAKjH,SAAU4Y,GAC5B3R,KAAKjH,QAAQuS,gBAAgB,QAC7BtL,KAAKjH,QAAQuS,gBAAgB,YAC7BtL,KAAK+H,MAAQ/H,KAAKxD,UAAYwD,KAAKrD,aAAeqD,KAAK6F,cAAYpU,GACnEuO,KAAKjH,QAAQ/G,UAAY,GACzB6Q,EAAOxJ,UAAUyU,QAAQhb,KAAKkN,OAKlCiD,EAAS5J,UAAUgR,KAAO,WACtB,GAAIwH,GAAM7R,KAAKqE,WAAWrE,KAAKqE,WAAW/S,OAAS,EACnD,QAAYG,KAARogB,IAAqB7R,KAAK0P,gBAA9B,CAGA1P,KAAKqE,WAAWyN,MAChB9R,KAAKyP,kBAAkBzP,KAAK4E,WAC5B,IAAImN,GAAO/R,KAAKjH,QAAQjH,cAAc,cAAiB+f,EAAM,MACzDG,EAAShS,KAAK+H,KACbgK,GAMDA,EAAOA,EAAKrL,eALZ1G,KAAKzL,aACLyL,KAAKyQ,cAAczQ,KAAKxD,WACxBuV,EAAO/R,KAAK+H,MAKhB,IAEIxU,GAFY3C,EAAeoP,KAAK6O,UAAW7O,KAAK+D,eAAejT,QAE9CkP,KAAKlP,OAAOyC,KACjCyM,MAAK2G,WAAWqL,EAAQD,GAAM,GAC9B/R,KAAKwK,aACL,IAAIrX,GAAK6M,KAAKjH,QAAQjH,cAAc,cAAiB+f,EAAM,KAC3D1e,GAAGqE,UAAU8D,OAAO8F,EAAWY,SAC/B7O,EAAGqE,UAAUC,IAAI2J,EAAWG,SACxBvB,KAAKlJ,cAAgB3D,EAAGrB,cAAc,IAAMsP,EAAWkB,cAAc9K,UAAU+B,SAAS6H,EAAW3N,SACnGN,EAAGuE,aAAa,gBAAiB,SAGjCvE,EAAGqE,UAAU8D,OAAO8F,EAAW1N,UAC/BP,EAAGuE,aAAa,gBAAiB,UAErCsI,KAAKrD,aAAeqD,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAC7DzB,KAAKjB,qBACLiB,KAAK+F,eAAgBzB,YAAa0B,qBAAmBC,SAASjG,KAAKsE,eAAgB,GAEvFtE,KAAKxC,OAAQwC,KAAKqE,WAAW/S,OAASiC,EAAOyM,KAAKsE,cAAetE,KAAKqE,WAAW/S,OAAwB,YAO7G2R,EAAS5J,UAAU4Y,WAAa,SAAU5b,GAClC2J,KAAKiE,qBACLjE,KAAKkE,qBAAqB+N,WAAW5b,GAEhC2J,KAAKlJ,aACVkJ,KAAKyK,cAAczK,KAAKwJ,sBAAsBnT,KAGd,IAA5BrF,oBAAkBqF,GAClB2J,KAAK6K,eAGL7K,KAAK8K,YAAY9K,KAAKwJ,sBAAsBnT,KAIxD4M,EAAS5J,UAAUmQ,sBAAwB,SAAU2H,GACjD,GAAIhe,GACAsB,EAAauL,KAAKvL,qBAAsBqG,eACxCkF,KAAK0O,UAAY1O,KAAKvL,UAC1B,KAAKzD,oBAAkBmgB,GACnB,GAA6B,gBAAlB1c,GAAW,IAA4C,gBAAlBA,GAAW,GACvD,GAAI0c,YAAeC,UAEf,IAAK,GADDc,GAAMf,EAAIP,aAAa,YAAYjZ,WAC9B5B,EAAI,EAAGA,EAAIiK,KAAKrD,aAAarL,OAAQyE,IAC1C,GAAIiK,KAAKrD,aAAa5G,GAAG6a,aAAa,YAAYjZ,aAAeua,EAAK,CAClE/e,EAAK6M,KAAKrD,aAAa5G,EACvB,YAKRqD,OAAMC,UAAU8V,KAAKrc,KAAKkN,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,UAAW,SAAUpL,GACxF,MAAIA,GAAKuG,UAAU3K,SAAWkf,EAAIxZ,aAC9BxE,EAAKkD,GACE,SAQlB,CACD,GAAI6Y,GAAalP,KAAKgK,YAAYmH,GAC9BpgB,EAAYH,EAAese,EAAYlP,KAAK+D,eAAejT,OAC/D,IAAIoe,IACA/b,EAAK6M,KAAKjH,QAAQjH,cAAc,cAC1Bf,EAAUiP,KAAKlP,OAAO+E,IAAM,OAC7BmK,KAAKiE,sBAAwBjT,oBAAkBmC,IAEhD,IAAK,GADD8X,GAAQjL,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWK,UAClD1L,EAAI,EAAGA,EAAIkV,EAAM3Z,OAAQyE,IAE1BkV,EAAMlV,GAAG6G,UAAU3K,SAAWlB,EAAUiP,KAAKlP,OAAOyC,QACpDJ,EAAK8X,EAAMlV,IAOnC,MAAO5C,IAQX8P,EAAS5J,UAAU8Y,oBAAsB,SAAU9b,GAC/C,IAAKrF,oBAAkBqF,GACnB,IAAK,GAAIN,GAAI,EAAGA,EAAIM,EAAK/E,OAAQyE,IACxB/E,oBAAkBqF,EAAKN,KACxBiK,KAAKiS,WAAW5b,EAAKN,KAKrCkN,EAAS5J,UAAU+Y,YAAc,WAC7B,GAAIC,KACJ,IAAIrS,KAAKsI,aACL,IAAK,GAAIvS,GAAIiK,KAAKqE,WAAW/S,OAAS,EAAGyE,GAAK,EAAGA,IAC7Csc,EAAS1f,KAAKqN,KAAKqE,WAAWtO,GAGtC,OAAOsc,IAMXpP,EAAS5J,UAAUiZ,iBAAmB,WAElC,GAAIC,GACAC,GAAc,CAClBxS,MAAKwI,aACL,IAAI/T,GAAauL,KAAKvL,qBAAsBqG,eACxCkF,KAAK0O,UAAY1O,KAAKvL,UAC1B,IAAIuL,KAAKiE,uBAAyBuO,EAC9BD,EAAavS,KAAKkE,qBAAqBoO,mBACvCE,GAAc,MAEb,IAAIxS,KAAKlJ,eAAiB0b,EAAa,CAExC,GAAI7V,GAAeqD,KAAK+H,MAAM0K,uBAAuBrR,EAAW1N,UAC5Dgf,KACAC,IACJ3S,MAAKwI,aAEL,KAAK,GADDoK,MACK7c,EAAI,EAAGA,EAAI4G,EAAarL,OAAQyE,IACrC,GAA6B,gBAAlBtB,GAAW,IAA4C,gBAAlBA,GAAW,GACvDie,EAAiB/f,KAAKgK,EAAa5G,GAAG6G,UAAU3K,YAE/C,CACD,GAAI4gB,GAAW7S,KAAKgK,YAAYrN,EAAa5G,IACzChF,EAAYH,EAAeiiB,EAAU7S,KAAK+D,eAAejT,OACzDkP,MAAKsI,aACLsK,EAAWjgB,MAAOoJ,KAAM8W,EAAUR,SAAUrS,KAAKoS,gBAGjDO,EAAiBhgB,KAAKkgB,GAEtB9hB,GAEA2hB,EAAiB/f,KAAK5B,EAAUiP,KAAK+D,eAAejT,OAAOyC,OAE3DyM,KAAKwI,WAAW7V,KAAK5B,EAAUiP,KAAK+D,eAAejT,OAAO+E,OAG1D6c,EAAiB/f,SAAKlB,IACtBuO,KAAKwI,WAAW7V,SAAKlB,KAIH,gBAAlBgD,GAAW,IACS,gBAAlBA,GAAW,IACjB+d,IACJD,GAAelc,KAAMsG,EAAcZ,KAAMtH,EAAYlB,KAAMmf,GAC3DF,GAAc,GAEdxS,KAAKsI,eAAiBkK,GACtBD,GAAelc,KAAMsG,EAAcZ,KAAM6W,EAAYrf,KAAMmf,GAC3DF,GAAc,GAERA,IACND,GAAelc,KAAMsG,EAAcZ,KAAM4W,EAAkBpf,KAAMmf,GACjEF,GAAc,OAGjB,KAAKA,EAAa,CACnB,GAAIrT,GAAYa,KAAKjH,QAAQ0Z,uBAAuBrR,EAAW1N,UAAU,GACrE3C,EAAYH,EAAeoP,KAAKgK,YAAY7K,GAAYa,KAAK+D,eAAejT,OAClD,iBAAlB2D,GAAW,IACS,gBAAlBA,GAAW,IACjB+d,EAOEA,IACFxhB,oBAAkBD,IAAcC,oBAAkBmO,IAClDoT,MAAa9gB,GACb+gB,GAAc,IAIdxS,KAAKwI,WAAW7V,KAAK5B,EAAUiP,KAAK+D,eAAejT,OAAO+E,KAC1D0c,GACIhf,KAAMxC,EAAUiP,KAAK+D,eAAejT,OAAOyC,MAAO8C,KAAM8I,EACxDpD,KAAMiE,KAAKgK,YAAY7K,IAE3BqT,GAAc,KAlBlBD,EAAevhB,oBAAkBmO,OAG7B1N,IAFA4E,KAAM8I,EAAWpD,KAAMtH,EACvBlB,KAAM4L,EAAUvC,UAAU3K,QAE9BugB,GAAc,GAkBtB,MAAOD,IAOXtP,EAAS5J,UAAUyZ,SAAW,SAAUzc,GACpC,MAAO2J,MAAKgK,YAAY3T,IAO5B4M,EAAS5J,UAAU0Z,WAAa,SAAU1c,GACtC2J,KAAKgT,aAAa3c,GAAM,GACpB2J,KAAKiE,sBACLjE,KAAKkE,qBAAqB6O,WAAW1c,IAQ7C4M,EAAS5J,UAAU4Z,YAAc,SAAU5c,GACvC2J,KAAKgT,aAAa3c,GAAM,GACpB2J,KAAKiE,sBACLjE,KAAKkE,qBAAqB+O,YAAY5c,IAI9C4M,EAAS5J,UAAU2Z,aAAe,SAAU3c,EAAM6c,GAC9C,GAAIhE,GAAalP,KAAKgK,YAAY3T,GAC9BtF,EAAYH,EAAese,EAAYlP,KAAK+D,eAAejT,OAC/D,IAAIoe,EAAY,CACZ,GAAI/b,GAAK6M,KAAKjH,QAAQjH,cAAc,cAAgBf,EAAUiP,KAAKlP,OAAO+E,IAAM,KAC5Eqd,IACI/f,GACAA,EAAGqE,UAAU8D,OAAO8F,EAAWY,eAE5BkN,GAAWlP,KAAKlP,OAAOgH,UAExBob,IACF/f,GACAA,EAAGqE,UAAUC,IAAI2J,EAAWY,SAGhCkN,EAAWlP,KAAKlP,OAAOgH,UAAW,KAS9CmL,EAAS5J,UAAU8Z,SAAW,SAAU9c,GACpC2J,KAAKoT,aAAa/c,GAAM,EAAO,IAC3B2J,KAAKiE,sBACLjE,KAAKkE,qBAAqBiP,SAAS9c,IAQ3C4M,EAAS5J,UAAUga,SAAW,SAAUhd,GACpC2J,KAAKoT,aAAa/c,GAAM,EAAM,QAC1B2J,KAAKiE,sBACLjE,KAAKkE,qBAAqBmP,SAAShd,IAG3C4M,EAAS5J,UAAU+Z,aAAe,SAAUjC,EAAKmC,EAAQrb,GACrD,GAAIiX,GAAalP,KAAKgK,YAAYmH,GAC9BpgB,EAAYH,EAAese,EAAYlP,KAAK+D,eAAejT,OAC/D,IAAIoe,EAAY,CACZ,GAAI/b,GAAK6M,KAAKjH,QAAQjH,cAAc,cAAgBf,EAAUiP,KAAKlP,OAAO+E,IAAM,KAC5E1C,KACAA,EAAG6E,MAAMC,QAAUA,GAEnBqb,EAEApE,EAAWlP,KAAKlP,OAAOiH,YAAa,QAG7BmX,GAAWlP,KAAKlP,OAAOiH,aAe1CkL,EAAS5J,UAAUka,QAAU,SAAUxX,EAAMjL,OAC1B,KAAXA,IAAqBA,MAASW,GAClC,IAAIgD,GAAauL,KAAKvL,qBAAsBqG,eACtCkF,KAAK0O,UAAY1O,KAAKvL,UAC5BuL,MAAKwT,kBAAkBzX,EAAMjL,EAAQ2D,IAEzCwO,EAAS5J,UAAUma,kBAAoB,SAAUzX,EAAMjL,EAAQ2D,GAC3D,GAAIsH,YAAgB3C,OAChB,GAAI4G,KAAKiE,qBACLjE,KAAKkE,qBAAqBqP,QAAQxX,EAAMjL,EAAQ2D,OAE/C,CACD,GAAIqF,GAAKkG,KAAK8O,eAAera,EAAY3D,GACrC4F,MAAQ,EAUZ,IATIoD,KAEApD,EADgB9F,EAAekJ,EAAIkG,KAAK+D,eAAejT,QACrCkP,KAAKlP,OAAO4F,UAE1BA,MAEJA,EAAQA,EAAMkb,OAAO7V,IAGrBjC,YAAcV,OAAO,CACrB,IAAK,GAAIrD,GAAI,EAAGA,EAAIgG,EAAKzK,OAAQyE,IAAK,CAClCtB,EAAW9B,KAAKoJ,EAAKhG,IACrBiK,KAAKyP,kBAAkBhb,EAGvB,IAAIgf,GAAWzT,KAAKuE,iBACdvE,KAAKuE,iBAAiB3R,SAAS,GAC/B,IAGFoN,MAAKuE,kBAAoBkP,EACzBzT,KAAK0T,eAAe3X,EAAKhG,GAAI0d,EAAUzT,KAAK2E,WAG5C3E,KAAKoE,WAGbpE,KAAKrD,aAAeqD,KAAK+H,MAAM1M,iBAAiB,IAAM+F,EAAWK,cAI7D3H,KACAA,EAAGkG,KAAKlP,OAAO4F,OAASA,EACxBsJ,KAAK2T,oBAAoB7Z,EAAIiC,MAMjDkH,EAAS5J,UAAUsa,oBAAsB,SAAUC,EAAgBC,GAE/D,GAAIC,GAAeF,EAAe5T,KAAKlP,OAAO+E,IAC1Cke,EAAgBH,EAAe5T,KAAKlP,OAAO4F,OAC3Csd,EAAsBhU,KAAKjH,QAAQjH,cAAc,SAAYgiB,EAAe,MAC5EG,EAAWjU,KAAKjH,QAAQjH,cAAc,cAAiBgiB,EAAe,MACtEL,EAAWO,IAETC,EACI3J,UAAQ2J,EAAU,MAClB,MACNC,EAAWF,EAAsBD,GAAiBH,EAEtD,MADyBK,IAAYA,EAASzc,UAAU+B,SAAS6H,EAAWvN,UAIpD,CACpB,GAAIsgB,GAAyB7f,WAASgC,uBAAuB0J,KAAKxL,cAAe0f,EAAUlU,KAAK+D,eAAgB,KAAM,KAAM/D,KAC5HA,MAAK0Q,cAAcyD,GACnBV,EAASlhB,aAAa4hB,EAAuB,GAAIF,GACjDzP,SAAOyP,GAIX,GAAID,GAAuBH,EACvB,IAAK,GAAI9d,GAAI,EAAGA,EAAI8d,EAAUviB,OAAQyE,IAClCme,EAASvhB,KAAKkhB,EAAU9d,IACxBiK,KAAK0T,eAAeG,EAAU9d,GAAI0d,EAAUS,IAKxDjR,EAAS5J,UAAUqa,eAAiB,SAAUU,EAAaX,EAAU9O,GACjE,GAAIjS,GAAQiS,EAAUrL,QAAQ8a,EAC9BpU,MAAKqU,YAAYD,EAAa1hB,EAAO+gB,EAAU9O,EAC/C,IAAI2P,GAAY3P,EAAUjS,EAAQ,EAC9B4hB,IAAaA,EAAUrjB,UAAuC,IAA3BqjB,EAAUna,MAAM7I,QACnD0O,KAAKqU,YAAYC,EAAY5hB,EAAQ,EAAI+gB,EAAU9O,IAG3D1B,EAAS5J,UAAUgb,YAAc,SAAU5f,EAAY/B,EAAO8J,EAAWmI,GACrE,GAAI5R,GAASiN,KAAKwJ,sBAAsB7E,EAAUjS,EAAQ,KACtDsN,KAAKwJ,sBAAsB7E,EAAUjS,EAAQ,KAAO,KACpDS,EAAKmB,WAASgC,uBAAuB0J,KAAKxL,eAAgBC,GAAauL,KAAK+D,eAAgB,KAAM,KAAM/D,KAM5G,IALAA,KAAK0Q,cAAcvd,GAEf6M,KAAKpO,UAAYoO,KAAKwG,SACtBxG,KAAKyG,uBAELzG,KAAKlP,OAAO+I,SAAW8K,EAAUjS,EAAQ,IAAMiS,EAAUjS,EAAQ,GAAGzB,SAAU,CAC9E,GAAIsjB,GAAYvU,KAAKwJ,sBAAsB7E,EAAUjS,EAAQ,GACzD6hB,KACAxhB,EAASwhB,EAAUC,oBAG3BhY,EAAUjK,aAAaY,EAAG,GAAIJ,IAQlCkQ,EAAS5J,UAAUob,WAAa,SAAUpe,GACtC,GAAIqe,GAAiB1U,KAAKvL,qBAAsBqG,eAC1CkF,KAAK0O,UAAY1O,KAAKvL,UACxBuL,MAAKiE,qBACLjE,KAAKkE,qBAAqBuQ,WAAWpe,GAGrC2J,KAAK2U,mBAAmBte,EAAMqe,IAGtCzR,EAAS5J,UAAUsb,mBAAqB,SAAUxD,EAAKuD,GACnD,GAGIjgB,GAHAyO,EAAQlD,KACR2E,EAAY3E,KAAK2E,UACjB7T,EAASqgB,YAAeC,SAAUpR,KAAKgP,cAAcmC,GAAOA,CAIhE,IADA1c,EAAauL,KAAK8O,eAAe4F,EAAgB5jB,GAAQ,GACzC,CACZ,GAAI8jB,EAEJA,GAAS5U,KAAK8O,eAAera,EAAY3D,EACzC,IAAI4B,GAAQiS,EAAUrL,QAAQsb,GAC1BzhB,EAAK6M,KAAKwJ,sBAAsB2H,GAChC0D,MAAU,EACd7U,MAAK8U,mBAAmB3hB,GACpB6M,KAAKlP,OAAO+I,SAAWmG,KAAK2E,UAAUjS,EAAQ,IAC9CiS,EAAUjS,EAAQ,GAAGzB,UACiB,IAAtC0T,EAAUjS,EAAQ,GAAGyH,MAAM7I,QACvB6B,GAAMA,EAAG4hB,uBAAuBvd,UAAU+B,SAAS6H,EAAWQ,iBAC7D5Q,oBAAkBmC,EAAGqhB,qBAAwBrhB,EAAGqhB,oBAC7CrhB,EAAGqhB,mBAAmBhd,UAAU+B,SAAS6H,EAAWQ,kBACxDiT,EAAU1hB,EAAG4hB,wBAGjB5hB,GACAqR,SAAOrR,GAEP0hB,GACArQ,SAAOqQ,EAGX,IAAIG,GAAavgB,EAAWnD,OAAS,GAAM,EACrC0O,KAAKiV,WAAWjV,KAAK0O,UAAW1O,KAAKlP,OAAO+E,GAE9C,SAAUrE,GAAS,MAAOA,KAAUojB,EAAO1R,EAAMpS,OAAO+E,KAAQ,MAAQ,KACxEqf,EAAUzgB,EAAW6E,QAAQsb,EAGjC,IAFAngB,EAAWoG,OAAOqa,EAAS,GAC3BlV,KAAKyP,kBAAkBiF,GACnBM,GACGA,EAAU/F,QACV7V,MAAM+b,QAAQH,EAAU/F,OAAOjP,KAAKlP,OAAO4F,SAC3Cse,EAAU/F,OAAOjP,KAAKlP,OAAO4F,OAAOpF,QAAU,EAAG,CACpD,GAAI8jB,GAAWpV,KAAKwJ,sBAAsBwL,EAAU/F,OACpD,IAAImG,EAAU,CACV,GAAIC,GAAO/gB,WAASgC,uBAAuB0J,KAAKxL,eAAgBwgB,EAAU/F,QAASjP,KAAK+D,eAAgB,KAAM,KAAM/D,KACpHA,MAAK0Q,cAAc2E,GACnBD,EAAS1O,cAAcnU,aAAa8iB,EAAK,GAAID,GAC7CA,EAAS1O,cAAcqE,YAAYqK,IAGvC3gB,EAAWnD,QAAU,GACrB0O,KAAKqK,OAETrK,KAAKrD,aAAevD,MAAMC,UAAUxG,MAAMC,KAAKkN,KAAKjH,QAAQsC,iBAAiB,IAAM+F,EAAWK,aAItGwB,EAAS5J,UAAUyb,mBAAqB,SAAU3hB,GAC9C,GAAImiB,GAAOniB,EAAKA,EAAGyd,aAAa,YAAYjZ,WAAW4d,cAAgB,IACvE,IAAID,GAAQtV,KAAKqE,YAAcrE,KAAKqE,WAAW/S,OAAS,EACpD,KAAO0O,KAAKqE,WAAW8K,KAAK,SAAUtZ,GAAM,MAAOA,GAAG8B,WAAW4d,gBAAkBD,KAC/EtV,KAAKqK,QASjBpH,EAAS5J,UAAUmc,oBAAsB,SAAUnf,GAC/C,GAAIA,EAAK/E,OACL,IAAK,GAAIyE,GAAI,EAAGA,EAAIM,EAAK/E,OAAQyE,IAC7BiK,KAAKyU,WAAWpe,EAAKN,KAKjCkN,EAAS5J,UAAU4b,WAAa,SAAUxgB,EAAYoB,EAAI4f,EAAUxG,GAEhE,GAAIxa,EAAWkC,eAAed,KAAoC,IAA7B4f,EAAShhB,EAAWoB,IACrD,MAAOf,aAAWL,EAEtB,KAAK,GAAIsB,GAAI,EAAGA,EAAI3E,OAAOC,KAAKoD,GAAYnD,OAAQyE,IAChD,GAAItB,EAAWrD,OAAOC,KAAKoD,GAAYsB,KACkB,gBAA3CtB,GAAWrD,OAAOC,KAAKoD,GAAYsB,IAAkB,CAE/D,GAAI+Z,GAAS9P,KAAKiV,WAAWxgB,EAAWrD,OAAOC,KAAKoD,GAAYsB,IAAKF,EAAI4f,EAAUhhB,EACnF,IAAc,MAAVqb,EAIA,MAHKA,GAAOb,SACRa,EAAOb,OAASA,GAEba,EAInB,MAAO,OAGX7M,EAAS5J,UAAUqc,cAAgB,WAC/B,MAAO,YAEXzS,EAAS5J,UAAUsc,gBAAkB,WACjC,GAAIC,KAIJ,OAHI5V,MAAKiE,sBACL2R,EAAQjjB,MAAOkW,MAAO7I,MAAO6V,OAAQ,mBAElCD,GAKX3S,EAAS5J,UAAUyc,eAAiB,WAChC,MAAO9V,MAAK+V,cAAc,WAAY,YAAa,iBAC/C,SAAU,SAAU,YAAa,cACjC,YAAa,WAAY,SAAU,QAAS,eAAgB,sBAEpE5V,GACI4C,WAAS,KACVE,EAAS5J,UAAW,eAAY,IACnC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,2BAAwB,IAC/C8G,GACI4C,gBACDE,EAAS5J,UAAW,qBAAkB,IACzC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,aAAU,IACjC8G,GACI4C,gBACDE,EAAS5J,UAAW,iBAAc,IACrC8G,GACI4C,cACDE,EAAS5J,UAAW,YAAS,IAChC8G,GACI6V,UAAQ1hB,WAASiC,oBAAqBqM,IACvCK,EAAS5J,UAAW,aAAU,IACjC8G,GACI4C,YAAWuE,OAAQ,YAAaF,SAAU,IAAKO,OAAQ,UACxD1E,EAAS5J,UAAW,gBAAa,IACpC8G,GACI4C,WAAS,SACVE,EAAS5J,UAAW,gBAAa,IACpC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,eAAY,IACnC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,mBAAgB,IACvC8G,GACI4C,WAAS,SACVE,EAAS5J,UAAW,uBAAoB,IAC3C8G,GACI4C,WAAS,KACVE,EAAS5J,UAAW,kBAAe,IACtC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,iBAAc,IACrC8G,GACI4C,YAAS,IACVE,EAAS5J,UAAW,0BAAuB,IAC9C8G,GACI4C,WAAS,KACVE,EAAS5J,UAAW,aAAU,IACjC8G,GACI4C,WAAS,KACVE,EAAS5J,UAAW,YAAS,IAChC8G,GACI4C,WAAS,OACVE,EAAS5J,UAAW,eAAY,IACnC8G,GACI4C,WAAS,OACVE,EAAS5J,UAAW,qBAAkB,IACzC8G,GACI4C,WAAS,OACVE,EAAS5J,UAAW,oBAAiB,IACxC8G,GACI8V,WACDhT,EAAS5J,UAAW,aAAU,IACjC8G,GACI8V,WACDhT,EAAS5J,UAAW,kBAAe,IACtC8G,GACI8V,WACDhT,EAAS5J,UAAW,qBAAkB,IACzC8G,GACI8V,WACDhT,EAAS5J,UAAW,oBAAiB,IACxC4J,EAAW9C,GACP+V,yBACDjT,IAELkT,aCngEEC,EAAgC,WAChC,QAASA,GAAeC,GACpBrW,KAAKsW,kBAAoB,EACzBtW,KAAKuW,iBAAmBF,EAolC5B,MA7kCAD,GAAe/c,UAAU2X,aAAe,WACpC,OAAQhgB,oBAAkBgP,KAAKuW,iBAAiBC,cAA6D,gBAAtCxW,MAAKuW,iBAAiBC,aAOjGJ,EAAe/c,UAAU6X,iBAAmB,WACxClR,KAAKyW,iBAAgB,EACrB,IAAI9R,GAAY3E,KAAKuW,iBAAiB5R,UAClC+R,EAAU/R,EAAU9R,MAAM,EAAG,EACjCmN,MAAKuW,iBAAiB/Z,UAAYwD,KAAKuW,iBAAiBxO,MAAQzT,WAASC,WAEzEyL,KAAKuW,iBAAiB/hB,cAAekiB,EAAS1W,KAAKuW,iBAAiBxS,eAAgB,KAAM/D,KAAKuW,kBAC/FvW,KAAKuW,iBAAiBhS,iBAAmBvE,KAAKuW,iBAAiB/hB,cAAc,OAASyC,UAAWmK,EAAWa,UAC5GjC,KAAKuW,iBAAiBxd,QAAQ/F,YAAYgN,KAAKuW,iBAAiBhS,kBAChEvE,KAAKuW,iBAAiBhS,iBAAiBvR,YAAYgN,KAAKuW,iBAAiB/Z,WACzEwD,KAAK2M,eAAiB3M,KAAKuW,iBAAiB/Z,UAAUjF,kBAAkBqU,wBAAwB1G,OAChGlF,KAAK2W,qBAAuB3W,KAAK4W,kBAAkB,KACnD5W,KAAK6W,aAAe7W,KAAK4W,kBAAkBxlB,OAAOC,KAAK2O,KAAKuW,iBAAiB5R,WAAWrT,QACxF0O,KAAKyM,aAAe,EACpBzM,KAAK8W,YAAc9W,KAAK6W,aAAe,CACvC,IAAIE,GAAUpS,EAAU9R,MAAM,EAAGmN,KAAK6W,cAClCG,EAAY1iB,WAASgC,uBAEzB0J,KAAKuW,iBAAiB/hB,cAAeuiB,EAAS/W,KAAKuW,iBAAiBxS,eAAgB,KAAM,KAAM/D,KAAKuW,iBACrGrZ,UAAO8Z,EAAWhX,KAAKuW,iBAAiB/Z,WACxCwD,KAAKuW,iBAAiB5Z,aAAeqD,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,MAClF2E,KAAKiX,WAAajX,KAAKuW,iBAAiB/hB,cAAc,OACtDwL,KAAKuW,iBAAiB/Z,UAAUjK,aAAayN,KAAKiX,WAAYjX,KAAKuW,iBAAiB/Z,UAAUjF,mBAC9FyI,KAAKkX,cAAgBlX,KAAKuW,iBAAiB/hB,cAAc,OACzDwL,KAAKuW,iBAAiB/Z,UAAUjK,aAAayN,KAAKkX,cAAe,MACjElX,KAAKmX,YAAe/lB,OAAOC,KAAKsT,GAAWrT,OAAS0O,KAAK2M,eAAmB3M,KAAK6W,aAAe7W,KAAK2M,eACrG3M,KAAKiX,WAAWjf,MAAMkN,OAAS,MAC/BlF,KAAKkX,cAAclf,MAAMkN,OAASlF,KAAKmX,YAAc,KACrDnX,KAAKoX,iBAAmB,EACxBpX,KAAKqX,oBAAsBrX,KAAKmX,YAChCnX,KAAKsX,SAAW,EAChBtX,KAAKuX,2BAETnB,EAAe/c,UAAUod,gBAAkB,SAAU3I,GAC5CA,GAUsC,IAAnC9N,KAAKuW,iBAAiBlR,UACtB+G,OAAOoL,oBAAoB,SAAUxX,KAAKyX,iBAC1CrL,OAAOoL,oBAAoB,SAAUxX,KAAK0X,YAG1CjK,eAAanS,OAAO0E,KAAKuW,iBAAiBxd,QAAS,SAAUiH,KAAK2X,mBAClElK,eAAanS,OAAO0E,KAAKuW,iBAAiBxd,QAAS,SAAUiH,KAAK4X,oBAflE5X,KAAKuW,iBAAiBlR,UACtBrF,KAAKyX,gBAAkBzX,KAAK2X,kBAAkBzP,KAAKlI,MACnDoM,OAAOyL,iBAAiB,SAAU7X,KAAKyX,kBAGvChK,eAAahW,IAAIuI,KAAKuW,iBAAiBxd,QAAS,SAAUiH,KAAK2X,kBAAmB3X,OAc9FoW,EAAe/c,UAAUue,kBAAoB,SAAU1lB,GACnD,GAAIolB,GACA3U,EAA0B3C,KAAKuW,iBAAiB/Z,UAAU1K,cAAc,IAAMsP,EAAWuB,wBACzF3R,qBAAkBgP,KAAKuW,iBAAiBuB,kBACxC9X,KAAKuW,iBAAiBwB,0BAItBT,EAFAtX,KAAKuW,iBAAiBlR,SAEX3H,KAAKsa,MAAM9lB,EAAEa,OAAOklB,gBAAgB1L,UAAYvM,KAAKuW,iBAAiBuB,iBAAmB,EAIzFpa,KAAKsa,MAAM9lB,EAAEa,OAAOwZ,UAAYvM,KAAKuW,iBAAiBuB,iBAAmB,GAEvE,GAAK9X,KAAKuW,iBAAiBuB,gBAAmB,EAC3DnV,EAAwB3K,MAAM6T,IAAM,MAGpClJ,EAAwB3K,MAAM6T,IAAM,EAAa7L,KAAKuW,iBAAiBuB,gBAAkB,MAGjG1B,EAAe/c,UAAUud,kBAAoB,SAAUsB,GACnD,GACIC,GADAjT,EAASkT,WAAWjT,aAAWnF,KAAKuW,iBAAiBrR,QAiBzD,QAdIiT,EADAnY,KAAKuW,iBAAiBlR,SACV3H,KAAKsa,MAAO5L,OAAOI,YAAcxM,KAAK2M,eAlGrC,GAqG+B,gBAAjC3M,MAAKuW,iBAAiBrR,SAAsE,IAA/ClF,KAAKuW,iBAAiBrR,OAAO5L,QAAQ,KAE7EoE,KAAKsa,MAAOhY,KAAKuW,iBAAiBxd,QAAQ6S,wBAAwB1G,OAASlF,KAAK2M,eAxGrF,KA2GKjP,KAAKsa,MAAO9S,EAASlF,KAAK2M,eA3G/B,MA8GCuL,IACZC,EAAYD,GAETC,GAEX/B,EAAe/c,UAAUke,wBAA0B,WAC/CvX,KAAKqY,WAAcC,iBAAqBC,uBAA2BC,qBAEnE,KAAK,GADDzc,GAAOiE,KAAKuW,iBAAiB5R,UACxB5O,EAAI,EAAGA,EAAIgG,EAAKzK,OAAQyE,IACzBiK,KAAKuW,iBAAiBzf,cAAgBiF,EAAKhG,GAAGiK,KAAKuW,iBAAiBzlB,OAAOwO,YAC3EU,KAAKqY,UAAUC,cAAc3lB,KAAKoD,GAGjC/E,oBAAkB+K,EAAKhG,GAAGiK,KAAKuW,iBAAiBzlB,OAAOgH,WACvDiE,EAAKhG,GAAGiK,KAAKuW,iBAAiBzlB,OAAOgH,UAErCkI,KAAKqY,UAAUE,oBAAoB5lB,KAAKoD,EAGjD,IAAIiK,KAAKgR,eAEL,IAAK,GADD7W,GAAQ6F,KAAKuW,iBAAiBxd,QAAQsC,iBAAiB,IAAM+F,EAAWK,UACnE/O,EAAQ,EAAGA,EAAQyH,EAAM7I,OAAQoB,IACtCyH,EAAMzH,GAAO+lB,QAAUzY,KAAKuW,iBAAiBmC,iBAAiBC,IAAIjmB,GAAO+lB,SAIrFrC,EAAe/c,UAAU6Q,kBAAoB,WACzC,GAAIlK,KAAKuW,iBAAiB5R,UAAUrT,OAAQ,CACxC,GAAIqT,GAAY3E,KAAKuW,iBAAiB5R,SACtC3E,MAAK2M,eAAiB3M,KAAKiX,WAAW2B,YAAYhN,wBAAwB1G,OAC1ElF,KAAKmX,YAAe/lB,OAAOC,KAAKsT,GAAWrT,OAAS0O,KAAK2M,eAAmB3M,KAAK6W,aAAe7W,KAAK2M,eACrG3M,KAAKqX,oBAAsBrX,KAAKmX,YAChCnX,KAAKkX,cAAclf,MAAMkN,OAASlF,KAAKmX,YAAc,OAG7Df,EAAe/c,UAAUwf,kBAAoB,SAAUC,GACnD,MAAO9Y,MAAKuW,iBAAiBlR,SAAciH,YAAcwM,GAAmB,EAAK,EAC5ExM,YAAcwM,EAAqB9Y,KAAKuW,iBAAiBxd,QAAQwT,UAAYuM,GAAmB,EAAK,EACrG9Y,KAAKuW,iBAAiBxd,QAAQwT,UAAYuM,GAEnD1C,EAAe/c,UAAUse,kBAAoB,SAAUzlB,GACnD,GAAIf,GACA2nB,CAEAA,GADA9Y,KAAKuW,iBAAiBlR,SACLrF,KAAKuW,iBAAiB/Z,UAAUoP,wBAAwBC,IACrEha,SAASomB,gBAAgBrM,wBAAwBC,IAGpC7L,KAAKuW,iBAAiB1Q,UAAY7F,KAAKuW,iBAAiB1Q,UAAU+F,wBAAwB1G,OAAS,EAExHlF,KAAK+Y,eAAiB/nB,oBAAkBgP,KAAK+Y,gBAAkB,EAAI/Y,KAAK+Y,cACxE,IAAI1M,GAASrM,KAAK6Y,kBAAkBC,EAKpC,IAJA9Y,KAAKoX,iBAAmBpX,KAAK2M,eAAiBjP,KAAKC,MAAM0O,EAASrM,KAAK2M,gBACvE3M,KAAKqX,oBAAsBrX,KAAKmX,YAAcnX,KAAKoX,iBACnDjmB,EAAKkb,GAAUrM,KAAKmX,aACfnX,KAAKoX,iBAAkBpX,KAAKqX,sBAAwBrX,KAAKmX,YAAa,GAAInX,KAAKoX,iBAAmBjmB,EAAG,GAAI6O,KAAKqX,oBAAsBlmB,EAAG,GACxI6O,KAAKoX,mBAAqBgB,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAG3D,GAFAlF,KAAKiX,WAAWjf,MAAMkN,OAASlF,KAAKoX,iBAAmB,KACvDpX,KAAKkX,cAAclf,MAAMkN,OAASlF,KAAKqX,oBAAsB,KACzDhL,EAASrM,KAAK+Y,gBACVzB,EAAW5Z,KAAKsa,MAAQhY,KAAKoX,iBAAmBpX,KAAK2M,eAAkB3M,KAAKsX,WAChEtX,KAAK2W,qBAAuB,EACxC3W,KAAKgZ,aAAa1B,GAAU,GAG5BtX,KAAKiZ,eAAe3B,GAAU,OAGjC,CACD,GAAIA,GAAW5Z,KAAKsa,MAAOhY,KAAKsX,SAAYtX,KAAKoX,iBAAmBpX,KAAK2M,eACrE2K,GAAYtX,KAAK2W,qBAAuB,EACxC3W,KAAKgZ,aAAa1B,GAAU,GAG5BtX,KAAKiZ,eAAe3B,GAAU,GAI1CtX,KAAKsX,SAAW5Z,KAAKsa,MAAMhY,KAAKoX,iBAAmBpX,KAAK2M,gBACN,kBAAvC3M,MAAKuW,iBAAiB7J,cAC7B1M,KAAKuW,iBAAiB7J,eAE1B1M,KAAK+Y,eAAiB1M,GAE1B+J,EAAe/c,UAAU2f,aAAe,SAAU1B,EAAU4B,GAGxD,IAAK,GAFDxmB,GAAQwmB,EAAmBlZ,KAAKyM,aAAe6K,EAAatX,KAAKyM,aAAe6K,EAChF6B,EAAWnZ,KAAKuW,iBAAiB/Z,UAAUnB,iBAAiB,MACvDtF,EAAI,EAAGA,EAAIojB,EAAS7nB,OAAQyE,IACjCiK,KAAKoZ,SAASD,EAASpjB,GAAIrD,GAC3BA,GAEJsN,MAAK8W,YAAcoC,EAAmBlZ,KAAK8W,YAAcQ,EAAatX,KAAK8W,YAAcQ,EACzFtX,KAAKyM,aAAeyM,EAAmBlZ,KAAKyM,aAAe6K,EAAatX,KAAKyM,aAAe6K,GAEhGlB,EAAe/c,UAAU4f,eAAiB,SAAU3B,EAAU4B,GAC1D,GAAIA,EACA,IAASnjB,EAAI,EAAGA,EAAIuhB,EAAUvhB,IAAK,CAC3BrD,IAAUsN,KAAK8W,WACnB9W,MAAKoZ,SAASpZ,KAAKiX,WAAWzC,mBAAoB9hB,EAAOsN,KAAKkX,eAC9DlX,KAAKyM,mBAIT,KAAK,GAAI1W,GAAI,EAAGA,EAAIuhB,EAAUvhB,IAAK,CAC/B,GAAIrD,KAAUsN,KAAKyM,aACf1Z,EAASiN,KAAKiX,WAAW2B,WAC7B5Y,MAAKoZ,SAASpZ,KAAKkX,cAAcnC,uBAAwBriB,EAAOK,GAChEiN,KAAK8W,gBAIjBV,EAAe/c,UAAUggB,gBAAkB,SAAUtgB,EAASrG,GAC1D,GAAI4mB,GAAYtZ,KAAKuW,iBAAiB5R,SAgBtC,IAfmD,gBAAxC3E,MAAKuW,iBAAiB9hB,WAAW,IACO,gBAAxCuL,MAAKuW,iBAAiB9hB,WAAW,IACxCsE,EAAQwgB,QAAQrH,IAAM5d,WAASwB,aAC/BiD,EAAQ0Z,uBAAuBrR,EAAWO,cAAc,GAAG3P,UACvDgO,KAAKuW,iBAAiB5R,UAAUjS,GAAOiF,aAI3CoB,EAAQwgB,QAAQrH,IAAOoH,EAAU5mB,GAAOsN,KAAKuW,iBAAiBzlB,OAAO+E,IAEhEyjB,EAAU5mB,GAAOsN,KAAKuW,iBAAiBzlB,OAAO+E,IAAOvB,WAASwB,aACnEiD,EAAQ0Z,uBAAuBrR,EAAWO,cAAc,GAAG3P,UAEtDsnB,EAAU5mB,GAAOsN,KAAKuW,iBAAiBzlB,OAAOyC,OAEnDyM,KAAKuW,iBAAiBpf,WAClB4B,EAAQjH,cAAc,IAAMsP,EAAWM,WACvC8C,SAAOzL,EAAQjH,cAAc,IAAMsP,EAAWM,WAE9C1B,KAAKuW,iBAAiB5R,UAAUjS,GAAOsN,KAAKuW,iBAAiBzlB,OAAOsG,UAAU,CAC9E,GAAIxD,GAAcmF,EAAQjH,cAAc,IAAMsP,EAAWxN,aACrDb,EAASiN,KAAKuW,iBAAiB/hB,cAAc,OAC7CyC,UAAWmK,EAAWM,SAAW,IAC7B1B,KAAKuW,iBAAiB5R,UAAUjS,GAAOsN,KAAKuW,iBAAiBzlB,OAAOsG,UAE5ExD,GAAYrB,aAAaQ,EAAQgG,EAAQjH,cAAc,IAAMsP,EAAWO,eAGhF,GAAI3B,KAAKuW,iBAAiBzf,cAAgBkJ,KAAKuW,iBAAiBzlB,OAAO+I,QAAS,CACvEmG,KAAKwZ,mBACNxZ,KAAKwZ,iBAAmBxZ,KAAKuW,iBAAiBxO,MAAMjW,cAAc,IAAMsP,EAAWe,iBAAiBjH,WAAU,GAE9GtH,GAAcmF,EAAQjH,cAAc,IAAMsP,EAAWxN,YACrDoM,MAAKuW,iBAAiB5R,UAAUjS,GAAOzB,SACnC8H,EAAQjH,cAAc,IAAMsP,EAAWe,mBACvCpJ,EAAQvB,UAAU8D,OAAO8F,EAAWiB,WACpCzO,EAAY4D,UAAU8D,OAAO8F,EAAWgB,UACxCoC,SAAOzL,EAAQjH,cAAc,IAAMsP,EAAWe,mBAI7CpJ,EAAQjH,cAAc,IAAMsP,EAAWe,mBACxCpJ,EAAQvB,UAAUC,IAAI2J,EAAWiB,WACjCzO,EAAY4D,UAAUC,IAAI2J,EAAWgB,UACrCxO,EAAYrB,aAAayN,KAAKwZ,iBAAiBte,WAAU,GAAOnC,EAAQjH,cAAc,IAAMsP,EAAWO,kBAKvHyU,EAAe/c,UAAUogB,wBAA0B,SAAU1gB,EAASrG,GASlE,GARAqG,EAAQvB,UAAU8D,OAAO8F,EAAWY,SAChChC,KAAKqY,UAAUE,oBAAoBjnB,SAAiE,IAAvD0O,KAAKqY,UAAUE,oBAAoBjf,QAAQ5G,IACxFqG,EAAQvB,UAAUC,IAAI2J,EAAWY,SAErCjJ,EAAQf,MAAMC,QAAU,GACpB+H,KAAKqY,UAAUG,kBAAkBlnB,SAA+D,IAArD0O,KAAKqY,UAAUG,kBAAkBlf,QAAQ5G,KACpFqG,EAAQf,MAAMC,QAAU,QAExB+H,KAAKuW,iBAAiBzf,aAAc,CACpC,GAAI4iB,GAAmB3gB,EAAQjH,cAAc,IAAMsP,EAAWe,gBAC9DpJ,GAAQvB,UAAU8D,OAAO8F,EAAW1N,UACpCqF,EAAQvB,UAAU8D,OAAO8F,EAAWG,SAChCmY,IACAA,EAAiBpO,gBAAgB,gBACjCoO,EAAiBniB,kBAAkBC,UAAU8D,OAAO8F,EAAW3N,UAE/DuM,KAAKqY,UAAUC,cAAchnB,SAA2D,IAAjD0O,KAAKqY,UAAUC,cAAchf,QAAQ5G,KAC3EsN,KAAKuW,iBAAiBxO,MAAMjW,cAAcsP,EAAW1N,YACtDqF,EAAQvB,UAAUC,IAAI2J,EAAW1N,UACjCgmB,EAAiBniB,kBAAkBC,UAAUC,IAAI2J,EAAW3N,SAC5DimB,EAAiBhiB,aAAa,eAAgB,QAC1CsI,KAAK2Z,cAAgBjnB,GACrBqG,EAAQvB,UAAUC,IAAI2J,EAAWG,cAKzCxI,GAAQvB,UAAU8D,OAAO8F,EAAW1N,UACpCqF,EAAQuS,gBAAgB,iBACnBta,oBAAkBgP,KAAK2Z,cAAgB3Z,KAAK2Z,cAAgBjnB,GAC5DsN,KAAKuW,iBAAiBxO,MAAMjW,cAAcsP,EAAW1N,YACtDqF,EAAQvB,UAAUC,IAAI2J,EAAW1N,UACjCqF,EAAQrB,aAAa,gBAAiB,QAG1CsI,MAAKuW,iBAAiBzlB,OAAO+I,UACzBmG,KAAKuW,iBAAiB5R,UAAUjS,GAAOzB,SACnC8H,EAAQvB,UAAU+B,SAAS6H,EAAWK,YACtC1I,EAAQvB,UAAU8D,OAAO8F,EAAWK,UACpC1I,EAAQrB,aAAa,OAAQ,SAC7BqB,EAAQvB,UAAUC,IAAI2J,EAAWQ,gBAIjC7I,EAAQvB,UAAU+B,SAAS6H,EAAWQ,iBACtC7I,EAAQvB,UAAU8D,OAAO8F,EAAWQ,eACpC7I,EAAQrB,aAAa,OAAQ,YAC7BqB,EAAQvB,UAAUC,IAAI2J,EAAWK,aAKjD2U,EAAe/c,UAAUugB,qBAAuB,SAAU9f,EAAIhJ,GAC1D,GAAIoS,GAAQlD,KACRkP,IAkBJ,OAjBApe,GAASkP,KAAKuW,iBAAiBvH,cAAcle,GACxCE,oBAAkBF,IACnBgJ,EAAGqV,KAAK,SAAUpT,EAAMrJ,GACpB,SAAK5B,EAAOoS,EAAMqT,iBAAiBzlB,OAAO+E,KAEtC/E,EAAOoS,EAAMqT,iBAAiBzlB,OAAO+E,OAE5BkG,EAAKmH,EAAMqT,iBAAiBzlB,OAAO+E,KAAOkG,EAAKmH,EAAMqT,iBAAiBzlB,OAAO+E,MAAQ/E,IAAWiL,KACzGmT,EAAWxc,MAAQA,EACnBwc,EAAWnT,KAAOA,GACX,KAOZmT,GAEXkH,EAAe/c,UAAUiZ,iBAAmB,WACxC,GAAIpP,GAAQlD,IACZ,KAAKhP,oBAAkBgP,KAAK2Z,cAAiB3Z,KAAKuW,iBAAiBzf,cAAgBkJ,KAAKqY,UAAUC,cAAchnB,OAAS,CACrH,GAAIuoB,MACAC,IACJ,IAAmD,gBAAxC9Z,MAAKuW,iBAAiB9hB,WAAW,IACO,gBAAxCuL,MAAKuW,iBAAiB9hB,WAAW,GAAiB,CACzD,GAAIslB,GAAc/Z,KAAKuW,iBAAiB5R,SACxC,IAAI3E,KAAKuW,iBAAiBzf,aAAc,CAEpC,IAAK,GADDkjB,GAAUha,KAAKqY,UAAUC,cACpBviB,EAAI,EAAGA,EAAIikB,EAAQ1oB,OAAQyE,IAChC8jB,EAAelnB,KAAKonB,EAAYC,EAAQjkB,IAE5C,QACIxC,KAAMsmB,EAEN9d,KAAM8d,EACNnnB,MAAOsN,KAAKqY,UAAUC,cAAc2B,IAAI,SAAUvnB,GAC9C,MAAOwQ,GAAMqT,iBAAiB9hB,WAAW6E,QAAQygB,EAAYrnB,OAKrE,OACIa,KAAMwmB,EAAY/Z,KAAK2Z,aACvB5d,KAAMge,EAAY/Z,KAAK2Z,aACvBjnB,MAAOsN,KAAKuW,iBAAiB9hB,WAAW6E,QAAQygB,EAAY/Z,KAAK2Z,eAKzE,GAAIO,GAAcla,KAAKuW,iBAAiB5R,UACpCpR,EAAOyM,KAAKuW,iBAAiBzlB,OAAOyC,IACxC,IAAIyM,KAAKuW,iBAAiBzf,aAAc,CAEpC,IAAK,GADDqjB,GAAana,KAAKqY,UAAUC,cACvBviB,EAAI,EAAGA,EAAIokB,EAAW7oB,OAAQyE,IACnC+jB,EAAennB,KAAKunB,EAAYC,EAAWpkB,IAAIxC,IAC/CsmB,EAAelnB,KAAKunB,EAAYC,EAAWpkB,IAE/C,IAAIqkB,GAAepa,KAAKuW,iBAAiB9hB,qBAAsBqG,eACzDof,EAAcla,KAAKuW,iBAAiB9hB,UAC1C,QACIlB,KAAMumB,EAEN/d,KAAM8d,EACNnnB,MAAOsN,KAAKqY,UAAUC,cAAc2B,IAAI,SAAUvnB,GAC9C,MAAO0nB,GAAa9gB,QAAQ4gB,EAAYxnB,OAKhD,GAAI+B,GAAauL,KAAKuW,iBAAiB9hB,qBAAsBqG,eACvDof,EAAcla,KAAKuW,iBAAiB9hB,UAC1C,QACIlB,KAAM2mB,EAAYla,KAAK2Z,aAAa3Z,KAAKuW,iBAAiBzlB,OAAOyC,MAEjEwI,KAAMme,EAAYla,KAAK2Z,aACvBjnB,MAAO+B,EAAW6E,QAAQ4gB,EAAYla,KAAK2Z,iBAS/DvD,EAAe/c,UAAU4Y,WAAa,SAAUd,GAC5C,GAAIkJ,GAAYra,KAAK4Z,qBAAqB5Z,KAAKuW,iBAAiB5R,UAAWwM,EAC3E,IAAI/f,OAAOC,KAAKgpB,GAAW/oB,OAAQ,CAC/B,GAAIgpB,GAAata,KAAK2Z,cAAgBU,EAAU3nB,MAC5C4M,MAAY,EAehB,IAdAU,KAAK2Z,YAAcU,EAAU3nB,MACzBsN,KAAKuW,iBAAiBzf,gBACyC,IAA3DkJ,KAAKqY,UAAUC,cAAchf,QAAQ+gB,EAAU3nB,QAC/C4M,GAAY,EACZU,KAAKqY,UAAUC,cAAc3lB,KAAK0nB,EAAU3nB,SAG5C4M,GAAY,EACZU,KAAKqY,UAAUC,cAAczd,OAAOmF,KAAKqY,UAAUC,cAAchf,QAAQ+gB,EAAU3nB,OAAQ,IAE3FsN,KAAKuW,iBAAiBxO,MAAMjW,cAAc,IAAMsP,EAAWG,UAC3DvB,KAAKuW,iBAAiBxO,MAAMjW,cAAc,IAAMsP,EAAWG,SAAS/J,UAAU8D,OAAO8F,EAAWG,UAGpGvB,KAAKuW,iBAAiB/M,sBAAsB2H,GACxCnR,KAAKuW,iBAAiBzf,aACtBkJ,KAAKuW,iBAAiB9L,cAAczK,KAAKuW,iBAAiB/M,sBAAsB2H,IAGhFnR,KAAKuW,iBAAiBzL,YAAY9K,KAAKuW,iBAAiB/M,sBAAsB2H,QAGjF,CACD,GAAIzG,OAAY,EAChB,IAAmD,gBAAxC1K,MAAKuW,iBAAiB9hB,WAAW,IACO,gBAAxCuL,MAAKuW,iBAAiB9hB,WAAW,GACxCiW,GACInX,KAAMyM,KAAKuW,iBAAiB5R,UAAU3E,KAAK2Z,aAC3C5d,KAAMiE,KAAKuW,iBAAiB5R,UAAU3E,KAAK2Z,aAC3CjnB,MAAOsN,KAAK2Z,iBAGf,CACD,GAAIhV,GAAY3E,KAAKuW,iBAAiB5R,SACtC+F,IACInX,KAAMoR,EAAU3E,KAAK2Z,aAAa3Z,KAAKuW,iBAAiBzlB,OAAOyC,MAC/DwI,KAAM4I,EAAU3E,KAAK2Z,aACrBjnB,MAAOsN,KAAK2Z,aAGhB3Z,KAAKuW,iBAAiBzf,cACtB4T,EAAUpL,UAAYA,EACtBU,KAAKuW,iBAAiBzO,QAAQ,SAAU4C,IAElC4P,IACNta,KAAKuW,iBAAiB1L,eACtB7K,KAAKuW,iBAAiBzO,QAAQ,SAAU4C,SAI3C1Z,qBAAkBmgB,KAASnR,KAAKuW,iBAAiBzf,eACtDkJ,KAAKuW,iBAAiB1L,eACtB7K,KAAK2Z,gBAAcloB,KAG3B2kB,EAAe/c,UAAU0Z,WAAa,SAAU5B,GAC5C,GAAIkJ,GAAYra,KAAK4Z,qBAAqB5Z,KAAKuW,iBAAiB5R,UAAWwM,EACvE/f,QAAOC,KAAKgpB,GAAW/oB,QACvB0O,KAAKqY,UAAUE,oBAAoB1d,OAAOmF,KAAKqY,UAAUE,oBAAoBjf,QAAQ+gB,EAAU3nB,OAAQ,IAG/G0jB,EAAe/c,UAAU4Z,YAAc,SAAU9B,GAC7C,GAAIkJ,GAAYra,KAAK4Z,qBAAqB5Z,KAAKuW,iBAAiB5R,UAAWwM,EACvE/f,QAAOC,KAAKgpB,GAAW/oB,SAA2E,IAAjE0O,KAAKqY,UAAUE,oBAAoBjf,QAAQ+gB,EAAU3nB,QACtFsN,KAAKqY,UAAUE,oBAAoB5lB,KAAK0nB,EAAU3nB,QAG1D0jB,EAAe/c,UAAU8Z,SAAW,SAAUhC,GAC1C,GAAIkJ,GAAYra,KAAK4Z,qBAAqB5Z,KAAKuW,iBAAiB5R,UAAWwM,EACvE/f,QAAOC,KAAKgpB,GAAW/oB,QACvB0O,KAAKqY,UAAUG,kBAAkB3d,OAAOmF,KAAKqY,UAAUG,kBAAkBlf,QAAQ+gB,EAAU3nB,OAAQ,IAG3G0jB,EAAe/c,UAAUga,SAAW,SAAUlC,GAC1C,GAAIkJ,GAAYra,KAAK4Z,qBAAqB5Z,KAAKuW,iBAAiB5R,UAAWwM,EACvE/f,QAAOC,KAAKgpB,GAAW/oB,SAAyE,IAA/D0O,KAAKqY,UAAUG,kBAAkBlf,QAAQ+gB,EAAU3nB,QACpFsN,KAAKqY,UAAUG,kBAAkB7lB,KAAK0nB,EAAU3nB,QAGxD0jB,EAAe/c,UAAUob,WAAa,SAAUtD,GAC5C,GAAI1c,GACAkQ,EAAY3E,KAAKuW,iBAAiB5R,UAClC0V,EAAYra,KAAK4Z,qBAAqBjV,EAAWwM,EACjD/f,QAAOC,KAAKgpB,GAAW/oB,SACvBmD,EAAa4lB,EAAUte,KACnB4I,EAAU0V,EAAU3nB,MAAQ,IAC5BiS,EAAU0V,EAAU3nB,MAAQ,GAAGzB,UAET,IADrB0T,EAAU0V,EAAU3nB,MAAQ,GACxByH,MAAM7I,QACX0O,KAAKua,aAAaF,EAAU3nB,MAAQ,GACpCsN,KAAKua,aAAaF,EAAU3nB,MAAQ,IAGpCsN,KAAKua,aAAaF,EAAU3nB,OAGpC,IAAIgiB,GAAiB1U,KAAKuW,iBAAiB9hB,qBAAsBqG,eAC3DkF,KAAKuW,iBAAiB7H,UAAY1O,KAAKuW,iBAAiB9hB,WAC1D/B,EAAQgiB,EAAepb,QAAQ7E,IACpB,IAAX/B,IACAgiB,EAAe7Z,OAAOnI,EAAO,GAC7BsN,KAAKuW,iBAAiB9G,kBAAkBiF,IAG5C1U,KAAKuW,iBAAiB5Z,aAClBqD,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,OAGrD+a,EAAe/c,UAAUoR,cAAgB,SAAUtX,EAAIjB,GACnD,GAAIQ,GAAQ0G,MAAMC,UAAUC,QAAQxG,KAAKkN,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,MAAOlI,GAAM6M,KAAKyM,YACxGzM,MAAK2Z,YAAcvgB,MAAMC,UAAUC,QAAQxG,KAAKkN,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,MAAOlI,GAAM6M,KAAKyM,aAC3GtZ,EAAGqE,UAAU+B,SAAS6H,EAAW1N,WACoB,IAAjDsM,KAAKqY,UAAUC,cAAchf,QAAQ5G,IACrCsN,KAAKqY,UAAUC,cAAc3lB,KAAKD,GAItCsN,KAAKqY,UAAUC,cAAczd,OAAOmF,KAAKqY,UAAUC,cAAchf,QAAQ5G,GAAQ,IAIzF0jB,EAAe/c,UAAUyR,YAAc,SAAU3X,EAAIjB,GACjD8N,KAAK2Z,YAAcvgB,MAAMC,UAAUC,QAAQxG,KAAKkN,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,MAAOlI,GAAM6M,KAAKyM,cAEnH2J,EAAe/c,UAAU0Q,YAAc,SAAUtW,GAC7C,GAAIA,EAAS,CACTuM,KAAKqY,UAAUC,iBACftY,KAAK2Z,gBAAcloB,EAEnB,KAAK,GADDsK,GAAOiE,KAAKuW,iBAAiB5R,UACxBjS,EAAQ,EAAGA,EAAQqJ,EAAKzK,OAAQoB,IAChCqJ,EAAKrJ,GAAOzB,UACb+O,KAAKqY,UAAUC,cAAc3lB,KAAKD,OAK1CsN,MAAK2Z,gBAAcloB,GACnBuO,KAAKqY,UAAUC,kBAGvBlC,EAAe/c,UAAUmhB,UAAY,SAAU9nB,GAK3C,GAAI4mB,GAAYtZ,KAAKuW,iBAAiB5R,SAYtC,IAXA3E,KAAKya,gBAAgB/nB,GAAO,GACxBsN,KAAK2Z,aAAe3Z,KAAK2Z,aAAejnB,GACxCsN,KAAK2Z,cAEL3Z,KAAKuW,iBAAiBzf,cACtBwiB,EAAU5mB,GAAOsN,KAAKuW,iBAAiBzlB,OAAOwO,YAC9CU,KAAKqY,UAAUC,cAAc3lB,KAAKD,GAEjC0lB,WAAWpY,KAAKkX,cAAclf,MAAMkN,SAAYkT,WAAWpY,KAAKiX,WAAWjf,MAAMkN,UAClFlF,KAAKkX,cAAclf,MAAMkN,OAASkT,WAAWpY,KAAKkX,cAAclf,MAAMkN,QAAUlF,KAAK2M,eAAiB,MAEtGyL,WAAWpY,KAAKkX,cAAclf,MAAMkN,QAAS,CACzCwV,EAAS1a,KAAKuW,iBAAiBxO,MAAMqB,iBAAiBuR,iBACtD5nB,EAASiN,KAAKuW,iBAAiB/M,sBAAsB8P,EAAU5mB,EAAQ,KACvEsN,KAAKuW,iBAAiB/M,sBAAsB8P,EAAU5mB,EAAQ,OAE9DsN,KAAKkX,cAAclf,MAAMkN,OAASkT,WAAWpY,KAAKkX,cAAclf,MAAMkN,QAAUlF,KAAK2M,eAAiB,KACtG3M,KAAKoZ,SAASsB,EAAQhoB,EAAOK,QAGhC,CACD,GAAI2nB,GAAS1a,KAAKuW,iBAAiBxO,MAAMxQ,kBAAkBqhB,YACvD7lB,MAAS,EAETA,GADC3B,OAAOC,KAAK2O,KAAKuW,iBAAiB5R,WAAWrT,OAAS,IAAOoB,EACrDsN,KAAKuW,iBAAiBxO,MAAMqB,iBAG5BpJ,KAAKuW,iBAAiB/M,sBAAsB8P,EAAU5mB,EAAQ,KACnEsN,KAAKuW,iBAAiB/M,sBAAsB8P,EAAU5mB,EAAQ,IAEtEsN,KAAKiX,WAAWjf,MAAMkN,OAASkT,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAAUlF,KAAK2M,eAAiB,KAChG3M,KAAKyM,eACLzM,KAAK8W,cACD/jB,IACAiN,KAAKoZ,SAASsB,EAAQhoB,EAAOK,IACU,IAAnCiN,KAAKuW,iBAAiBlR,SACtB+G,OAAOwO,SAAS,EAAItO,YAActM,KAAK2M,gBAGvC3M,KAAKuW,iBAAiBxd,QAAQwT,WAAavM,KAAK2M,gBAI5D3M,KAAKmX,aAAenX,KAAK2M,eACzB3M,KAAKsX,SAAW5Z,KAAKsa,MAAMI,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAAUlF,KAAK2M,iBAE/EyJ,EAAe/c,UAAUkhB,aAAe,SAAU7nB,GAC9CsN,KAAKmX,aAAenX,KAAK2M,cACzB,IAAIhI,GAAY3E,KAAKuW,iBAAiB5R,UAAUjS,GAC5CgoB,EAAS1a,KAAKuW,iBAAiB/M,sBAAsB7E,EAKzD,IAJA3E,KAAKuW,iBAAiB5R,UAAU9J,OAAOnI,EAAO,GAC1CsN,KAAK2Z,aAAe3Z,KAAK2Z,aAAejnB,GACxCsN,KAAK2Z,cAELe,EACA,GAAI1a,KAAK6W,aAAezlB,OAAOC,KAAK2O,KAAKuW,iBAAiB5R,WAAWrT,OACjEkT,SAAOkW,GACP1a,KAAK6W,eACL7W,KAAK8W,cACL9W,KAAKmX,YAAc,MAElB,CASD,GARIuD,EAAOljB,UAAU+B,SAAS6H,EAAWY,WACrC0Y,EAAOljB,UAAU8D,OAAO8F,EAAWY,SACnChC,KAAKqY,UAAUE,oBAAoB1d,OAAOmF,KAAKqY,UAAUE,oBAAoBjf,QAAQ5G,GAAQ,IAEpE,SAAzBgoB,EAAO1iB,MAAMC,UACbyiB,EAAO1iB,MAAMC,QAAU,GACvB+H,KAAKqY,UAAUG,kBAAkB3d,OAAOmF,KAAKqY,UAAUG,kBAAkBlf,QAAQ5G,GAAQ,IAEzFsN,KAAKuW,iBAAiBzf,cAAgB4jB,EAAOljB,UAAU+B,SAAS6H,EAAW1N,UAAW,CACtFsM,KAAKuW,iBAAiB1L,eACtB7K,KAAKqY,UAAUC,cAAczd,OAAOmF,KAAKqY,UAAUC,cAAchf,QAAQ5G,GAAQ,EACjF,IAAIgnB,GAAmBgB,EAAO5oB,cAAc,IAAMsP,EAAWe,gBAC7DuX,GAAiBpO,gBAAgB,gBACjCoO,EAAiBniB,kBAAkBC,UAAU8D,OAAO8F,EAAW3N,SAC3DinB,EAAOljB,UAAU+B,SAAS6H,EAAWG,WACrCmZ,EAAOljB,UAAU8D,OAAO8F,EAAWG,SACnCvB,KAAK2Z,gBAAcloB,QAGlBipB,GAAOljB,UAAU+B,SAAS6H,EAAW1N,YAC1CsM,KAAKuW,iBAAiB1L,eACtB7K,KAAK2Z,gBAAcloB,GAElB2mB,YAAWpY,KAAKkX,cAAclf,MAAMkN,SAAYkT,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAG7EkT,WAAWpY,KAAKkX,cAAclf,MAAMkN,SACzClF,KAAKkX,cAAclf,MAAMkN,OAASkT,WAAWpY,KAAKkX,cAAclf,MAAMkN,QAAUlF,KAAK2M,eAAiB,KACtG3M,KAAKoZ,SAASsB,EAAQ1a,KAAK8W,YAAa9W,KAAKkX,iBAG7ClX,KAAKiX,WAAWjf,MAAMkN,OAASkT,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAAUlF,KAAK2M,eAAiB,KAChG3M,KAAKoZ,SAASsB,EAAS1a,KAAKyM,aAAe,EAAIzM,KAAKiX,WAAW2B,aAC/D5Y,KAAK8W,cACL9W,KAAKyM,gBAVLzM,KAAKoZ,SAASsB,EAAQ1a,KAAK8W,YAAa9W,KAAKkX,eAczDlX,KAAKya,gBAAgB/nB,GAAO,GAC5BsN,KAAKsX,SAAW5Z,KAAKsa,MAAMI,WAAWpY,KAAKiX,WAAWjf,MAAMkN,QAAUlF,KAAK2M,iBAE/EyJ,EAAe/c,UAAUohB,gBAAkB,SAAU/nB,EAAOmoB,GAExD,IAAK,GADDxpB,GAAOD,OAAOC,KAAK2O,KAAKqY,WACnByC,EAAM,EAAGA,EAAMzpB,EAAKC,OAAQwpB,IACjC9a,KAAKqY,UAAUhnB,EAAKypB,IAAQ9a,KAAKqY,UAAUhnB,EAAKypB,IAAMb,IAAI,SAAUlkB,GAChE,MAAIA,IAAKrD,EACEmoB,IAAc9kB,IAAMA,EAGpBA,KAKvBqgB,EAAe/c,UAAUka,QAAU,SAAUxX,EAAMjL,EAAQ2D,GACvD,IAAK,GAAIsB,GAAI,EAAGA,EAAIgG,EAAKzK,OAAQyE,IAAK,CAClC,GAAIqe,GAAcrY,EAAKhG,EAMvB,IAJAtB,EAAW9B,KAAKyhB,GAEhBpU,KAAKuW,iBAAiB9G,kBAAkBhb,GAEnCuL,KAAK6W,aAUL,GAAI7W,KAAK6W,aAAe7W,KAAK2W,sBAE9B,GADS3W,KAAKuW,iBAAiBzH,eAAera,EAAY3D,YACxCsI,OAAO,CACrB,GAAI4G,KAAKuW,iBAAiB/Z,UAAW,CAC7B9J,EAAQsN,KAAKuW,iBAAiB5R,UAAUrL,QAAQ8a,EAEpDpU,MAAK+a,uBAAuB3G,EAAa1hB,IAErCiS,EAAY3E,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,KACvCiS,EAAU1T,UAAuC,IAA3B0T,EAAUxK,MAAM7I,WAEjDoB,EAEFsN,KAAK+a,uBAAuBpW,EAAWjS,IAI/CsN,KAAKuW,iBAAiB5Z,aAClBqD,KAAKuW,iBAAiBxO,MAAM1M,iBAAiB,WAGpD,CACD,GAAI3I,GAAQsN,KAAKuW,iBAAiB5R,UAAUrL,QAAQ8a,EAEpDpU,MAAKwa,UAAU9nB,EAEf,IAAIiS,GAAY3E,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,EACpDiS,IAAaA,EAAU1T,UAAuC,IAA3B0T,EAAUxK,MAAM7I,QACnD0O,KAAKwa,UAAU9nB,EAAQ,QApCtBsN,KAAKuW,iBAAiB3kB,WAAYoO,KAAKuW,iBAAiBnZ,eAAmB4C,KAAKgR,iBACjFhR,KAAKuW,iBAAiBxS,eAAenS,SAAW,KAChDoO,KAAKuW,iBAAiBxS,eAAe3G,cAAgB,KACrD4C,KAAKuW,iBAAiBxS,eAAe3N,YAAc4J,KAAKiR,aAAa/I,KAAKlI,OAE9EA,KAAKkR,qBAoCjBkF,EAAe/c,UAAU0hB,uBAAyB,SAAUC,EAAUtoB,GAElE,GAAIK,GACAI,EAAKmB,WAASgC,uBAAuB0J,KAAKuW,iBAAiB/hB,eAE9DwmB,GAAWhb,KAAKuW,iBAAiBxS,eAAgB,KAAM,KAAM/D,KAAKuW,iBAUnE,IAPIxjB,EADC3B,OAAOC,KAAK2O,KAAKuW,iBAAiB5R,WAAWrT,OAAS,IAAOoB,EACrDsN,KAAKuW,iBAAiBxO,MAAMqB,iBAI5BpJ,KAAKuW,iBAAiB/M,sBAAsBxJ,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,KACzFsN,KAAKuW,iBAAiB/M,sBAAsBxJ,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,IAExFsN,KAAKuW,iBAAiBzlB,OAAO+I,SAAWmG,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,IAAMsN,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,GAAGzB,SAAU,CAC3I,GAAIsjB,GAAYvU,KAAKuW,iBAAiB/M,sBAAsBxJ,KAAKuW,iBAAiB5R,UAAUjS,EAAQ,GAChG6hB,KACAxhB,EAASwhB,EAAUC,oBAI3BxU,KAAKuW,iBAAiB/Z,UAAUjK,aAAaY,EAAG,GAAIJ,GAEpDiN,KAAK6W,eACD7W,KAAKqX,qBAAuB,GAC5BrX,KAAK8W,cAGT9W,KAAKkK,qBAETkM,EAAe/c,UAAU4X,aAAe,SAAUpI,GAC9C,GAAIoS,GAAkBjb,KAAKuW,iBAAiB3kB,SACxCA,EAAWoO,KAAKuW,iBAAiB/hB,cAAc,OAC/C0mB,EAAiB,iFACiBlb,KAAKuW,iBAAiBzlB,OAAOyC,KAAO,iBAI1E,IAHIyM,KAAKuW,iBAAiB/P,UACtB0U,EAAiB,MAEjBlb,KAAKuW,iBAAiBzf,aAAc,CAGpC,GADAkJ,KAAKuW,iBAAiBtO,eAAeY,IAC/B7X,oBAAkBgP,KAAKuW,iBAAiBpN,mBACxCnY,oBAAkBgP,KAAKuW,iBAAiBpN,gBAAgB/C,WAAa,CACvE,GAAI+U,GAAMtpB,SAAS2C,cAAc,MACjC2mB,GAAInpB,UAAYgO,KAAKuW,iBAAiB3kB,UAAYspB,EAC9CC,EAAIvoB,UAAYuoB,EAAIvoB,SAAS,KAC7BuoB,EAAIvoB,SAAS,GAAG4E,UAAUC,IAAI,cACiB,SAA3CuI,KAAKuW,iBAAiBrN,iBACtBiS,EAAIvoB,SAAS,GAAG4E,UAAUC,IAAI,mBAG9B0jB,EAAIvoB,SAAS,GAAG4E,UAAUC,IAAI,oBAEa,SAA3CuI,KAAKuW,iBAAiBrN,iBACtBiS,EAAIvoB,SAAS,GAAGL,aAAayN,KAAKuW,iBAAiBpN,gBAAiBgS,EAAI1f,WAAW,GAAG7I,SAAS,IAG/FuoB,EAAIvoB,SAAS,GAAGI,YAAYgN,KAAKuW,iBAAiBpN,iBAEtDnJ,KAAKuW,iBAAiB3kB,SAAWupB,EAAInpB,WAG7CJ,EAASI,UAAYgO,KAAKuW,iBAAiB3kB,SAC3CoO,KAAKuW,iBAAiB3kB,SAAWqpB,MAGjCrpB,GAASI,UAAYgO,KAAKuW,iBAAiB3kB,UAAYspB,CAG3D,IAAIE,GAAmBxpB,EAASypB,qBAAqB,KACjDje,EAAgB4C,KAAKuW,iBAAiB/hB,cAAc,MACpDwL,MAAKuW,iBAAiBzlB,OAAO+I,UAC7BuD,EAAcpL,UAAYgO,KAAKuW,iBAAiBnZ,eAAiB8d,EAGrE,IAAII,GAAwBle,EAAcie,qBAAqB,IAC3DxS,GAAK5S,QAAQhF,WACb+O,KAAKvC,WAAaoL,EAAK5S,SAE3B+J,KAAKub,aAAe1S,EAAK5S,QAAQhF,SAAW4X,EAAK5S,QAAQkE,MAAM,GAC3D0O,EAAK5S,UACJ+J,KAAKuW,iBAAiB/P,SAAqD,gBAAlCxG,MAAKuW,iBAAiB3kB,WAAyBiX,EAAKxS,KAAKmB,UAAU+B,SAAS,sBACvE,gBAAvCyG,MAAKuW,iBAAiBnZ,eAA6ByL,EAAKxS,KAAKmB,UAAU+B,SAAS,wBACxFsP,EAAKxS,KAAKrE,UAAY,IAE1B6W,EAAKxS,KAAKoiB,SAAY1c,KAAM8M,EAAK5S,QAASulB,OAASC,qBAAuBC,uBAC1E,KAAS3lB,EAAI,EAAGA,EAAIqlB,EAAiB9pB,OAAQyE,IACzCiK,KAAKrO,gBAAgBypB,EAAiBrlB,GAAI8S,EAAKxS,MAAM,EAEzD,KAAK,GAAIN,GAAI,EAAGA,EAAIulB,EAAsBhqB,OAAQyE,IAC9CiK,KAAKrO,gBAAgB2pB,EAAsBvlB,GAAI8S,EAAKxS,MAAM,EAE9DwS,GAAKxS,KAAKoiB,QAAQ7mB,SAAWiX,EAAK5S,QAAQhF,SAAWW,EAAS2F,kBAC1D6F,EAAc7F,kBAClBsR,EAAKxS,KAAKoiB,QAAQvjB,KAAO2T,EAAK5S,QAAQhF,SAAW,WAAa,WAC9D,IAAI8H,GAAU8P,EAAK5S,QAAQhF,SAAWmM,EAAgBxL,CAClDmH,GAAQxB,mBACRsR,EAAKxS,KAAK9D,aAAawG,EAAQxB,kBAAmB,OAG1D6e,EAAe/c,UAAU1H,gBAAkB,SAAUoH,EAAS1C,EAAMpF,GAChE+O,KAAK2b,aAAa5iB,EAAS1C,EAAMpF,GACjC+O,KAAK4b,cAAc7iB,EAAS1C,EAAMpF,GAClC+O,KAAK6b,kBAAkB9iB,EAAS1C,EAAMpF,IAE1CmlB,EAAe/c,UAAUyiB,SAAW,SAAUC,EAASC,GACnDA,EAAYvD,QAAQ1c,KAAOggB,CAE3B,IAAIL,GAAqBM,EAAYvD,QAAQ+C,MAAME,mBAE/CD,EAAoBO,EAAYvD,QAAQ+C,MAAMC,iBAElD,KAAKzqB,oBAAkB+qB,EAAQ9qB,WAAa8qB,EAAQ9qB,UAAyC,cAA7B+qB,EAAYvD,QAAQvjB,KAAsB,CAElG6D,EAAUijB,EAAYzkB,iBAC1BiN,UAAOwX,EAAYzkB,mBACnBykB,EAAYzpB,aAAaypB,EAAYvD,QAAQ7mB,SAAU,MACvDoqB,EAAYvD,QAAQ7mB,SAAWmH,EAC/BijB,EAAYvD,QAAQvjB,KAAO,UAC3B,KAASa,EAAI,EAAGA,EAAI2lB,EAAmBpqB,OAAQyE,IAE3C2lB,EAAmB3lB,GAAG+lB,SAASC,OAGlC,IAAKA,EAAQ9qB,UAAyC,aAA7B+qB,EAAYvD,QAAQvjB,KAW7C,GAAK6mB,EAAQ9qB,SAOd,IAAS8E,EAAI,EAAGA,EAAI2lB,EAAmBpqB,OAAQyE,IAE3C2lB,EAAmB3lB,GAAG+lB,SAASC,OARnC,KAAShmB,EAAI,EAAGA,EAAI0lB,EAAkBnqB,OAAQyE,IAE1C0lB,EAAkB1lB,GAAG+lB,SAASC,OAdiC,CACnE,GAAIhjB,GAAUijB,EAAYzkB,iBAC1BiN,UAAOwX,EAAYzkB,mBACnBykB,EAAYzpB,aAAaypB,EAAYvD,QAAQ7mB,SAAU,MACvDoqB,EAAYvD,QAAQ7mB,SAAWmH,EAC/BijB,EAAYvD,QAAQvjB,KAAO,WAC3B,KAAK,GAAIa,GAAI,EAAGA,EAAI0lB,EAAkBnqB,OAAQyE,IAE1C0lB,EAAkB1lB,GAAG+lB,SAASC,KAiB1C3F,EAAe/c,UAAU4iB,kBAAoB,SAAUD,EAAaE,EAAMjrB,GAClEA,EACA+qB,EAAYvD,QAAQ+C,MAAME,mBAAmB/oB,KAAKupB,GAGlDF,EAAYvD,QAAQ+C,MAAMC,kBAAkB9oB,KAAKupB,IAGzD9F,EAAe/c,UAAUuiB,cAAgB,SAAU7iB,EAASijB,EAAa/qB,GAIrE,IAHA,GAEIkrB,GAFAC,EAAQ,GAAIC,QAAO,eAAgB,KACnCC,KAEkB,OAAfH,GAAqB,CACxB,GAAIngB,GAAQogB,EAAMG,KAAKxjB,EAAQ9B,UAC/BqlB,GAAgB3pB,KAAKqJ,GAEF,QADnBmgB,EAAangB,IAETsgB,EAAgBxK,MAGxB,GAAIwK,GAAmBA,EAAgBhrB,OAyCnC,IAAK,GADDkrB,GAASxc,KACJjK,EAAI,EAAGA,EAAIumB,EAAgBhrB,OAAQyE,KAxC9B,SAAUA,GACpB,GAEI0mB,GAFAC,EAAiBJ,EAAgBvmB,EAKjC0mB,IAFoC,IAApCC,EAAe,GAAGpjB,QAAQ,OAAmD,IAApCojB,EAAe,GAAGpjB,QAAQ,KAEnD,GAAIqjB,UAAS,OAAQ,UAAYD,EAAe,GAAGE,QAAQ,MAAO,UAIlE,GAAID,UAAS,OAAQ,eAAsBD,EAAe,GAG9E,IAAIG,KAEAA,GAAQC,YAAcL,EADtBxrB,EACoCurB,EAAO/e,WAGP+e,EAAOjB,cAE/CsB,EAAQf,SAAW,SAAUtqB,GACrBqrB,EAAQC,aACR7X,eAAalM,GAAU8jB,EAAQC,YAAY3gB,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,KAEzF,IAAI+X,GAASN,EAAcjrB,EACvBurB,IACApkB,YAAUI,GAAU,EAASoD,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,MAE3E6X,EAAQC,YAAcC,EAG1B,KAAK,GADD9lB,GAAYylB,EAAe,GAAGvgB,MAAM,KAC/BT,EAAM,EAAGA,EAAMzE,EAAU3F,OAAQoK,IACtC3C,EAAQvB,UAAU8D,OAAOrE,EAAUyE,GAEnCmhB,GAAQC,aACRnkB,YAAUI,GAAU8jB,EAAQC,YAAY3gB,MAAM,KAAK4I,OAAO,SAAUC,GAAO,MAAOA,MAEtFwX,EAAOP,kBAAkBD,EAAaa,EAAS5rB,IAIvC8E,IAIpBqgB,EAAe/c,UAAUwiB,kBAAoB,SAAU9iB,EAASijB,EAAa/qB,GAEzE,IAAK,GADD+rB,MACKjnB,EAAI,EAAGA,EAAIgD,EAAQqD,WAAW9K,OAAQyE,IAC3CinB,EAAerqB,KAAKoG,EAAQqD,WAAWrG,GAAGsG,WAEL,IAArC2gB,EAAe1jB,QAAQ,UACvB0jB,EAAeniB,OAAOmiB,EAAe1jB,QAAQ,SAAU,EAuD3D,KAAK,GADD2jB,GAASjd,KACJjK,EAAI,EAAGA,EAAIinB,EAAe1rB,OAAQyE,KArD7B,SAAUA,GACpB,GAKImnB,GAEAC,EAPAC,EAAgBJ,EAAejnB,GAC/BsnB,EAAgB,GAAIhB,QAAO,eAAgB,KAAKE,KAAKa,OACrDE,EAAiB,GAAIjB,QAAO,eAAgB,KAAKE,KAAKxjB,EAAQ6X,aAAawM,OAM/E,IAAIC,EAAc/rB,QAAUgsB,EAAehsB,OAAQ,CAC3C+rB,EAAc,KAEdH,EAAwB,GAAIP,UAAS,OAAQ,eAAsBU,EAAc,KAEjFC,EAAe,KAGXH,GAFoC,IAApCG,EAAe,GAAGhkB,QAAQ,OAAmD,IAApCgkB,EAAe,GAAGhkB,QAAQ,KAE1C,GAAIqjB,UAAS,OAAQ,UAAYW,EAAe,GAAGV,QAAQ,MAAO,UAIlE,GAAID,UAAS,OAAQ,eAAsBW,EAAe,IAI3F,IAAIC,KAEAA,GAAUT,YADV7rB,OAC8CQ,KAArB4rB,EAAc,OAAmB5rB,GAAYyrB,EAAsBD,EAAOxf,gBACzEhM,KAAtB6rB,EAAe,OAAmB7rB,GAAY0rB,EAAuBF,EAAOxf,kBAGlChM,KAArB4rB,EAAc,OAAmB5rB,GAAYyrB,EAAsBD,EAAO1B,kBACzE9pB,KAAtB6rB,EAAe,OAAmB7rB,GAAY0rB,EAAuBF,EAAO1B,eAEpFgC,EAAUC,aAAwC/rB,KAA7B8rB,EAAUT,YAAY,GACvCM,EAAgBG,EAAUT,YAAY,GAC1CS,EAAUzB,SAAW,SAAUtqB,GAC3B,GAAIsrB,OAA2CrrB,KAA7B8rB,EAAUT,YAAY,GACpC/jB,EAAQ6X,aAAa2M,EAAUC,UAAYL,EAAuB3rB,EACtEuH,GAAQuS,gBAAgBiS,EAAUC,UAClCD,EAAUC,aAAwC/rB,KAA7B8rB,EAAUT,YAAY,GAAmBS,EAAUC,SAAWN,EAAsB1rB,GACzGuH,EAAQrB,aAAa6lB,EAAUC,SAAUV,GACzCS,EAAUT,iBAA4CrrB,KAA7B8rB,EAAUT,YAAY,OAAmBrrB,GAAYyrB,EAAsB1rB,OACnEC,KAA7B8rB,EAAUT,YAAY,OAAmBrrB,GAAY0rB,EAAuB3rB,IAEpF,IAAIisB,OAA8ChsB,KAA7B8rB,EAAUT,YAAY,GAAmB/jB,EAAQ6X,aAAawM,GAC/EG,EAAUT,YAAY,EAC1B/jB,GAAQuS,gBAAgB8R,GACxBrkB,EAAQrB,aAAa6lB,EAAUC,SAAUC,GACzCR,EAAOhB,kBAAkBD,EAAauB,EAAWtsB,KAK7C8E,IAGhBqgB,EAAe/c,UAAUsiB,aAAe,SAAU5iB,EAASijB,EAAa/qB,GAIpE,IAHA,GAEIkrB,GAFAC,EAAQ,GAAIC,QAAO,eAAgB,KACnCC,KAEkB,OAAfH,GAAqB,CACxB,GAAIngB,GAAQogB,EAAMG,KAAKxjB,EAAQ6D,UAC/B0f,GAAgB3pB,KAAKqJ,GAEF,QADnBmgB,EAAangB,IAETsgB,EAAgBxK,MAGxB,GAAI4L,GAAwBtkB,MAAMC,UAAU8V,KAAKrc,KAAKiG,EAAQnG,SAAU,SAAUmG,GAC9E,QAAI,GAAIsjB,QAAO,eAAgB,KAAKE,KAAKxjB,EAAQ6D,YAOrD,IAAI0f,GAAmBA,EAAgBhrB,SAAWosB,EA6B9C,IAAK,GADDC,GAAS3d,KACJjK,EAAI,EAAGA,EAAIumB,EAAgBhrB,OAAQyE,KA5B9B,SAAUA,GACpB,GAII6nB,GAJAC,EAAoBvB,EAAgBvmB,GAEpC8mB,IAKAe,IAFuC,IAAvCC,EAAkB,GAAGvkB,QAAQ,OAAsD,IAAvCukB,EAAkB,GAAGvkB,QAAQ,KAE1D,GAAIqjB,UAAS,OAAQ,UAAYkB,EAAkB,GAAGjB,QAAQ,MAAO,UAIrE,GAAID,UAAS,OAAQ,eAAsBkB,EAAkB,IAG5EhB,EAAQC,YAAcc,EADtB3sB,EACmC0sB,EAAOlgB,WAGPkgB,EAAOpC,cAE9CsB,EAAQf,SAAW,SAAUtqB,GACzBuH,EAAQ6D,UAAY7D,EAAQ6D,UAAUggB,QAAQC,EAAQC,YAAac,EAAapsB,IAChFqrB,EAAQC,YAAcc,EAAapsB,IAEvCuH,EAAQ6D,UAAY7D,EAAQ6D,UAAUggB,QAAQiB,EAAkB,GAAIhB,EAAQC,aAC5Ea,EAAO1B,kBAAkBD,EAAaa,EAAS5rB,IAIvC8E,IAIpBqgB,EAAe/c,UAAU8K,yBAA2B,WAChDnE,KAAKyW,iBAAgB,GACjBzW,KAAKuW,iBAAiBhS,kBACtBC,SAAOxE,KAAKuW,iBAAiBhS,kBAEjCvE,KAAKuW,iBAAiBvO,YAGtBhI,KAAK6W,aAAe,EACpB7W,KAAKuW,iBAAiB/Y,SACtBwC,KAAKuW,iBAAiBtG,gBAE1BmG,EAAe/c,UAAU+f,SAAW,SAAUrgB,EAASrG,EAAOorB,GAE1D,GAAIhC,GAAW9b,KAAKgR,eAAiBhR,KAAK+d,WAAa/d,KAAK8b,QAC5D,IAAI9b,KAAKuW,iBAAiB3kB,UAAYoO,KAAKuW,iBAAiBnZ,cAAe,CACvE,GAAIuH,GAAY3E,KAAKuW,iBAAiB5R,UAAUjS,EAEhDqG,GAAQwgB,QAAQrH,IAAOvN,EAAU3E,KAAKuW,iBAAiBzlB,OAAO+E,IAEzD8O,EAAU3E,KAAKuW,iBAAiBzlB,OAAO+E,IAAOvB,WAASwB,aAC5DgmB,EAASnX,EAAW5L,EAASiH,UAG7BA,MAAKqZ,gBAAgBtgB,EAASrG,EAElCsN,MAAKyZ,wBAAwB1gB,EAASrG,GAClCorB,GACA9d,KAAKuW,iBAAiB/Z,UAAUjK,aAAawG,EAAS+kB,IAG9D1H,EAAe/c,UAAU0kB,WAAa,SAAUhC,EAASC,EAAagC,GAKlE,IAFA,GACIC,GADmBlsB,UAAQisB,EAAYzH,iBAAiB3kB,UACvBmqB,GAC9BC,EAAYkC,WACflC,EAAYjR,YAAYiR,EAAYkC,UAExClC,GAAYhpB,YAAYirB,EAAc,KAE1C7H,EAAe/c,UAAUqc,cAAgB,WACrC,MAAO,kBAEXU,EAAe/c,UAAUyU,QAAU,WAC/B9N,KAAKyW,iBAAgB,IAElBL,KF7lCP5W,EAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBrO,OAAOwO,iBAChBC,uBAA2BzG,QAAS,SAAUsG,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIG,KAAKH,GAAOA,EAAEhJ,eAAemJ,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASI,KAAOC,KAAKC,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAErG,UAAkB,OAANsG,EAAavO,OAAO8O,OAAOP,IAAMI,EAAG1G,UAAYsG,EAAEtG,UAAW,GAAI0G,QAGnFI,EAA0C,SAAUC,EAAYrN,EAAQsH,EAAKgG,GAC7E,GAA2HX,GAAvHY,EAAIC,UAAUjP,OAAQkP,EAAIF,EAAI,EAAIvN,EAAkB,OAATsN,EAAgBA,EAAOjP,OAAOqP,yBAAyB1N,EAAQsH,GAAOgG,CACrH,IAAuB,gBAAZK,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrN,EAAQsH,EAAKgG,OACpH,KAAK,GAAItK,GAAIqK,EAAW9O,OAAS,EAAGyE,GAAK,EAAGA,KAAS2J,EAAIU,EAAWrK,MAAIyK,GAAKF,EAAI,EAAIZ,EAAEc,GAAKF,EAAI,EAAIZ,EAAE3M,EAAQsH,EAAKmG,GAAKd,EAAE3M,EAAQsH,KAASmG,EAChJ,OAAOF,GAAI,GAAKE,GAAKpP,OAAOwP,eAAe7N,EAAQsH,EAAKmG,GAAIA,GAsB5D2d,EAA0B,SAAUtb,GAGpC,QAASsb,GAASplB,EAASrE,GACvB,GAAIwO,GAAQL,EAAO/P,KAAKkN,KAAMtL,EAASqE,IAAYiH,IAqLnD,OAnLAkD,GAAMkb,UAAY,SAAUlsB,GAExB,GAAIa,GAASmQ,EAAMmb,mBAAmBnsB,EAAEosB,OAAOvrB,OAC/C,KAAKmQ,EAAMqb,cAAcxrB,EAAQmQ,GAC7B,OAAO,CAEX,IAAInK,EAWJ,OAVImK,GAAMsb,OACNzlB,EAAUmK,EAAMsb,QAASF,OAAQvrB,EAAQgG,QAAS7G,EAAE6G,YAGpDA,EAAUhG,EAAOmI,WAAU,IACnBlD,MAAMoN,MAAQrS,EAAO0rB,YAAc,KAC3C1lB,EAAQf,MAAMkN,OAASnS,EAAO2rB,aAAe,MAEjD/lB,YAAUI,IAAW,oBACrBlH,SAAS8sB,KAAK3rB,YAAY+F,GACnBA,GAGXmK,EAAM0b,OAAS,SAAU1sB,GACrBgR,EAAM4E,QAAQ,QAAUwG,MAAOpc,EAAEoc,MAAOvV,QAASmK,EAAMnK,QAAShG,OAAQb,EAAEa,QAC1E,IAAI8rB,GAAU3b,EAAM4b,oBAAoB5sB,EAAEa,QACtCA,EAASmQ,EAAMmb,mBAAmBnsB,EAAEa,OAAQ8rB,EAChD,KAAK3b,EAAMqb,cAAcxrB,EAAQ8rB,IAAY3sB,EAAEa,OAAOkE,UAAUqC,QAAQ,sBAAwB,KAAO4J,EAAM6b,YAAchsB,IACtH/B,oBAAkB6tB,EAAQG,iBAAkBH,EAAQI,oBAAqBJ,EAAQI,qBAAuB/sB,EAAEa,QACpG,CAKP,GAJIb,EAAEa,OAAOkE,UAAUqC,QAAQ,sBAAwB,IACnDvG,EAASb,EAAEa,QAEfmQ,EAAM6b,UAAYhsB,EACdmQ,EAAMnQ,SAAWA,EACjB,MAEJ,IAAImsB,GAAShc,EAAMic,SAASN,EAAQI,mBAAoBJ,GACpDG,EAAc9b,EAAMkc,eAAersB,EAAQ8rB,GAC3CQ,MAAS,EACb,IAAIL,EAAa,CACbE,EAASluB,oBAAkBkuB,GAAUhc,EAAMic,SAASjc,EAAMnQ,QAAUmsB,EACpEG,EAASnc,EAAMic,SAASpsB,EAAQ8rB,EAAS3sB,EAAEoc,MAC3C,IAAIgR,GAAuBpc,EAAMoc,qBAAqBT,EACtD,IAAIS,GAAwBJ,IAAWG,EACnC,MAEAC,IACAhkB,SAAOujB,EAAQI,oBAEnBJ,EAAQI,mBAAqBD,EACzB9sB,EAAEa,OAAOkE,UAAUqC,QAAQ,sBAAwB,EACnDulB,EAAQ9lB,QAAQxG,aAAassB,EAAQI,mBAAoBJ,EAAQ9lB,QAAQnG,SAASysB,IAE7ER,EAAQ9lB,UAAYmK,EAAMnK,SAAWsmB,IAAWR,EAAQ9lB,QAAQwmB,kBACrEV,EAAQ9lB,QAAQ/F,YAAY6rB,EAAQI,oBAGpCJ,EAAQ9lB,QAAQxG,aAAassB,EAAQI,mBAAoBJ,EAAQ9lB,QAAQnG,SAASysB,IAEtFnc,EAAMsc,gBAAgBN,EAAQG,EAAQR,OAErC,CACDK,EAASluB,oBAAkBkuB,GAAUhc,EAAMic,SAASjc,EAAMnQ,QACtDmQ,EAAMic,SAASpsB,EAAQ8rB,GAAWK,IAAWA,EAASA,EAASA,EAAS,EAC5EG,EAASnc,EAAMic,SAASpsB,EAAQ8rB,EAChC,IAAIY,GAAMZ,EAAQ9lB,UAAYmK,EAAMnK,QAAUsmB,EAASH,EAASG,EAASA,EAAS,EAAIA,CACtFnc,GAAMwc,gBAAgBb,GACtBA,EAAQ9lB,QAAQxG,aAAa2Q,EAAMnQ,OAAQ8rB,EAAQ9lB,QAAQnG,SAAS6sB,IACpEvc,EAAMsc,gBAAgBN,EAAQG,EAAQR,GACtC3b,EAAM6b,UAAY7b,EAAMnQ,OACxBmQ,EAAM4E,QAAQ,QACV6X,eAAgBzc,EAAMnQ,OAAQgG,QAAS8lB,EAAQ9lB,QAAS6mB,cAAeV,EAAQW,aAAcR,EAC7FtsB,OAAQb,EAAEa,OAAQyrB,OAAQ3sB,SAAS4gB,uBAAuB,mBAAmB,GAAInE,MAAOpc,EAAEoc,MAAOwR,MAAO5c,EAAM4c,SAK1H,GADAjB,EAAU3b,EAAM4b,oBAAoB5b,EAAM6b,WACtC/tB,oBAAkB+B,IAAWb,EAAEa,SAAW8rB,EAAQI,mBAC9C/b,EAAMoc,qBAAqBT,IAC3B3b,EAAM6c,kBAAkBlB,OAG3B,CACD,GACImB,MADkBntB,MAAMC,KAAKjB,SAAS4gB,uBAAuB,2BAEpDhgB,QAAQ,SAAUusB,IAC3BgB,EAAS9c,EAAM4b,oBAAoBE,IACxBjmB,SAAWinB,IAAWnB,GAC7B3b,EAAM6c,kBAAkBC,OAMxC9c,EAAM+c,YAAc,SAAU/tB,GAC1BgR,EAAMnQ,OAASmQ,EAAMmb,mBAAmBnsB,EAAEa,OAC1C,IAAImtB,IAAa,CACjBhd,GAAMnQ,OAAOyE,UAAUC,IAAI,aAC3ByL,EAAM6b,UAAY7b,EAAMnQ,OACxBb,EAAEssB,OAAS3sB,SAAS4gB,uBAAuB,mBAAmB,EAC9D,IAAI5J,IAASsX,QAAQ,EAAOpnB,QAASmK,EAAMnK,QAAShG,OAAQmQ,EAAMnQ,OAClEmQ,GAAM4E,QAAQ,kBAAmBe,EAAM,SAAUuX,GACzCA,EAAaD,SACbD,EAAaE,EAAaD,OAC1Bjd,EAAMmd,WAAWnuB,MAGrBguB,IAGAI,WACApd,EAAM4E,QAAQ,aACVwG,MAAOpc,EAAEoc,MAAOvV,QAASmK,EAAMnK,QAAShG,OAAQmQ,EAAMnQ,OACtDwtB,WAAYruB,EAAEquB,WAAYC,YAAatuB,EAAEsuB,cAI7Ctd,EAAM4E,QAAQ,aAAewG,MAAOpc,EAAEoc,MAAOvV,QAASmK,EAAMnK,QAAShG,OAAQmQ,EAAMnQ,WAI3FmQ,EAAMmd,WAAa,SAAUnuB,GACzB,GACIuuB,GACAC,EACAC,EAHAC,EAAW1d,EAAM4b,oBAAoB5b,EAAM6b,UAI/C0B,GAAUvd,EAAMic,SAASjc,EAAMnQ,OAC/B,IAAIusB,GAAuBpc,EAAMoc,qBAAqBsB,EACtD,IAAItB,EAAsB,CACtB,GAAIuB,GAAW3d,EAAMic,SAASyB,EAAS3B,mBAAoB2B,GACvD/X,GACA+W,cAAea,EAASZ,aAAcgB,EAAU9tB,OAAQb,EAAEa,OAAQ4sB,eAAgBzc,EAAMnQ,OACxFyrB,OAAQtsB,EAAEssB,OAAQ2B,QAAQ,EAAOQ,SAAS,EAE9Czd,GAAM4E,QAAQ,aAAce,EAAM,SAAUuX,GACxC,IAAKA,EAAaD,OAAQ,CAGtB,GAFAQ,EAAUP,EAAaO,QACvBzd,EAAMwc,gBAAgBkB,GAClBR,EAAaO,QAAS,CACtB,GAAIzS,GAAMhL,EAAMnQ,OAAOmI,WAAU,EACjCgI,GAAMnQ,OAAOyE,UAAU8D,OAAO,aAC9B4H,EAAMnQ,OAASmb,EAEnB0S,EAAS7nB,QAAQxG,aAAa2Q,EAAMnQ,OAAQ6tB,EAAS3B,mBACrD,IAAI6B,GAAW5d,EAAMic,SAASjc,EAAMnQ,OAAQ6tB,EAC5CH,GAAUvd,IAAU0d,GAAaH,EAAUK,EAAY,EAAIL,EAAU,EAAIA,EACzEvd,EAAM4E,QAAQ,QACVwG,MAAOpc,EAAEoc,MAAOvV,QAAS6nB,EAAS7nB,QAAS6mB,cAAea,EAASZ,aAAciB,EACjF/tB,OAAQb,EAAEa,OAAQyrB,OAAQtsB,EAAEssB,OAAQmB,eAAgBzc,EAAMnQ,OAAQguB,UAAW7d,EAAM4c,MAAOa,QAASA,IAG3GrlB,SAAOslB,EAAS3B,sBAOxB,GAJA2B,EAAW1d,EAAM4b,oBAAoB5sB,EAAEa,QAEvC2tB,EAASE,EAAS7nB,QAAQwmB,kBAC1BkB,EAAUvd,EAAMic,SAASjc,EAAMnQ,QAC3B6tB,EAAS7nB,UAAY7G,EAAEa,SAAYusB,GAAwBpc,EAAM6b,YAAc7b,EAAMnQ,OAAS,CAC9F,GAAIiuB,IACApB,cAAea,EAASZ,aAAc3c,EAAM6b,YAAc7b,EAAMnQ,OAAS0tB,EAAUC,EACnF3tB,OAAQb,EAAEa,OAAQ4sB,eAAgBzc,EAAMnQ,OAAQyrB,OAAQtsB,EAAEssB,OAAQ2B,QAAQ,EAE9Ejd,GAAM4E,QAAQ,aAAckZ,EAAgB,SAAUZ,GAC9CQ,EAAS7nB,UAAY7G,EAAEa,QAAWqtB,EAAaD,SAC/Cjd,EAAMwc,gBAAgBkB,GACtBA,EAAS7nB,QAAQ/F,YAAYkQ,EAAMnQ,QACnCmQ,EAAM4E,QAAQ,QACVwG,MAAOpc,EAAEoc,MAAOvV,QAAS6nB,EAAS7nB,QAAS6mB,cAAea,EAASZ,aAAca,EACjF3tB,OAAQb,EAAEa,OAAQyrB,OAAQtsB,EAAEssB,OAAQmB,eAAgBzc,EAAMnQ,OAAQguB,UAAW7d,EAAM4c,WAKnG5c,EAAMnQ,OAAOyE,UAAU8D,OAAO,aAC9B4H,EAAMnQ,OAAS,KACfmQ,EAAM6b,UAAY,KAClBzjB,SAAOpJ,EAAEssB,QACTyC,eAAa/d,EAAMnK,QAASmoB,aAAWC,WAAWjvB,EAAEoc,QAExDpL,EAAMgF,OACChF,EAxLX1D,EAAU2e,EAAUtb,GA0LpBue,EAAajD,EACbA,EAAS9kB,UAAU6O,KAAO,WACjBlI,KAAKjH,QAAQlD,KACdmK,KAAKjH,QAAQlD,GAAKwrB,cAAY,aAE7BrhB,KAAK3I,YACN2I,KAAK3I,UAAY,cACjB2I,KAAKshB,YAETthB,KAAKuhB,uBAETpD,EAAS9kB,UAAUkoB,oBAAsB,WACrC,GAAIL,aAAUlhB,KAAKjH,SACfylB,OAAQxe,KAAKoe,UACboD,UAAWxhB,KAAKigB,YAChBwB,KAAMzhB,KAAK4e,OACX8C,SAAU1hB,KAAKqgB,WACfsB,WAAY,IAAM3hB,KAAK3I,UACvBuqB,eAAe,EACfC,iBAAkB,IAClBC,kBAAmB9hB,KAAK8hB,kBACxBC,SAAU,KAGlB5D,EAAS9kB,UAAU+lB,eAAiB,SAAUrsB,EAAQsjB,GAClD,GAAIA,EAAS2I,YAAa,CACtB,GAAIC,GAAqB5I,EAAS2I,aAAcjmB,QAASsd,EAAStd,QAASipB,eAAgBhiB,KAAKjN,OAAQA,OAAQA,GAEhH,OADAksB,GAAmBznB,UAAUC,IAAI,0BAC1BwnB,EAEX,MAAO,OAEXd,EAAS9kB,UAAUklB,cAAgB,SAAUxrB,EAAQsjB,GACjD,MAAOtjB,IAAUkvB,uBAAqBlvB,EAAQsjB,EAAStd,UAAYhG,EAAOyE,UAAU+B,SAAS8c,EAAShf,aACjGtE,EAAOyE,UAAU+B,SAAS,eAEnC4kB,EAAS9kB,UAAU0mB,kBAAoB,SAAU1J,GAC7C/a,SAAO+a,EAAS4I,oBAChB5I,EAAS4I,mBAAqB,MAElCd,EAAS9kB,UAAUqmB,gBAAkB,SAAUrJ,GACvCrW,OAASqW,IACTrW,KAAKjN,OAAOyE,UAAU8D,OAAO0E,KAAK3I,WAClC2I,KAAKjN,OAAOyE,UAAUC,IAAI4e,EAAShf,aAG3C8mB,EAAS9kB,UAAUylB,oBAAsB,SAAU/lB,GAE/C,GADAA,EAAUuR,UAAQvR,EAAS,MAAQiH,KAAK0V,iBAC3B,CACT,GAAIwM,GAAOjB,eAAaloB,EAASqoB,EACjC,OAAOc,GAAKpC,OAAS9f,KAAK8f,OAASoC,EAAKpC,QAAU9f,KAAK8f,MAAQoC,EAAOliB,KAGtE,MAAOA,OAGfme,EAAS9kB,UAAUmmB,gBAAkB,SAAUN,EAAQG,EAAQhJ,GAC3D,GAAIA,IAAarW,KAMb,IALA,GAAIjH,OAAU,GACVopB,EAAYjD,EAASG,EACrB+C,MAAc,GACdC,EAAQF,EAAYjD,EAASG,EAC7BzX,EAAMua,EAAY9C,EAASH,EACxBmD,GAASza,IACZ7O,EAAUiH,KAAKjH,QAAQnG,SAASyvB,IACpB7qB,UAAU+B,SAAS,eAC3B6oB,EAAcpiB,KAAKmf,SAASpmB,GAC5BiH,KAAKjH,QAAQxG,aAAawG,EAASiH,KAAKjH,QAAQnG,SAASuvB,EAAYC,EAAc,EAAIA,EAAc,IACrGC,EAAQF,EAAYC,EAAc,EAAIA,EAAc,GAGpDC,KAKhBlE,EAAS9kB,UAAU8lB,SAAW,SAAUpsB,EAAQsjB,EAAUnkB,OACrC,KAAbmkB,IAAuBA,EAAWrW,KACtC,IAAIyf,GACA6C,CAkBJ,UAjBGzvB,MAAMC,KAAKujB,EAAStd,QAAQnG,UAAUH,QAAQ,SAAUsG,EAASrG,GAIhE,GAHIqG,EAAQvB,UAAU+B,SAAS,4BAC3B+oB,GAAqB,GAErBvpB,IAAYhG,OAEZ,IADA0sB,EAAM/sB,GACD1B,oBAAkBkB,GAAI,CACnBowB,IACA7C,GAAO,EAEX,IAAI8C,GAASxvB,EAAO6Y,wBAChB4W,EAAUD,EAAOE,QAAWF,EAAOE,OAASF,EAAO1W,KAAO,CAC9D4T,GAAMvtB,EAAEswB,SAAWA,EAAU/C,EAAMA,EAAM,KAK9CA,GAEXtB,EAAS9kB,UAAUglB,mBAAqB,SAAUtlB,EAASsd,GAEvD,WADiB,KAAbA,IAAuBA,EAAWrW,MAC/BsK,UAAQvR,EAAS,IAAMsd,EAAShf,YAE3C8mB,EAAS9kB,UAAUyoB,kBAAoB,SAAUtwB,GAG7C,MAFAA,GAAMkxB,KAAOC,YAAcvK,WAAW5mB,EAAMkxB,MAAQC,YAAc,KAAOnxB,EAAMkxB,KAC/ElxB,EAAMqa,IAAMS,YAAc8L,WAAW5mB,EAAMqa,KAAOS,YAAc,KAAO9a,EAAMqa,IACtEra,GAEX2sB,EAAS9kB,UAAUimB,qBAAuB,SAAUjJ,GAChD,MAAOA,GAAS4I,sBAAwB3U,UAAQ+L,EAAS4I,mBAAoB,IAAM5I,EAAStd,QAAQlD,KAcxGsoB,EAAS9kB,UAAUlH,OAAS,SAAUywB,EAAatwB,EAAeC,GAC9DJ,EAAO6N,KAAKjH,QAAS6pB,EAAatwB,EAAeC,IAKrD4rB,EAAS9kB,UAAUyU,QAAU,WACF,gBAAnB9N,KAAK3I,YACL2I,KAAK3I,UAAY,KACjB2I,KAAKshB,YAETL,eAAajhB,KAAKjH,QAASmoB,aAAWpT,UACtCjL,EAAOxJ,UAAUyU,QAAQhb,KAAKkN,OAElCme,EAAS9kB,UAAUqc,cAAgB,WAC/B,MAAO,YAEXyI,EAAS9kB,UAAUkK,kBAAoB,SAAUC,EAASC,GACtD,IAAK,GAAIvS,GAAK,EAAGC,EAAKC,OAAOC,KAAKmS,GAAUtS,EAAKC,EAAGG,OAAQJ,IAExD,OADWC,EAAGD,IAEV,IAAK,eACE2B,MAAMC,KAAKkN,KAAKjH,QAAQnG,UAAUH,QAAQ,SAAUsG,GAC/CA,EAAQvB,UAAU+B,SAASkK,EAAQpM,YACnC0B,EAAQvB,UAAU8D,OAAOmI,EAAQpM,WAEjCmM,EAAQnM,WACR0B,EAAQvB,UAAUC,IAAI+L,EAAQnM,cAOtD,IAAI+pB,EAkCJ,OAjCAjhB,IACI4C,YAAS,IACVob,EAAS9kB,UAAW,sBAAmB,IAC1C8G,GACI4C,WAAS,OACVob,EAAS9kB,UAAW,gBAAa,IACpC8G,GACI4C,WAAS,OACVob,EAAS9kB,UAAW,YAAS,IAChC8G,GACI4C,cACDob,EAAS9kB,UAAW,aAAU,IACjC8G,GACI4C,cACDob,EAAS9kB,UAAW,kBAAe,IACtC8G,GACI8V,WACDkI,EAAS9kB,UAAW,WAAQ,IAC/B8G,GACI8V,WACDkI,EAAS9kB,UAAW,sBAAmB,IAC1C8G,GACI8V,WACDkI,EAAS9kB,UAAW,gBAAa,IACpC8G,GACI8V,WACDkI,EAAS9kB,UAAW,iBAAc,IACrC8G,GACI8V,WACDkI,EAAS9kB,UAAW,WAAQ,IAC/B8kB,EAAWiD,EAAajhB,GACpB+V,yBACDiI,IAEL0E,cGjaFC,GAAeC,OAAOC"}
|