@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.
Files changed (42) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/dist/ej2-lists.umd.min.js +2 -2
  4. package/dist/ej2-lists.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-lists.es2015.js +243 -685
  6. package/dist/es6/ej2-lists.es2015.js.map +1 -1
  7. package/dist/es6/ej2-lists.es5.js +243 -688
  8. package/dist/es6/ej2-lists.es5.js.map +1 -1
  9. package/dist/global/ej2-lists.min.js +2 -2
  10. package/dist/global/ej2-lists.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +8 -8
  13. package/src/common/list-base.d.ts +1 -16
  14. package/src/common/list-base.js +19 -12
  15. package/src/list-view/list-view-model.d.ts +1 -6
  16. package/src/list-view/list-view.d.ts +3 -19
  17. package/src/list-view/list-view.js +163 -460
  18. package/src/list-view/virtualization.js +56 -204
  19. package/src/sortable/sortable-model.d.ts +1 -1
  20. package/src/sortable/sortable.js +3 -9
  21. package/styles/bootstrap5-dark.css +533 -0
  22. package/styles/bootstrap5-dark.scss +2 -0
  23. package/styles/bootstrap5.css +533 -0
  24. package/styles/bootstrap5.scss +2 -0
  25. package/styles/list-view/_bootstrap5-dark-definition.scss +1 -0
  26. package/styles/list-view/_bootstrap5-definition.scss +129 -0
  27. package/styles/list-view/_layout.scss +26 -26
  28. package/styles/list-view/_tailwind-dark-definition.scss +1 -116
  29. package/styles/list-view/_tailwind-definition.scss +33 -29
  30. package/styles/list-view/_theme.scss +35 -10
  31. package/styles/list-view/bootstrap5-dark.css +506 -0
  32. package/styles/list-view/bootstrap5-dark.scss +5 -0
  33. package/styles/list-view/bootstrap5.css +506 -0
  34. package/styles/list-view/bootstrap5.scss +5 -0
  35. package/styles/list-view/icons/_bootstrap5-dark.scss +1 -0
  36. package/styles/list-view/icons/_bootstrap5.scss +8 -0
  37. package/styles/list-view/material-dark.css +1 -1
  38. package/styles/material-dark.css +1 -1
  39. package/styles/sortable/bootstrap5-dark.css +26 -0
  40. package/styles/sortable/bootstrap5-dark.scss +2 -0
  41. package/styles/sortable/bootstrap5.css +26 -0
  42. package/styles/sortable/bootstrap5.scss +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/sortable/sortable.js","../src/list-view/list-view.js","../src/list-view/virtualization.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"],"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","createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","extend","defaultListBaseOptions","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","anchorElement","child","typeofData","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","type","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","ds","element","subDS","hasChildren","processSubChild","subLi","createListFromJson","expandCollapse","expandElement","expandIconPosition","append","expandIconClass","addClass","listClass","indexOf","elementArray","Array","prototype","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","typeof","elementAttributes","class","split","attributes","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","elementID","groupItemRole","itemRole","role","innerText","href","anchorTag","document","createTextNode","isFullNavigation","anchorWrapper","innerHTML","uID","enableHtmlSanitizer","removeBlazorID","groupTemplate","compiledElement","compile","compiledString","groupTemplateID","isStringTemplate","templateID","innerDiv","wrapperRole","itemText","liElement","ulElement","listRole","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","contains","groupDataSource","curFields","cusQuery","j","itemObj","items","grpItem","key","newtext","_id","trim","k","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","__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","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","LISTVIEW_HEADERTEMPLATE_PROPERTY","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","_loop_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","this_1","newCss","attributeNames","_loop_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","this_2","attrName","attributeValue","isChildHasTextContent","_loop_3","textFunction","textPropertyMatch","this_3","targetElement","onNgChange","virtualThis","resultElement","templateCompiler","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"],"mappings":"uYA28BA,SAAgBA,EAAeC,EAAUC,GACrC,IAAIC,KACJ,GAAIC,oBAAkBH,IAAmC,oBAAkC,qBACnFG,oBAAkBH,EAASI,UAC/B,OAAOJ,EAGP,IAAK,IAAIK,EAAK,EAAGC,EAAKC,OAAOC,KAAKP,GAASI,EAAKC,EAAGG,OAAQJ,IAAM,CAC7D,IACIK,EAAYT,EADJK,EAAGD,IAEXM,EAASR,oBAAkBO,IACJ,wBAA2CE,EAAhCC,WAASH,EAAWV,GACrDG,oBAAkBQ,KACnBT,EAAUQ,GAAaC,GAInC,OAAOT,EC7iBX,SAAgBY,EAAOC,EAAMC,EAAIC,EAAeC,GAC5C,IAAIC,KAYJ,GAXKH,IACDA,EAAKD,GAELE,GAAiBA,EAAcR,OAC/BQ,EAAcG,QAAQ,SAAUC,GAC5BF,EAAeG,KAAKP,EAAKQ,SAASF,MAItCF,KAAoBK,MAAMC,KAAKV,EAAKQ,UAEpCpB,oBAAkBe,GAClBC,EAAeC,QAAQ,SAAUM,GAC7BV,EAAGW,YAAYD,SAGlB,CACD,IAAIE,EAAkBZ,EAAGO,SAASL,GAClCC,EAAeC,QAAQ,SAAUM,GAC7BV,EAAGE,aAAaQ,EAAQE,MDncpCC,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,GAgGP,SAASC,EAAoBC,EAAeC,EAG5CC,EAAeC,EAASC,GAEpB,OAAOC,EAAWL,EADHM,EAAwBN,EAAeC,EAAYC,EAAeC,EAASC,GAC/C,KAAMD,GAkBrD,SAASG,EAAwBN,EAAeC,EAEhDC,EAAeC,EAASC,GACpB,IAAIG,KACAC,EAASC,YAAWC,EAAwBP,GAChDQ,WAAWC,EAAeJ,EAAOK,YAEjC,IAAK,IADDC,EAAKC,IACAC,EAAI,EAAGA,EAAIf,EAAW3C,OAAQ0D,IACnC,IAAIhE,oBAAkBiD,EAAWe,IAAjC,CAGA,IAAIrC,OAAK,EACT,GAAI6B,EAAOS,cAA+C,mBAAxBT,EAAOS,aAA6B,CAClE,IAAIC,GACAjB,WAAYA,EACZiB,QAASjB,EAAWe,GACpBjC,KAAMkB,EAAWe,GACjBb,QAASK,GAEbA,EAAOS,aAAaC,GAQxB,GALIvC,EADAuB,EACKiB,EAAsBnB,EAAeC,EAAWe,QAAIvD,EAAW,KAAM,QAAU,KAAMqD,EAAIE,EAAGb,GAG5FiB,EAAWpB,EAAeC,EAAWe,QAAIvD,EAAW,KAAM,KAAM0C,EAASC,GAE9EI,EAAOa,aAA6C,mBAAvBb,EAAOa,YAA4B,CAC5DH,GACAjB,WAAYA,EACZiB,QAASjB,EAAWe,GACpBjC,KAAMkB,EAAWe,GACjBM,KAAM3C,EACNwB,QAASK,GAEbA,EAAOa,YAAYH,GAEvBX,EAASpC,KAAKQ,GAElB,OAAO4B,EAoBX,SAASgB,EAAuBvB,EAAeC,EAE/CE,EAASb,EAAOY,EAAeE,GAC3B,IAAII,EAASC,YAAWC,EAAwBP,GAChDQ,WAAWC,EAAeJ,EAAOK,YACjC,IAEIC,EAFAhE,EAAS2D,YAAWX,EAAS0B,oBAAqBhB,EAAO1D,QACzD2E,EAAiBhB,YAAWiB,EAAuBlB,EAAOiB,gBAE1DE,KACArC,IACAmC,EAAenC,MAAQA,GAE3B,IACIX,EACAiD,EAFAC,KAGA5B,GAAcA,EAAW3C,SAAWN,oBAAkB8E,EAAW7B,GAAYqB,QAE5EQ,EAAW7B,GAAYqB,KAAKS,eAAejF,EAAOgE,MACnDA,EAAKC,KAET,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAW3C,OAAQ0D,IAAK,CACxC,IAAIjE,EAAYH,EAAeqD,EAAWe,GAAIlE,GAC9C,IAAIE,oBAAkBiD,EAAWe,IAAjC,CAGA,GAAIR,EAAOS,cAA+C,mBAAxBT,EAAOS,aAA6B,CAClE,IAAIC,GACAjB,WAAYA,EACZiB,QAASjB,EAAWe,GACpBjC,KAAMhC,EAAUD,EAAOiC,MACvBoB,QAASK,EACT1D,OAAQA,GAEZ0D,EAAOS,aAAaC,GAExB,IAAIc,EAAU/B,EAAWe,GACrBR,EAAOS,cAA+C,mBAAxBT,EAAOS,eACrClE,EAAYH,EAAeqD,EAAWe,GAAIlE,IAG1CC,EAAUgF,eAAejF,EAAOgE,MAAQ9D,oBAAkBD,EAAUD,EAAOgE,OAC3EA,EAAK/D,EAAUD,EAAOgE,KAE1B,IAAImB,KASJ,GARIzB,EAAO0B,eACH1B,EAAO2B,gBAAkBpF,EAAUD,EAAOyC,MAAQxC,EAAUD,EAAOsF,gBACnET,EAAgBxD,KAAK6B,EAAc,SAAWqC,UAAW1B,WAAS3B,MAAOsD,OAASC,KAAM,eAGxFN,EAAS9D,KAAK6B,EAAc,SAAWqC,UAAW1B,WAAS3B,MAAOsD,OAASC,KAAM,iBAGnE,IAAlBrC,EAEIM,EAAOgC,UAAYzF,EAAUgF,eAAejF,EAAO2F,WAAazF,oBAAkBD,EAAUD,EAAO2F,WACnGR,EAAS9D,KAAK6B,EAAc,QAAUqC,UAAW1B,WAAS7B,KAAO,IAAM/B,EAAUD,EAAO2F,YAM5Fb,GAJAjD,EAAKwC,EAAsBnB,EAAegC,EAASjF,EAAWD,EAAQ0D,EAAOkC,UAAWT,KAEvFD,EAAQD,eAAe,cACpBC,EAAQ/E,UAA0B6D,EAAIE,EAAGb,IAC1BwC,cAAc,IAAMhC,WAASf,YAC5CY,EAAO2B,eAAiBR,EAAgBrE,QACxCsF,UAAQjB,EAAiBhD,EAAGkE,uBAG/B,CAsBD,IArBAlE,EAAKyC,EAAWpB,EAAegC,EAASjF,EAAWD,EAAQ0D,EAAOkC,UAAWvC,EAASC,IACnF0C,UAAUC,IAAIpC,WAASrB,MAAQ,IAAMmC,EAAenC,OACvDX,EAAGqE,aAAa,aAAcvB,EAAenC,MAAM2D,YACnDrB,EAAgBjD,EAAGgE,cAAc,IAAMhC,WAASf,YAE5C7C,EAAUgF,eAAejF,EAAOoG,UAChCvE,EAAGqE,aAAa,QAASjG,EAAUD,EAAOoG,UAG1CnG,EAAUgF,eAAejF,EAAOqG,iBAAmBpG,EAAUD,EAAOqG,iBACpEH,EAAarE,EAAI5B,EAAUD,EAAOqG,iBAGlCpG,EAAUgF,eAAejF,EAAOsG,WAA0C,IAA9BrG,EAAUD,EAAOsG,UAC7DzE,EAAGmE,UAAUC,IAAIpC,WAASlB,UAG1B1C,EAAUgF,eAAejF,EAAOuG,aAA8C,IAAhCtG,EAAUD,EAAOuG,aAC/D1E,EAAG2E,MAAMC,QAAU,QAGnBxG,EAAUgF,eAAejF,EAAO0G,YAAcxG,oBAAkBD,EAAUD,EAAO0G,aAC7EhD,EAAOiD,SAAU,CACrB,IAAIC,GAASC,IAAK5G,EAAUD,EAAO0G,WACnCI,QAAMF,EAAM3G,EAAUD,EAAO+G,kBAC7B,IAAIC,EAAc9D,EAAc,OAASqC,UAAW1B,WAASjB,MAAO4C,MAAOoB,IACvE9B,EACAA,EAAcmC,sBAAsB,aAAcD,GAGlDlB,WAASkB,GAAcnF,EAAGkE,mBAIlC,GAAIrC,EAAOgC,UAAYzF,EAAUgF,eAAejF,EAAO2F,WAClDzF,oBAAkBD,EAAUD,EAAO2F,YAAcjC,EAAOiD,SAAU,CACnE,IAAIO,EAAchE,EAAc,OAASqC,UAAW1B,WAAS7B,KAAO,IAAM/B,EAAUD,EAAO2F,WACvFb,EACAA,EAAcmC,sBAAsB,aAAcC,GAGlDpB,WAASoB,GAAcrF,EAAGkE,mBAG9BZ,EAAS3E,QACTsF,UAAQX,EAAUtD,EAAGkE,mBAErBrC,EAAO2B,eAAiBR,EAAgBrE,QACxCsF,UAAQjB,EAAiBhD,EAAGkE,mBAiY5C,SAAyB7C,EAAejD,EAAWD,EAAQmH,EAAI9D,EAAS+D,EAAS5E,GAE7E,IAAI6E,EAAQpH,EAAUD,EAAO+E,WACzBuC,EAAcrH,EAAUD,EAAOsH,aAEnC,GAAID,EAAM7G,SACN8G,GAAc,EACdF,EAAQpB,UAAUC,IAAIpC,WAAStB,UAC3Bc,EAAQkE,iBAAiB,CACzB,IAAIC,EAAQC,EAAmBvE,EAAemE,EAAOhE,IAAWb,GAChE4E,EAAQ1F,YAAY8F,GAI5B,GAAMnE,EAAQqE,gBAAkBJ,IAAgBjE,EAAQsD,SAAU,CAC9DS,EAAQrB,kBAAkBC,UAAUC,IAAIpC,WAAShB,aAEjD,IAAI8E,EAA+C,SAA/BtE,EAAQuE,mBAAgC9B,UAAU+B,SACtEF,GAAezE,EAAc,OAASqC,UAAW,WAAalC,EAAQyE,mBAAqBV,EAAQvB,cAAc,IAAMhC,WAASvB,eAjZ5HiF,CAAgBrE,EAAejD,EAAWD,EAAQmD,EAAYO,EAAQ7B,EAAI8C,EAAenC,OAK7F,GAHIsC,GACAiD,YAAUlG,IAAMgC,WAASd,YAEzBW,EAAOa,aAA6C,mBAAvBb,EAAOa,YAA4B,CAC5DH,GACAjB,WAAYA,EACZiB,QAASjB,EAAWe,GACpBjC,KAAMhC,EAAUD,EAAOiC,MACvBuC,KAAM3C,EACNwB,QAASK,EACT1D,OAAQA,GAEZ0D,EAAOa,YAAYH,GAEvBS,KACAE,EAAM1D,KAAKQ,IAEf,OAAOkD,EAoBX,SAAS0C,EAAmBvE,EAAeC,EAE3CE,EAASb,EAAOY,EAAeE,GAC3B,IAAII,EAASC,YAAWC,EAAwBP,GAEhD,OAAOE,EAAWL,EADTuB,EAAuBvB,EAAeC,EAAYE,EAASb,EAAOY,EAAeE,GACrDI,EAAOsE,UAAW3E,GAsC3D,SAAS4E,EAAQzD,EAAM0D,GACnB,GAAKA,GAAiB1D,EAGjB,CAGD,OADgB2D,MAAMC,UAAU7G,MAAMC,KAAK0G,GACtBD,QAAQzD,IAgDrC,SAAS6D,EAAWC,EAAWC,EAAQC,GAEnC,QADc,IAAVA,IAAoBA,EAAQ,IAAIC,SAClB,cAAdH,EACAE,EAAMD,OAAOA,EAAQ,aAAa,QAEjC,GAAkB,eAAdD,EACLE,EAAMD,OAAOA,EAAQ,cAAc,QAGnC,IAAK,IAAIrE,EAAI,EAAGA,EAAIsE,EAAME,QAAQlI,OAAQ0D,IACV,aAAxBsE,EAAME,QAAQxE,GAAGyE,IACjBH,EAAME,QAAQE,OAAO1E,EAAG,GAIpC,OAAOsE,EAUX,SAASK,EAAc1F,EAAYqF,GAE/B,OAAO,IAAIM,cAAY3F,GAClB4F,aAAaP,GAStB,SAASQ,EAAsB5B,EAAS/D,GACpC,IAAIK,EAASC,YAAWC,EAAwBP,GAC5CrD,EAAS2D,YAAWX,EAAS0B,oBAAqBhB,EAAO1D,QACzDiJ,EAAS7B,EAAQ8B,WAAU,GAE3BC,KACJF,EAAOjD,UAAUC,IAAI,eACrB,IAAImD,EAASH,EAAOI,iBAAiB,mBACrCJ,EAAOjD,UAAUsD,OAAO,eACxB,IAAK,IAAIpF,EAAI,EAAGA,EAAIkF,EAAO5I,OAAQ0D,IAAK,CAQpC,IAAK,IAPDrC,EAAKuH,EAAOlF,GACZqF,EAAS1H,EAAGgE,cAAc,KAC1B/D,EAAKD,EAAGgE,cAAc,MAEtB2D,KACAC,EAAaF,EAASA,EAAOE,WAAa5H,EAAG4H,WAC7ClJ,EAAOD,OAAOC,KAAKkJ,GACdC,EAAM,EAAGA,EAAMD,EAAWjJ,OAAQkJ,IACjCD,EAAWE,OAAOpJ,EAAKmJ,KAAQE,kBACjCJ,EAAKxJ,EAAOiC,MAAQwH,EAAWE,OAAOpJ,EAAKmJ,KAAOpH,aAG1D,IAAIuH,EAAeC,EAAiBjI,GAChCgI,EAAa7F,IACbwF,EAAKxJ,EAAOgE,IAAM6F,EAAa7F,UACxB6F,EAAa7F,IAGpBwF,EAAKxJ,EAAOgE,IAAMC,IAElB3D,OAAOC,KAAKsJ,GAAcrJ,SAC1BgJ,EAAKxJ,EAAOqG,gBAAkBwD,GAE9BN,IACAM,EAAeC,EAAiBP,GAC5BjJ,OAAOC,KAAKsJ,GAAcrJ,SAC1BgJ,EAAKxJ,EAAOsF,eAAiBuE,IAGjC/H,IACA0H,EAAKxJ,EAAO+E,OAASiE,EAAsBlH,EAAIuB,IAEnD8F,EAAO9H,KAAKmI,GAEhB,OAAOL,EAGX,SAASnE,EAAW+E,GAEhB,IAAK,IADDC,GAAUC,OAAQ,KAAMzF,KAAM,MACzBN,EAAI,EAAGA,EAAI6F,EAAKvJ,OAAQ0D,IAC7B,IAAKhE,oBAAkB6J,EAAK7F,IACxB,OAAO8F,GAAUC,cAAeF,EAAK7F,GAAIM,KAAMuF,EAAK7F,IAG5D,OAAO8F,EAEX,SAAS9D,EAAakB,EAAS8C,GAC3B,IAAItD,KACJE,QAAMF,EAAMsD,GACRtD,EAAKuD,QACLpC,YAAUX,GAAUR,EAAKuD,MAAMC,MAAM,aAC9BxD,EAAKuD,OAEhBE,aAAWjD,EAASR,GAExB,SAASkD,EAAiB1C,GAGtB,IAAK,IAFDiD,KACAzD,EAAOQ,EAAQiD,WACVjJ,EAAQ,EAAGA,EAAQwF,EAAKpG,OAAQY,IACrCiJ,EAAWzD,EAAKxF,GAAOkJ,UAAY1D,EAAKxF,GAAOmJ,UAEnD,OAAOF,EAoIX,SAASpG,IACL,OAAOuG,KAAKC,MAA4B,OAArB,EAAID,KAAKE,WACvBvE,SAAS,IACTwE,UAAU,GAwBnB,SAAStG,EAAsBnB,EAAesB,EAAMvE,EAAWD,EAAQuF,EAAWqF,EAAeC,EAAO7G,EAAI5C,EAAOiC,GAC/G,IAIIF,EAJAO,EAASC,YAAWC,EAAwBP,GAC5CsB,EAAiBhB,YAAWiB,EAAuBlB,EAAOiB,gBAC1D1C,EAAOuC,EACP9D,EAAQ8D,EAEQ,iBAATA,GAAqC,iBAATA,GAAqC,kBAATA,IAC/DrB,EAAaqB,EACbvC,EAA0C,kBAA3BhC,EAAUD,EAAOiC,OAAyD,iBAA3BhC,EAAUD,EAAOiC,MAC3EhC,EAAUD,EAAOiC,MAAShC,EAAUD,EAAOiC,OAAS,GACxDvB,EAAQT,EAAUD,EAAOU,QAE7B,IAAIoK,EAMAA,EALC5K,oBAAkBiD,IAAgBjD,oBAAkBD,EAAUD,EAAOgE,MAC1C,KAAzB/D,EAAUD,EAAOgE,IAIRA,EAAK,IAAM5C,EAHX4C,EAKhB,IAAInC,EAAKqB,EAAc,MACnBqC,YAAsB,IAAVsF,EAAiBhH,WAAS9B,MAAQ8B,WAAShC,IAAM,KAAO3B,oBAAkBqF,GAAa,GAAKA,GACxGvB,GAAI8G,EAAWtF,MAAyC,KAAjCb,EAAeoG,eAAoD,KAA5BpG,EAAeqG,UACvEC,MAAiB,IAAVJ,EAAiBlG,EAAeoG,cAAgBpG,EAAeqG,eA8BhF,OA3BI7H,GAAclD,EAAUgF,eAAejF,EAAOsG,UAAqD,UAAzCrG,EAAUD,EAAOsG,SAASH,YACpFtE,EAAGmE,UAAUC,IAAIpC,WAASlB,UAE1BkI,EACAhJ,EAAGqJ,UAAYjJ,GAGfJ,EAAGqE,aAAa,aAAchG,oBAAkBQ,GAAS,OAASA,GAClEmB,EAAGqE,aAAa,OAAQ,UAEpB/C,GAAclD,EAAUgF,eAAejF,EAAOqG,iBAAmBpG,EAAUD,EAAOqG,iBAClFH,EAAarE,EAAI5B,EAAUD,EAAOqG,iBAElCuE,EAAcpK,SAAWkD,EAAO2B,eAChCwC,SAAO+C,EAAe/I,GAEtBsB,IAAelD,EAAUD,EAAOyC,MAASxC,EAAUD,EAAOsF,gBAC1DrF,EAAUD,EAAOsF,eAAe6F,MAChCtJ,EAAGH,YAAY0J,EAAUlI,EAAeC,EAAYnD,EAAQiC,EAAM2I,EAAelH,EAAO2B,iBAGpFuF,EAAcpK,QAAUkD,EAAO2B,eAC/BwC,SAAO+C,EAAe/I,GAE1BA,EAAGH,YAAY2J,SAASC,eAAerJ,MAGxCJ,EAEX,SAASiC,EAAeC,GAGpB,OACIlC,GAAI,KAAOkC,EAAa,QACxBjC,GAAI,KAAOiC,EAAa,eACxBhC,MAAO,KAAOgC,EAAa,cAC3B/B,KAAM,KAAO+B,EAAa,QAC1B9B,KAAM,KAAO8B,EAAa,QAC1B7B,MAAO,KAAO6B,EAAa,SAC3B5B,QAAS,YACTC,SAAU,aACVC,SAAU,aACVC,YAAa,iBACbC,SAAU,cACVC,MAAO,UACPC,IAAK,KAAOsB,EAAa,OACzBrB,YAAa,qBACbC,SAAU,aACVC,MAAO,KAAOmB,EAAa,OAC3BlB,YAAa,iBACbC,WAAY,gBACZC,UAAW,eAGnB,SAASqI,EAAUlI,EAAeC,EAAYnD,EAAQiC,EAAM2I,EAAeW,GACvE,IAAItL,EAAYH,EAAeqD,EAAYnD,GACvC4G,GAASuE,KAAMlL,EAAUD,EAAOyC,MAEhCxC,EAAUgF,eAAejF,EAAOsF,gBAAkBrF,EAAUD,EAAOsF,iBACnEwB,QAAMF,EAAM3G,EAAUD,EAAOsF,gBAC7BsB,EAAKuE,KAAOlL,EAAUD,EAAOyC,KAAOxC,EAAUD,EAAOyC,KACjDxC,EAAUD,EAAOsF,eAAe6F,MAExC,IAAIC,EACJ,GAAKG,EAGA,CACDH,EAAYlI,EAAc,KAAOqC,UAAW1B,WAAS5B,KAAO,IAAM4B,WAASpB,MAC3E,IAAI+I,EAAgBtI,EAAc,OAASqC,UAAW1B,WAASf,aAC3D8H,GAAiBA,EAAcpK,QAC/BqH,SAAO+C,EAAeY,GAE1BA,EAAc9J,YAAY2J,SAASC,eAAerJ,IAClD4F,UAAQ2D,GAAgBJ,QATxBA,EAAYlI,EAAc,KAAOqC,UAAW1B,WAAS5B,KAAO,IAAM4B,WAASpB,IAAKgJ,UAAWxJ,IAY/F,OADAiE,EAAakF,EAAWxE,GACjBwE,EAIX,SAAS9G,EAAWpB,EAAesB,EAAMvE,EAEzCD,EAAQuF,EAAWlC,EAASC,GACxB,IAGIoI,EACAb,EACA1H,EALAO,EAASC,YAAWC,EAAwBP,GAC5CsB,EAAiBhB,YAAWiB,EAAuBlB,EAAOiB,gBAC1D1C,EAAOuC,EAIS,iBAATA,GAAqC,iBAATA,IACnCrB,EAAaqB,EACbvC,EAAOhC,EAAUD,EAAOiC,OAAS,GAEjCyJ,EAAOxL,oBAAkBD,EAAe,KAAMA,EAAUD,EAAOgE,IAAM/D,EAAe,IAEpF4K,KAASrG,EAAKS,eAAe,cAAeT,EAAKrE,WAGjDkD,GAAWA,EAAQsI,sBAEnB1J,EAAOA,GAEX,IAAIJ,EAAKqB,EAAc,MACnBqC,YAAsB,IAAVsF,EAAiBhH,WAAS9B,MAAQ8B,WAAShC,IAAM,KAAO3B,oBAAkBqF,GAAa,GAAKA,GACxGC,MAAyC,KAAjCb,EAAeoG,eAAoD,KAA5BpG,EAAeqG,UACxDC,MAAiB,IAAVJ,EAAiBlG,EAAeoG,cAAgBpG,EAAeqG,gBAEhD,IAA3B9K,oBAAkBwL,GACnB7J,EAAGqE,aAAa,WAAYwF,GAG5B7J,EAAGqE,aAAa,WAAYjC,KAShC,GANIZ,GAAaA,EAAQuI,gBACF,iBAATpH,GAEPA,EAAKS,eAJC,kBAKFT,EAAW,OAElBqG,GAASxH,GAAWA,EAAQwI,cAAe,EAIvCC,EAFiBC,UAAQ1I,EAAQwI,cAEfG,CAAexH,EAAMlB,EAAmB,gBAAiBI,EAAOuI,kBAAmBvI,EAAOwI,iBAAkB,KAAMrK,KAEpIgG,SAAOiE,EAAiBjK,QAG3B,IAAKgJ,GAASxH,GAAWA,EAAQsD,SAAU,CAE5C,IAEImF,GAAAA,EAFiBC,UAAQ1I,EAAQsD,SAEfqF,CAAexH,EAAMlB,EAAmB,WAAYI,EAAOyI,aAAczI,EAAOwI,iBAAkB,KAAMrK,KAE1HgG,SAAOiE,EAAiBjK,OAG3B,CACD,IAAIuK,EAAWlJ,EAAc,OACzBqC,UAAW1B,WAASvB,YACpBkD,MAAuC,KAA/Bb,EAAe0H,aAAuBpB,KAAMtG,EAAe0H,kBAEvE,GAAIlJ,IAAelD,EAAUD,EAAOyC,MAASxC,EAAUD,EAAOsF,gBAC1DrF,EAAUD,EAAOsF,eAAe6F,MAChCiB,EAAS1K,YAAY0J,EAAUlI,EAAeC,EAAYnD,EAAQiC,EAAM,KAAMyB,EAAO2B,oBAEpF,CACD,IAAI+B,EAAUlE,EAAc,QACxBqC,UAAW1B,WAAS5B,KACpBuD,MAAoC,KAA5Bb,EAAe2H,UAAoBrB,KAAMtG,EAAe2H,eAEhEjJ,GAAWA,EAAQsI,oBACnBvE,EAAQ8D,UAAYjJ,EAGpBmF,EAAQqE,UAAYxJ,EAExBmK,EAAS1K,YAAY0F,GAEzBvF,EAAGH,YAAY0K,GAEnB,OAAOvK,EAWX,SAAS0B,EAAWL,EAAeqJ,EAAWhH,EAAWlC,GACrD,IAAIK,EAASC,YAAWC,EAAwBP,GAC5CsB,EAAiBhB,YAAWiB,EAAuBlB,EAAOiB,gBAC9Dd,WAAWC,EAAeJ,EAAOK,YACjC,IAAIyI,EAAYtJ,EAAc,MAC1BqC,UAAW1B,WAAS/B,GAAK,KAAO5B,oBAAkBqF,GAAa,GAAKA,GACpEC,MAAoC,KAA5Bb,EAAe8H,UAAoBxB,KAAMtG,EAAe8H,eAGpE,OADA5E,SAAO0E,EAAWC,GACXA,EAv4BXxJ,EAAS0B,qBACLV,GAAI,KACJ/B,KAAM,OACNQ,IAAK,MACL/B,MAAO,QACPgM,UAAW,YACXpG,QAAS,UACTjE,SAAU,WACVD,SAAU,WACVuD,QAAS,UACTZ,MAAO,QACPwB,UAAW,YACXe,YAAa,cACblB,QAAS,UACTC,eAAgB,iBAChBf,cAAe,gBACfyB,gBAAiB,kBACjBL,SAAU,WACViG,QAAS,MAEb,IAAI/H,GACApC,MAAO,EACPiK,SAAU,eACVzB,SAAU,eACVD,cAAe,QACfuB,SAAU,YACVD,YAAa,gBAEbzI,GACAwB,cAAc,EACdM,UAAU,EACViG,qBAAqB,EACrBjE,gBAAgB,EAChB1H,OAAQgD,EAAS0B,oBACjBC,eAAgBC,EAChBoD,UAAW,GACXpC,UAAW,GACX2B,iBAAiB,EACjBe,UAAW,OACX3B,SAAU,KACVkF,cAAe,KACfe,eAAgB,KAChB9E,gBAAiB,qBACjB/D,WAAY,OACZ6D,mBAAoB,QACpBvC,eAAe,GA8BnBrC,EAAS6J,WAbT,SAAoB3J,EAAeC,EAEnCE,EAASD,EAAeE,GACpB,IAAII,EAASC,YAAWC,EAAwBP,GAC5CsB,EAAiBhB,YAAWiB,EAAuBlB,EAAOiB,gBAC1Dc,EAAOT,EAAW7B,GAAY8G,OAClC,MAAa,WAATxE,GAA8B,WAATA,EACdxC,EAAoBC,EAAeC,EAAYC,EAAeC,EAASC,GAGvEmE,EAAmBvE,EAAeC,EAAYE,EAASsB,EAAenC,MAAOY,EAAeE,IA0B3GN,EAASC,oBAAsBA,EAyD/BD,EAASQ,wBAA0BA,EA4JnCR,EAASyB,uBAAyBA,EAyBlCzB,EAASyE,mBAAqBA,EA6B9BzE,EAAS8J,aArBT,SAAsB5E,EAAcd,EAAS2F,GAEzC,GADAlJ,WAAWC,EAAeF,EAAuBG,YAC5CmE,GAAiBA,EAAa1H,OAAnC,CAGA,IAAIwM,EACAC,EACAC,EAAgB/E,MAAMC,UAAU7G,MAAMC,KAAK0G,GAQ/C,IADA8E,EAAYE,GALRD,EADA7F,EACUa,EAAQb,EAAS8F,IAGD,IAAfH,EAAsBG,EAAc1M,QAAU,KAET,IAAfuM,GAAuB,EAAI,IACzDC,KAAezG,YAAUyG,IAAcA,EAAUhH,UAAUmH,SAAStJ,WAASlB,YAEhFqK,EAAYE,EADZD,IAAoC,IAAfF,GAAuB,EAAI,GAGpD,OAAOC,IAmBXhK,EAASiF,QAAUA,EAqCnBjF,EAASoK,gBA7BT,SAAyBjK,EAAYnD,EAAQsI,QACvB,IAAdA,IAAwBA,EAAY,QACxC,IAAI+E,EAAY1J,YAAWX,EAAS0B,oBAAqB1E,GACrDsN,GAAW,IAAI7E,SAAQ1G,MAAMsL,EAAUV,SAGvCxF,EAAK0B,EAAc1F,EADvBmK,EAAWjF,EAAWC,EAAW,MAAOgF,IAExCnK,KACA,IAAK,IAAIoK,EAAI,EAAGA,EAAIpG,EAAG3G,OAAQ+M,IAAK,CAChC,IAAIC,EAAUrG,EAAGoG,GAAGE,MAChBC,KAEJA,EAAQL,EAAUpL,MAAQkF,EAAGoG,GAAGI,IAChCD,EAAW,UAAI,EACf,IAAIE,EAAUP,EAAUpL,KACR,OAAZ2L,IAEAF,EADAE,EAAU,QACSzG,EAAGoG,GAAGI,KAE7BD,EAAQG,IAAM,oBAAsB1G,EAAGoG,GAAGI,IACtCxG,EAAGoG,GAAGI,IAAIxH,WAAW2H,OAAS,aAClCJ,EAAQD,MAAQD,EAChBrK,EAAW9B,KAAKqM,GAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIP,EAAQhN,OAAQuN,IAChC5K,EAAW9B,KAAKmM,EAAQO,IAGhC,OAAO5K,GA2BXH,EAASqF,WAAaA,EAatBrF,EAAS6F,cAAgBA,EAqDzB7F,EAASgG,sBAAwBA,EA0HjChG,EAASgL,sBAxFT,SAA+B9K,EAAeyD,EAAUxD,EAExDnD,EAAQqD,EAASC,GACbO,WAAWC,EAAeF,EAAuBG,YASjD,IAAK,IAFDrD,EANA8L,EAAYtJ,EAAc,MAAQqC,UAAW1B,WAAS/B,GAAI0D,OAASyF,KAAM,kBACzEvH,EAASC,YAAWC,EAAwBP,GAC5CgK,EAAY1J,YAAWX,EAAS0B,oBAAqB1E,GAErDgM,EAAiBD,UAAQpF,GACzBsH,KAEAjK,EAAKC,IACAC,EAAI,EAAGA,EAAIf,EAAW3C,OAAQ0D,IAAK,CACxC,IAAIjE,EAAYH,EAAeqD,EAAWe,GAAImJ,GAC1CnI,EAAU/B,EAAWe,GACrB/D,EAAW+E,EAAQ/E,SAOvB,GALIO,EADyB,iBAAlByC,EAAWe,IAA4C,iBAAlBf,EAAWe,GAC/CgB,EAGAjF,EAAUoN,EAAU3M,OAE5BgD,EAAOS,cAA+C,mBAAxBT,EAAOS,aAA6B,CAClE,IAAIC,GACAjB,WAAYA,EACZiB,QAASc,EACTjD,KAAMvB,EACN2C,QAASK,EACT1D,OAAQqN,GAEZ3J,EAAOS,aAAaC,GAEpBV,EAAOS,cAA+C,mBAAxBT,EAAOS,eACrClE,EAAYH,EAAeqD,EAAWe,GAAImJ,GAEtC3M,EADyB,iBAAlByC,EAAWe,IAA4C,iBAAlBf,EAAWe,GAC/CgB,EAGAjF,EAAUoN,EAAU3M,QAGpC,IAAImB,EAAKqB,EAAc,MACnBc,GAAIA,EAAK,IAAME,EACfqB,UAAWpF,EAAW0D,WAAS9B,MAAQ8B,WAAShC,GAAI2D,OAASyF,KAAM,kBAEvE,GAAI9K,EAC6B,iBAAlBgD,EAAWe,IAA4C,iBAAlBf,EAAWe,GACvDrC,EAAGqJ,UAAYhG,EAGfrD,EAAGqJ,UAAYjL,EAAUoN,EAAUpL,UAGtC,CACD,IAAIiM,EAAY/N,EAAWuD,EAAOuI,gBAAkBvI,EAAOyI,WAC3D,GAAIhM,GAEI2L,EAAkBE,EAAe9G,EAAS5B,EAAmB,iBAAkB4K,IAAaxK,EAAOwI,iBAAkB,KAAMrK,KAE3HgG,SAAOiE,EAAiBjK,OAG3B,CAED,IAAIiK,GAAAA,EAAkBE,EAAe9G,EAAS5B,EAAmB,WAAY4K,IAAaxK,EAAOwI,iBAAkB,KAAMrK,KAErHgG,SAAOiE,EAAiBjK,GAGhCA,EAAGqE,aAAa,aAAchG,oBAAkBQ,GAAS,OAASA,GAClEmB,EAAGqE,aAAa,OAAQ,UAExBxC,EAAOa,aAA6C,mBAAvBb,EAAOa,cAChCH,GACAjB,WAAYA,EACZiB,QAASc,EACTjD,KAAMvB,EACN8D,KAAM3C,EACNwB,QAASK,EACT1D,OAAQqN,GAEZ3J,EAAOa,YAAYH,IAEvB6J,EAAa5M,KAAKQ,GAGtB,OADAgG,SAAOoG,EAAczB,GACdA,GAoCXxJ,EAASmL,oBArBT,SAA6BtC,EAAeuB,EAAiBpN,EAE7DoO,EAAa/K,EAASC,GAMlB,IAAK,IAJD0I,EAAiBD,UAAQF,GACzBwB,EAAY1J,YAAWX,EAAS0B,oBAAqB1E,GACrD0D,EAASC,YAAWC,EAAwBP,GAC5CgL,EAAWhB,EAAUV,QAChBvM,EAAK,EAAGkO,EAAgBF,EAAahO,EAAKkO,EAAc9N,OAAQJ,IAAM,CAC3E,IAAImO,EAASD,EAAclO,GACvBoO,KACJA,EAAWH,GAAYE,EAAOjM,YAC9BiM,EAAO9C,UAAY,GAEnB,IAAIK,EAAkBE,EAAewC,EAAYlL,EAAmB,gBAAiBI,EAAOuI,kBAAmBvI,EAAOwI,iBAAkB,KAAMqC,GAC1IzC,GACAjE,SAAOiE,EAAiByC,GAGhC,OAAOH,GAQXpL,EAASiB,WAAaA,EAyOtBjB,EAASO,WAAaA,EAqBtBP,EAASyL,aAXT,SAAsBvL,EAAeqJ,EAAWhH,EAAWlC,GACvD,IAAIK,EAASC,YAAWC,EAAwBP,GAQhD,OAPAQ,WAAWC,EAAeJ,EAAOK,aAEiB,SAA9BL,EAAOkE,mBAAgC9B,UAAU+B,WACtD3E,EAAc,OACrBqC,UAAW,WAAa7B,EAAOoE,gBAAkB,KAC5C5H,oBAAkBqF,GAAa,GAAKA,MACxCgH,EAAU1G,cAAc,IAAMhC,WAASvB,cACzCiK,GAj6Bf,CAo6BGvJ,aAAaA,gBEn8BhB,IAAI0L,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBrO,OAAOwO,iBAChBC,wBAA2B5G,OAAS,SAAUyG,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAE5J,eAAe+J,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASI,IAAOC,KAAKC,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAExG,UAAkB,OAANyG,EAAavO,OAAO8O,OAAOP,IAAMI,EAAG7G,UAAYyG,EAAEzG,UAAW,IAAI6G,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY7N,EAAQkM,EAAK4B,GAC7E,IAA2HX,EAAvHY,EAAIC,UAAUjP,OAAQkP,EAAIF,EAAI,EAAI/N,EAAkB,OAAT8N,EAAgBA,EAAOjP,OAAOqP,yBAAyBlO,EAAQkM,GAAO4B,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAY7N,EAAQkM,EAAK4B,QACpH,IAAK,IAAIrL,EAAIoL,EAAW9O,OAAS,EAAG0D,GAAK,EAAGA,KAAS0K,EAAIU,EAAWpL,MAAIwL,GAAKF,EAAI,EAAIZ,EAAEc,GAAKF,EAAI,EAAIZ,EAAEnN,EAAQkM,EAAK+B,GAAKd,EAAEnN,EAAQkM,KAAS+B,GAChJ,OAAOF,EAAI,GAAKE,GAAKpP,OAAOwP,eAAerO,EAAQkM,EAAK+B,GAAIA,GAa5DK,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,UACPpO,SAAU,WACVqO,QAAS,YACTC,WAAY,gBACZC,SAAU,cACVC,SAAU,cACVtO,YAAa,iBACbuO,aAAc,cACdC,cAAe,oBACfvO,SAAU,cACVwO,KAAM,SACNxC,OAAQ,gBACRyC,WAAY,eACZC,mBAAoB,wBACpBhP,KAAM,SACNiP,QAAS,aACTC,QAAS,YACTnP,KAAM,UACNoP,SAAU,cACVC,gBAAiB,qBACjBC,SAAU,aACVnP,QAAS,UACToP,UAAW,cACXC,aAAc,UACdC,cAAe,mBACfC,aAAc,kBACdC,iBAAkB,sBAClBC,cAAe,cACfC,wBAAyB,2BAEzBC,EAA6B,WAC7BC,EAAkC,gBAClCC,EAAmC,iBAKnCC,EAA+B,SAAUC,GAEzC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMjD,KAAMO,YAAcP,KAsC/D,OAxCAR,EAAUuD,EAAeC,GAIzB7C,GACI+C,WAAS,OACVH,EAAc7J,UAAW,UAAM,GAClCiH,GACI+C,WAAS,SACVH,EAAc7J,UAAW,YAAQ,GACpCiH,GACI+C,WAAS,cACVH,EAAc7J,UAAW,iBAAa,GACzCiH,GACI+C,WAAS,cACVH,EAAc7J,UAAW,iBAAa,GACzCiH,GACI+C,WAAS,YACVH,EAAc7J,UAAW,eAAW,GACvCiH,GACI+C,WAAS,YACVH,EAAc7J,UAAW,eAAW,GACvCiH,GACI+C,WAAS,UACVH,EAAc7J,UAAW,aAAS,GACrCiH,GACI+C,WAAS,YACVH,EAAc7J,UAAW,eAAW,GACvCiH,GACI+C,WAAS,YACVH,EAAc7J,UAAW,eAAW,GACvCiH,GACI+C,WAAS,SACVH,EAAc7J,UAAW,cAAU,GACtCiH,GACI+C,WAAS,mBACVH,EAAc7J,UAAW,sBAAkB,GAC9CiH,GACI+C,WAAS,cACVH,EAAc7J,UAAW,iBAAa,GAClC6J,GACTI,iBAkBEC,EAA0B,SAAUJ,GASpC,SAASI,EAASjP,EAAS+D,GACvB,IAAImL,EAAQL,EAAO1Q,KAAK0N,KAAM7L,EAAS+D,IAAY8H,KAMnD,OALAqD,EAAMC,cAAe,EACrBD,EAAME,yBACNF,EAAMG,eACNH,EAAMI,gBACNJ,EAAMK,iBACCL,EAipEX,OAhqEA7D,EAAU4D,EAAUJ,GAwBpBI,EAASlK,UAAUyK,kBAAoB,SAAUC,EAASC,GACtD,IAAK,IAAI3S,EAAK,EAAGC,EAAKC,OAAOC,KAAKuS,GAAU1S,EAAKC,EAAGG,OAAQJ,IAAM,CAE9D,OADWC,EAAGD,IAEV,IAAK,iBACD8O,KAAK8D,mBACL,MACJ,IAAK,WACD9D,KAAK+D,YAAYF,EAAQlP,UACzB,MACJ,IAAK,SACDqL,KAAKgE,YACL,MACJ,IAAK,QACL,IAAK,SACDhE,KAAKiE,UACL,MACJ,IAAK,YACDjE,KAAKkE,eACL,MACJ,IAAK,SAEDlE,KAAKmE,eAAerT,OAASkP,KAAKlP,OAAOsT,WACrCpE,KAAKqE,qBACCrE,KAAKsE,kBAAoBC,cAC3BvE,KAAKwE,qBAAqBC,4BAI1BF,cAAcvE,KAAKsE,mBAAqBtE,KAAKqE,uBAC7CrE,KAAKsD,cAAe,GAExBtD,KAAK0E,YAET,MACJ,IAAK,cACI1E,KAAK2E,WAAWrT,QACjB0O,KAAKX,OAAOW,KAAK4E,aAAa,EAAO,UAEzC,MACJ,IAAK,QACG5E,KAAKqE,qBACCE,cAAcvE,KAAKsE,kBACrBtE,KAAKwE,qBAAqBC,4BAI1BF,cAAcvE,KAAKsE,mBAAqBtE,KAAKqE,uBAC7CrE,KAAKsD,cAAe,GAExBtD,KAAK0E,YAET,MACJ,IAAK,aACD1E,KAAKX,OAAOW,KAAK4E,aAAa,EAAO,UACrC,MACJ,IAAK,uBACI5T,oBAAkBgP,KAAK6E,mBACxBC,SAAO9E,KAAK6E,kBAEhB7E,KAAK+E,UACL,MACJ,IAAK,eACL,IAAK,mBACIR,cAAevE,KAAKsE,mBACjBtE,KAAKqE,qBACLrE,KAAKwE,qBAAqBC,2BAG1BzE,KAAKgF,eAGb,MACJ,IAAK,aACGhF,KAAKqE,qBACCrE,KAAKsE,kBAAoBC,cAC3BvE,KAAKwE,qBAAqBC,4BAI1BF,cAAcvE,KAAKsE,mBAAqBtE,KAAKqE,uBAC7CrE,KAAKsD,cAAe,GAExBtD,KAAK0E,YAET,MACJ,IAAK,YACL,IAAK,WACI1E,KAAKqE,sBACArE,KAAKsE,kBAAoBC,cAC3BvE,KAAK+E,UAGb,MACJ,IAAK,WACGR,cAAcvE,KAAKsE,iBAEnBtE,KAAKiF,eAAeC,kBAAkB,eAGlClF,KAAKqE,qBACLrE,KAAKwE,qBAAqBC,4BAG1BzE,KAAKmE,eAAe3N,SAAWwJ,KAAKxJ,SACpCwJ,KAAKmF,UAAYnF,KAAKoF,WACtBpF,KAAKqF,uBAU7BjC,EAASlK,UAAU4K,iBAAmB,WAC9B1S,OAAOC,KAAK2O,KAAK7I,gBAAgB7F,QACjC6J,aAAW6E,KAAK9H,QAAS8H,KAAK7I,iBAGtCiM,EAASlK,UAAU6K,YAAc,SAAUuB,GACnCtF,KAAKrL,UACLkE,YAAUmH,KAAK9H,SAAU8H,KAAKrL,SAASuG,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,KAEjFF,GACAG,eAAazF,KAAK9H,SAAUoN,EAAYpK,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,MAG1FpC,EAASlK,UAAU+K,QAAU,WACzBjE,KAAK9H,QAAQZ,MAAMoO,OAASC,aAAW3F,KAAK0F,QAC5C1F,KAAK9H,QAAQZ,MAAMsO,MAAQD,aAAW3F,KAAK4F,OAC3C5F,KAAK6F,UAAW7F,KAAK9H,QAAQ4N,cAEjC1C,EAASlK,UAAU8K,UAAY,WAC3BhE,KAAK+F,cAAc/F,KAAK9H,QAAS8H,KAAKgG,SAE1C5C,EAASlK,UAAUgL,aAAe,WAC1BlE,KAAKiG,UACLjG,KAAK9H,QAAQpB,UAAUC,IAAI,SAG3BiJ,KAAK9H,QAAQpB,UAAUsD,OAAO,UAGtCgJ,EAASlK,UAAU6M,cAAgB,SAAU7N,EAASgO,GAC9CA,EACAhO,EAAQpB,UAAUsD,OAAOgH,EAAWY,SAGpC9J,EAAQpB,UAAUC,IAAIqK,EAAWY,UAIzCoB,EAASlK,UAAUmG,OAAS,SAAUtM,EAAMoT,EAAUC,GAClD,GAAI7B,cAAcvE,KAAKsE,iBAAkB,CACrC,IAAI+B,GAASC,WAAYvT,EAAMwT,WAAYJ,GAE3CnG,KAAKiF,eAAeC,kBAAkB,cAAemB,QAGrD,QAAuB5U,IAAnBuO,KAAKwG,WAA2BxG,KAAKyG,WAAY,CAC7CzG,KAAKvD,qBACLuD,KAAK0G,eAAgB9B,YAAa+B,qBAAmBC,SAAS5G,KAAK4E,eAAgB,GAEvF5E,KAAKwG,UAAYxG,KAAKhM,cAAc,OAASqC,UAAW+K,EAAW/B,SACnE,IAAIwH,EAAiB7G,KAAKhM,cAAc,QAAUqC,UAAW+K,EAAWU,WAAYvF,UAAWyD,KAAK4E,cAChGkC,EAAU9G,KAAKhM,cAAc,OAASqC,UAAW+K,EAAWrO,KAAMwJ,UAAWsK,EAAeE,YAC5FC,EAAgBhH,KAAKhM,cAAc,OACnCqC,UAAW+K,EAAWtO,KAAO,IAAMsO,EAAWc,SAAW,cACzD5L,OAASgB,MAAO,mBAIpB,GAFA0I,KAAKwG,UAAUhU,YAAYwU,GAC3BhH,KAAKwG,UAAUhU,YAAYsU,GACvB9G,KAAKtC,eAAgB,CAErB,IAAIZ,EAAiBD,UAAQmD,KAAKtC,gBAC9BuJ,EAAoBjH,KAAKhM,cAAc,OAASqC,UAAW+K,EAAWW,qBAEtEnF,EAAkBE,KAAmBkD,KAAMoG,EAAMpG,KAAKkH,2BAA4B,KAAM,KAAMlH,KAAKwG,WACnG5J,GACAjE,SAAOiE,EAAiBqK,GAE5BtO,UAAQsO,GAAoBjH,KAAKwG,WACjCxG,KAAKmH,uBAAsB,GAAO,GAAM,GAEpCnH,KAAKoH,SACLpH,KAAKqH,uBAGTrH,KAAKtC,gBAAkBsC,KAAK4E,aAC5BkC,EAAQhQ,UAAUC,IAAI,UAE1BiJ,KAAK9H,QAAQpB,UAAUC,IAAI,gBAC3BH,WAASoJ,KAAKwG,WAAYxG,KAAK9H,cAE9B,GAAI8H,KAAKwG,UACV,GAAIxG,KAAKyG,WAAY,CACjBzG,KAAKwG,UAAUlP,MAAMC,QAAU,GAC3BuP,EAAU9G,KAAKwG,UAAU7P,cAAc,IAAMyK,EAAWU,YACxDkF,EAAgBhH,KAAKwG,UAAU7P,cAAc,IAAMyK,EAAWc,UAC9DlC,KAAKvD,sBACL1J,EAAO4T,qBAAmBC,SAAS7T,IAEvC+T,EAAQvK,UAAYxJ,EAChBiN,KAAKtC,gBAAkByI,IACvBW,EAAQQ,cAAcxQ,UAAUsD,OAAO,UACvC4F,KAAKwG,UAAU7P,cAAc,IAAMyK,EAAWW,oBAAoBjL,UAAUC,IAAI,kBAEhFiJ,KAAKtC,iBAAmByI,IACxBW,EAAQQ,cAAcxQ,UAAUC,IAAI,UACpCiJ,KAAKwG,UAAU7P,cAAc,IAAMyK,EAAWW,oBAAoBjL,UAAUsD,OAAO,iBACnF4F,KAAKwG,UAAU7P,cAAc,IAAMyK,EAAWW,oBAAoBjL,UAAUC,IAAI,WAGhFiQ,EAAc1P,MAAMC,SADP,IAAb4O,EAC8B,GAGA,YAIlCnG,KAAKwG,UAAUlP,MAAMC,QAAU,QAM/C6L,EAASlK,UAAUqO,WAAa,SAAUC,EAAUC,EAAQC,GACxD,IAAIrE,EAAQrD,KACZ,GAAIwH,GAAYC,EAAQ,CACpB,IAAIE,EAASH,EAASlQ,MAAMsQ,SACxBC,EAA8C,WAAhC7H,KAAK9H,QAAQZ,MAAMwQ,SAAyB9H,KAAK9H,QAAQZ,MAAMwQ,SAAW,GAC5FN,EAASlQ,MAAMsQ,SAAW,WAC1BJ,EAAS1Q,UAAUC,IAAI,UACvB,IAAIgR,OAAO,EACPC,EAAWhI,KAAKiI,UAAUD,SAC9B,GAAIhI,KAAKiI,UAAUC,OACfH,EAAQ/H,KAAKiG,UAAY9E,EAAiBnB,KAAKiI,UAAUC,QAAUrH,EAAcb,KAAKiI,UAAUC,YAE/F,CAEDH,EAAOlH,EAAuB,UAC9B6G,EAAU1H,KAAKiG,UACf+B,EAAW,EAEfhI,KAAK9H,QAAQZ,MAAMwQ,SAAW,SAC9B9H,KAAKmI,OAAOC,QAAQZ,GAChBa,MAAmB,IAAZX,EAAmBK,EAAK,GAAKA,EAAK,GACzCC,SAAUA,EACVM,eAAgBtI,KAAKiI,UAAUM,OAE/BC,IAAK,SAAUC,GACXjB,EAASlQ,MAAMC,QAAU,OACzB8L,EAAMnL,QAAQZ,MAAMwQ,SAAWD,EAC/BL,EAASlQ,MAAMsQ,SAAWD,EAC1BH,EAAS1Q,UAAUsD,OAAO,aAGlCqN,EAAOnQ,MAAMC,QAAU,GACvByI,KAAKmI,OAAOC,QAAQX,GAChBY,MAAmB,IAAZX,EAAmBK,EAAK,GAAKA,EAAK,GACzCC,SAAUA,EACVM,eAAgBtI,KAAKiI,UAAUM,OAC/BC,IAAK,WACDnF,EAAMqF,QAAQ,qBAGtB1I,KAAK2I,MAAQlB,IAGrBrE,EAASlK,UAAU0P,UAAY,WAC3B,GAAI5I,KAAKvI,SACL,IACQ0E,SAAShC,iBAAiB6F,KAAKvI,UAAUnG,SACzC0O,KAAKvI,SAAW0E,SAASxF,cAAcqJ,KAAKvI,UAAU8E,UAAUqC,QAGxE,MAAOiK,GACHhM,UAAQmD,KAAKvI,UAGrBuI,KAAKmE,gBACD1M,SAAUuI,KAAKvI,SACfiG,eAAgBsC,KAAKtC,eACrBf,cAAeqD,KAAKrD,cAAenE,gBAAgB,EAAMM,UAAW,GACpErD,gBACIqG,SAAU,SAAUyB,SAAU,eAAgBH,SAAU,GACxDvB,cAAe,QAASsB,YAAa,gBAGzCrM,OAASkP,KAAKlP,OAAiB,WAC/BsI,UAAW4G,KAAK5G,UAChB5C,SAAUwJ,KAAKxJ,SACfnB,YAAa2K,KAAK8I,eAAeC,KAAK/I,MACtC/C,WAAY,GAAK+C,KAAK9H,QAAQpD,GAAK8N,EACnC7F,gBAAiB,GAAKiD,KAAK9H,QAAQpD,GAAK+N,EACxCpG,oBAAqBuD,KAAKvD,oBAC1BC,gBAAgB,GAEpBsD,KAAKgJ,kBAET5F,EAASlK,UAAU+P,sBAAwB,WACvC,IAAIC,EAAclJ,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWuB,yBAC1DuG,EAAY9W,SAAS,KACrB4N,KAAKmJ,gBAAkBD,EAAY9W,SAAS,GAAGgX,wBAAwB1D,OAEvE1F,KAAKiF,eAAeC,kBAAkB,kBAAmBlF,KAAKmJ,mBAGtE/F,EAASlK,UAAU8P,eAAiB,WAChC,GAAIzE,cAAcvE,KAAKsE,kBAAoBtE,KAAKqE,qBAAsB,CAClE,IAAIgF,EAAcrJ,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWuB,yBAC1C,OAAhB0G,IACoB,KAAhBrJ,KAAK0F,SAEL1F,KAAKiF,eAAeC,kBAAkB,qBAAsBoE,OAAOC,aACnEvJ,KAAK6F,UAAW,EAChBwD,EAAYG,mBAE6B,IAAzCxJ,KAAK0F,OAAOzO,WAAW8B,QAAQ,MAE/BiH,KAAKiF,eAAeC,kBAAkB,qBAAsBlF,KAAK9H,QAAQkR,wBAAwB1D,OAAOzO,YAExGoS,EAAYjX,SAAS,KACrB4N,KAAKmJ,gBAAkBE,EAAYjX,SAAS,GAAGgX,wBAAwB1D,OAEvE1F,KAAKiF,eAAeC,kBAAkB,kBAAmBlF,KAAKmJ,mBAI1EnJ,KAAK2E,cACL3E,KAAKyJ,kBACLzJ,KAAKmF,aACLnF,KAAK0J,qBACL1J,KAAK2J,cAAe,EACpB3J,KAAK4J,gBACL5J,KAAK6J,cACL7J,KAAK8J,qBAAuB,GAAK9J,KAAK9H,QAAQpD,GAAK8N,EACnD5C,KAAK+J,0BAA4B,GAAK/J,KAAK9H,QAAQpD,GAAK+N,EACxD7C,KAAKkH,2BAA6B,GAAKlH,KAAK9H,QAAQpD,GAAKgO,EACzD9C,KAAKmI,OAAS,IAAI6B,YAAUhK,KAAKyJ,gBACjCzJ,KAAKiK,cAAcjK,KAAK2I,OACxB3I,KAAKiK,cAAcjK,KAAK1C,WACxB0C,KAAKiK,cAAcjK,KAAKwG,WACxBxG,KAAKiK,cAAcjK,KAAK6E,kBACxB7E,KAAK2I,MAAQ3I,KAAK1C,UAAY0C,KAAKjB,aAAeiB,KAAKwG,UAAYxG,KAAK6E,sBAAmBpT,GAE/F2R,EAASlK,UAAU4P,eAAiB,SAAUzC,GAI1C,GAHIA,EAAK/Q,KAAKwB,UAAUmH,SAASmD,EAAW/N,YACxC2M,KAAK2J,cAAe,GAEpB3J,KAAK9J,cAAgB8J,KAAKkK,UAAU7D,EAAK/Q,MAAO,CAChD,IAAIK,OAAkB,GAGtBA,EAAkBwU,iBAAenK,KAAKhM,eAAe,GACjDf,SAAS,EAAOgT,UAAWjG,KAAKiG,UAChCtR,SAAUyM,EAAWqB,oBAETzL,aAAa,OAAQ,YACrC,IAAIoT,EAAiBzU,EAAgBgB,cAAc,IAAMyK,EAAWkB,cACpE+D,EAAK/Q,KAAKwB,UAAUC,IAAIqK,EAAWsB,eACnC2D,EAAK/Q,KAAKuB,kBAAkBC,UAAUC,IAAIqK,EAAWgB,UACnB,iBAAvBpC,KAAK/L,WAAW,IAAiD,iBAAvB+L,KAAK/L,WAAW,GACrDrD,EAAeyV,EAAKnR,QAAS8K,KAAKmE,eAAerT,QAC/CkP,KAAKmE,eAAerT,OAAO0M,YACrCwC,KAAKqK,gBAAgBhE,EAAM1Q,GAGM,iBAAvBqK,KAAK/L,WAAW,IACA,iBAAvB+L,KAAK/L,WAAW,KAA8D,IAA1C+L,KAAK4J,aAAa7Q,QAAQsN,EAAKtT,OAC1EiN,KAAKqK,gBAAgBhE,EAAM1Q,GAE/BA,EAAgBqB,aAAa,eAAgBoT,EAAetT,UAAUmH,SAASmD,EAAWnO,SAAW,OAAS,SAChF,SAA1B+M,KAAKsK,kBACL3U,EAAgBmB,UAAUC,IAAIqK,EAAWoB,cACzC6D,EAAK/Q,KAAKuB,kBAAkBC,UAAUC,IAAIqK,EAAWoB,cACrD6D,EAAK/Q,KAAKuB,kBAAkB9E,aAAa4D,EAAiB0Q,EAAK/Q,KAAKuB,kBAAkB0D,WAAW,MAGjG5E,EAAgBmB,UAAUC,IAAIqK,EAAWmB,eACzC8D,EAAK/Q,KAAKuB,kBAAkBC,UAAUC,IAAIqK,EAAWmB,eACrD8D,EAAK/Q,KAAKuB,kBAAkBrE,YAAYmD,IAE5CqK,KAAK0J,kBAAkBvX,KAAKkU,EAAK/Q,MACH,SAA1B0K,KAAKsK,iBACLtK,KAAKuK,gBAAkBlE,EAAK/Q,KAAKuB,kBAAkBzE,SAAS,GAG5D4N,KAAKuK,gBAAkBlE,EAAK/Q,KAAKuB,kBAAkB2T,mBAI/DpH,EAASlK,UAAUmR,gBAAkB,SAAUhE,EAAM1Q,GACjD0Q,EAAK/Q,KAAKwB,UAAUC,IAAIqK,EAAWlO,UACnCmT,EAAK/Q,KAAK0B,aAAa,gBAAiB,QACxCrB,EAAgBgB,cAAc,IAAMyK,EAAWkB,cAAcxL,UAAUC,IAAIqK,EAAWnO,SACtF0C,EAAgBqB,aAAa,eAAgB,SAOjDoM,EAASlK,UAAUuR,UAAY,SAAUnV,GACrC0K,KAAK0K,gBAAgBpV,GAAM,IAE/B8N,EAASlK,UAAUwR,gBAAkB,SAAUpV,EAAMrC,GACjD,GAAI+M,KAAK9J,aAAc,CACnB,IAAImH,EAAY/H,EAIhB,GAHIA,aAAgBlE,QAAUkE,EAAK2K,cAAgB0K,gBAC/CtN,EAAY2C,KAAK4K,sBAAsBtV,KAEtCtE,oBAAkBqM,GAAY,CAC/B,IAAIiF,EAAejF,EAAU1G,cAAc,IAAMyK,EAAWkB,eAC5C,IAAZrP,EACAoK,EAAUvG,UAAUC,IAAIqK,EAAWlO,UAGnCmK,EAAUvG,UAAUsD,OAAOgH,EAAWlO,UAE1CmK,EAAUrG,aAAa,gBAAiB/D,EAAU,OAAS,UAC3C,IAAZA,EACAqP,EAAaxL,UAAUC,IAAIqK,EAAWnO,SAGtCqP,EAAaxL,UAAUsD,OAAOgH,EAAWnO,SAE7CqP,EAAagF,cAActQ,aAAa,eAAgB/D,EAAU,OAAS,SAE/E+M,KAAK6K,oBAAoBxN,KAQjC+F,EAASlK,UAAU4R,YAAc,SAAUxV,GACvC0K,KAAK0K,gBAAgBpV,GAAM,IAK/B8N,EAASlK,UAAU6R,cAAgB,WAC/B/K,KAAKgL,oBAAmB,IAK5B5H,EAASlK,UAAU+R,gBAAkB,WACjCjL,KAAKgL,oBAAmB,IAE5B5H,EAASlK,UAAU8R,mBAAqB,SAAU/X,GAC9C,GAAI+M,KAAK9J,aAAc,CACnB,IAAK,IAAIlB,EAAI,EAAGA,EAAIgL,KAAKjB,aAAazN,OAAQ0D,IAAK,CAC/C,IAAIkW,EAAYlL,KAAKjB,aAAa/J,GAAG2B,cAAc,IAAMyK,EAAWkB,cAChE4I,IACIjY,EACKiY,EAAUpU,UAAUmH,SAASmD,EAAWnO,UACzC+M,KAAKyK,UAAUzK,KAAKjB,aAAa/J,IAIjCkW,EAAUpU,UAAUmH,SAASmD,EAAWnO,UACxC+M,KAAK8K,YAAY9K,KAAKjB,aAAa/J,KAK/CgL,KAAKqE,sBACLrE,KAAKwE,qBAAqB2G,YAAYlY,KAIlDmQ,EAASlK,UAAU8L,YAAc,WAC7B,GAAIhF,KAAK9J,aAML,IAAK,IALD6I,EAAe9F,MAAMC,UAAU7G,MAAMC,KAAK0N,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWK,WACzF4E,GACA/Q,UAAM7D,EAAWyD,aAASzD,EAAWwC,gBAAYxC,EAAWX,YAAQW,EACpE0C,aAAS1C,EAAWsB,KAAM,IAErBiC,EAAI,EAAGA,EAAI+J,EAAazN,OAAQ0D,IAAK,CAC1C,IAAIkD,EAAU6G,EAAa/J,GAC3BqR,EAAK/Q,KAAO4C,EAEZmO,EAAKnR,QAAU8K,KAAKoL,YAAYlT,GAC5BA,EAAQvB,cAAc,IAAMyK,EAAWe,kBACvCnC,KAAKiK,cAAc/R,EAAQvB,cAAc,IAAMyK,EAAWe,kBAE9DnC,KAAK8I,eAAezC,GAChBA,EAAK/Q,KAAKwB,UAAUmH,SAASmD,EAAWlO,WACxC8M,KAAKqK,gBAAgBhE,EAAMA,EAAK/Q,KAAKqB,cAAc,IAAMyK,EAAWe,sBAI3E,CAED,IADIpD,EAAe9F,MAAMC,UAAU7G,MAAMC,KAAK0N,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWsB,gBACpF1N,EAAI,EAAGA,EAAI+J,EAAazN,OAAQ0D,IAAK,EACtCkD,EAAU6G,EAAa/J,IACnB8B,UAAUsD,OAAOgH,EAAWlO,UACpCgF,EAAQrB,kBAAkBC,UAAUsD,OAAOgH,EAAWgB,UACtDpC,KAAKiK,cAAc/R,EAAQvB,cAAc,IAAMyK,EAAWe,kBAE1DnC,KAAKqL,eACLrL,KAAKqL,cAAc/V,KAAKwB,UAAUC,IAAIqK,EAAWlO,YAO7DkQ,EAASlK,UAAUoS,kBAAoB,WAC/BtL,KAAKwE,sBACLxE,KAAKwE,qBAAqB8G,qBAGlClI,EAASlK,UAAUqS,aAAe,SAAU1C,GACxC,IAEI2C,EAFAjZ,EAASsW,EAAEtW,OACXuE,EAAYvE,EAAOuE,UAEvB,GAAIA,EAAUmH,SAASmD,EAAWc,WAAapL,EAAUmH,SAASmD,EAAWU,YACrE9B,KAAK9J,cAAgB8J,KAAK2E,WAAW3E,KAAK2E,WAAWrT,OAAS,IAC9D0O,KAAKiL,kBAETjL,KAAKyL,WAEJ,CACD,IAAI9Y,EAAK+Y,UAAQnZ,EAAOoZ,WAAY,IAAMvK,EAAWK,UAKrD,GAJW,OAAP9O,IACAA,EAAKJ,GAETyN,KAAK4L,cACD5L,KAAKgG,QAAUhG,KAAK9J,cAAgB8J,KAAKkK,UAAUvX,GACnD,GAAIkW,EAAEtW,OAAOuE,UAAUmH,SAASmD,EAAWkB,cAAe,CAEtD,GADA3P,EAAGmE,UAAUC,IAAIqK,EAAWG,SACxBvQ,oBAAkB2B,EAAGgE,cAAc,IAAMyK,EAAWnO,UAAW,CAC/D,IAAIoT,GACAnR,aAASzD,EAAWwC,gBAAYxC,EAAWX,YAAQW,EAAW0C,aAAS1C,EACvEsB,UAAMtB,EAAW6D,KAAM3C,GAE3BqN,KAAKqK,gBAAgBhE,EAAMA,EAAK/Q,KAAKqB,cAAc,IAAMyK,EAAWe,uBAGpEnC,KAAK8K,YAAYnY,GACjBA,EAAGmE,UAAUC,IAAIqK,EAAWG,SAKhC,GAHIvB,KAAKqE,sBACLrE,KAAKwE,qBAAqBqH,cAAclZ,EAAIkW,GAE5CA,EAAG,CACH,IAAIiD,EAAY9L,KAAK+L,gBAAgBpZ,EAAIkW,GACrCqC,EAAYvY,EAAGgE,cAAc,IAAMyK,EAAWkB,cAClD1K,QAAMkU,GAAatO,UAAW0N,EAAUpU,UAAUmH,SAASmD,EAAWnO,WACtE+M,KAAK0I,QAAQ,SAAUoD,SAGtBnZ,EAAGmE,UAAUmH,SAASmD,EAAW/N,WACtC2M,KAAKgM,cACLhM,KAAKiM,eACLjM,KAAKiM,aAAatZ,GAClBqN,KAAKkM,YAAYvZ,EAAIkW,GACrBlW,EAAGmE,UAAUsD,OAAOgH,EAAWlO,WAG/B8M,KAAK6L,cAAclZ,EAAIkW,QAI3B7I,KAAKkM,YAAYvZ,EAAIkW,GAEzB2C,EAAiBE,UAAQ7C,EAAEtW,OAAQ,MAC9BvB,oBAAkBwa,IACfA,EAAe1U,UAAUmH,SAAS,iBACjC4K,EAAEtW,OAAO+U,cAAcxQ,UAAUmH,SAAS,wBAC3CuN,EAAe1U,UAAUC,IAAIqK,EAAWY,SAIpD,GAAIuC,cAAcvE,KAAKsE,kBAAoBtE,KAAKqE,qBAAsB,CAClE,IAAI8H,EAAqBnM,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWuB,yBACrE,GAAIwJ,EAAmBxV,cAAc,aAAc,CAE/C,IAAIyV,EAAmBD,EAAmBhS,iBAAiB,aAC3D,GAAI6F,KAAK9J,aACL,IAAK,IAAIlB,EAAI,EAAGA,EAAIoX,EAAiB9a,OAAQ0D,IAEpCgL,KAAKuD,sBAAsB8I,SAASD,EAAiBpX,GAAGsX,aAAa,cACtEtM,KAAKuD,sBAAsBpR,KAAKia,EAAiBpX,GAAGsX,aAAa,kBAKzEtM,KAAKuD,sBAAsB,GAAM4I,EAAmBxV,cAAc,aAAa2V,aAAa,YAGpG,GAAIH,EAAmBxV,cAAc,cAAe,CAEhD,IAAI4V,EAAeJ,EAAmBxV,cAAc,cACpD,IAAK4V,EAAazV,UAAUmH,SAAS,YAAa,CAC9C,IAAIuO,EAAiBD,EAAaD,aAAa,YAE/C,GAAItM,KAAKuD,sBAAsB8I,SAASG,GAAiB,CACrD,IAAIC,EAAmBzM,KAAKuD,sBAAsBlR,MAAM,EAAG2N,KAAKuD,sBAAsBxK,QAAQyT,IAC1FE,EAAmB1M,KAAKuD,sBACxBlR,MAAM2N,KAAKuD,sBAAsBxK,QAAQyT,GAAkB,EAAGxM,KAAKuD,sBAAsBjS,QAC7F0O,KAAKuD,sBAAwBkJ,EAAiBE,OAAOD,QAMzEtJ,EAASlK,UAAU+Q,cAAgB,SAAU/R,GACzC,OAAOA,GAAWA,EAAQyT,YAAczT,EAAQyT,WAAWiB,YAAY1U,IAE3EkL,EAASlK,UAAU2T,aAAe,SAAUhE,GACxC,IAAIiE,EAAQpB,UAAQ7C,EAAEtW,OAAOoZ,WAAY,IAAMvK,EAAWK,UAC1DzB,KAAK+M,WAAWD,IAGpB1J,EAASlK,UAAU8T,aAAe,SAAUnE,GACxC7I,KAAKgM,eAET5I,EAASlK,UAAU+T,eAAiB,SAAUpE,EAAGL,GAC7C,GAAIpX,OAAOC,KAAK2O,KAAK/L,YAAY3C,QAAU0O,KAAK2I,MAAO,CAC/C3I,KAAKqL,eACJrL,KAAKqL,cAAkB,KAAErU,aAAa,gBAAiB,SAE5D,IAAIrE,EAAKqN,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAClDyL,EAAiBlN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,UAC3DvB,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWlO,UAC1Cga,IACAA,EAAepW,UAAUsD,OAAOgH,EAAWG,SACtCvB,KAAK9J,cACNgX,EAAepW,UAAUsD,OAAOgH,EAAWlO,WAGnD,IAAIhB,EAASsW,EAAU7V,EAAGrB,OAAS,EAAhB,EACfqB,EAAGT,GAAO4E,UAAUmH,SAASmD,EAAW/N,WAAa2M,KAAK9J,aAC1DvD,EAAGT,GAAO4E,UAAUC,IAAIqK,EAAWG,SAGnCvB,KAAKkM,YAAYvZ,EAAGT,GAAQ2W,GAE5BlW,EAAGT,GACH8N,KAAK9H,QAAQlB,aAAa,wBAAyBrE,EAAGT,GAAO4C,GAAGmC,YAGhE+I,KAAK9H,QAAQiV,gBAAgB,2BAIzC/J,EAASlK,UAAUkU,eAAiB,SAAUvE,EAAGwE,GAC7C,IAAIvP,EACAnL,EA+BJ,OA9BgB3B,oBAAkBgP,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAW/N,YAC5D2M,KAAK9J,cACjBvD,EAAKqN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,UAAYvB,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWlO,UACrG4K,EAAYhK,WAAS8J,aAAaoC,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAAW9O,EAAI0a,GACzFrc,oBAAkB8M,KACfnL,IACAA,EAAGmE,UAAUsD,OAAOgH,EAAWG,SAC1BvB,KAAK9J,cACNvD,EAAGmE,UAAUsD,OAAOgH,EAAWlO,WAGnC4K,EAAUhH,UAAUmH,SAASmD,EAAW/N,WAAa2M,KAAK9J,aAC1D4H,EAAUhH,UAAUC,IAAIqK,EAAWG,SAGnCvB,KAAKkM,YAAYpO,EAAW+K,MAKpClW,EAAKqN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWlO,UAC/C4K,EAAYhK,WAAS8J,aAAaoC,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAAW9O,EAAI0a,GAC9FrN,KAAKkM,YAAYpO,EAAW+K,IAE5B/K,EACAkC,KAAK9H,QAAQlB,aAAa,wBAAyB8G,EAAUhJ,GAAGmC,YAGhE+I,KAAK9H,QAAQiV,gBAAgB,yBAE1BrP,GAEXsF,EAASlK,UAAUoU,gBAAkB,SAAUzE,EAAGwE,GAC9C,IAAIhK,EAAQrD,KAEZ,GADA6I,EAAE0E,iBACEnc,OAAOC,KAAK2O,KAAK/L,YAAY3C,QAAU0O,KAAK2I,MAAO,CACnD,IAAI7K,EAAYkC,KAAKoN,eAAevE,EAAGwE,GACnCG,EAAaxN,KAAK9H,QAAQkR,wBAAwBqE,IAClDC,EAAgB1N,KAAK9H,QAAQkR,wBAAwB1D,OACrDiI,EAAkB3N,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWK,UAAU2H,wBACtEwE,OAAa,EACbC,OAAkB,EAItB,GAHI7N,KAAKlP,OAAO2M,UACZoQ,EAAkB7N,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWQ,eAAewH,yBAE3EtL,EAAW,CACX,IAAIgQ,EAAahQ,EAAUsL,wBAAwBqE,IAC/CM,EAAgBjQ,EAAUsL,wBAAwB1D,OACtD,GAAK2H,GAcDO,EAAa5N,KAAK6F,SAAWiI,EAAcA,EAAaN,GACvC,KACS,IAAlBxN,KAAK6F,SACLyD,OAAO0E,OAAO,EAAGC,YAAcL,GAG/B5N,KAAK9H,QAAQgW,UAAYlO,KAAK9H,QAAQgW,UAAYN,OApBnD,CACP,IAAIlI,EAAS1F,KAAK6F,SAAWyD,OAAOC,YAAcmE,GAClDE,EAAa5N,KAAK6F,SAAYiI,EAAaC,EACrCD,EAAaN,EAAcO,GAChBrI,KACS,IAAlB1F,KAAK6F,SACLyD,OAAO0E,OAAO,EAAGC,aAAeL,EAAalI,IAG7C1F,KAAK9H,QAAQgW,UAAYlO,KAAK9H,QAAQgW,WAAaN,EAAalI,UAgB3E,GAAI1F,KAAKqE,sBAAwBgJ,GAAQrN,KAAKwE,qBAAqB2J,aACpEnO,KAAKoO,aAAe,WAChB/K,EAAM+J,eAAevE,EAAGwE,GACxBhK,EAAM+K,kBAAe3c,GAEzBmc,EAAa5N,KAAKwE,qBAAqB6J,gBACjB,IAAlBrO,KAAK6F,SACLyD,OAAO0E,OAAO,EAAGC,YAAcL,GAG/B5N,KAAK9H,QAAQgW,UAAYlO,KAAK9H,QAAQgW,UAAYN,OAGrD,GAAIP,EACL,GAAIrN,KAAKyG,YAAczG,KAAKwG,UAAW,CACnC,IAAI8H,EAAYT,EAAkBA,EAAgBJ,IAAME,EAAgBF,IACpEc,EAAevO,KAAKwG,UAAU4C,wBAClCwE,EAAaW,EAAad,IAAM,EAAKc,EAAa7I,OAAS4I,EAAa,GAClD,IAAlBtO,KAAK6F,SACLyD,OAAO0E,OAAO,EAAGC,YAAcL,GAG/B5N,KAAK9H,QAAQgW,UAAY,OAGxBlO,KAAKlP,OAAO2M,UACjBmQ,EAAa5N,KAAK6F,SAAYgI,EAAgBJ,IAAM,EAAII,EAAgBJ,IAAM,EACzED,EAAaG,EAAgBF,IAAOI,EAAgBnI,QACnC,IAAlB1F,KAAK6F,SACLyD,OAAO0E,OAAO,EAAGC,YAAcL,GAG/B5N,KAAK9H,QAAQgW,UAAYlO,KAAK9H,QAAQgW,UAAYN,KAMtExK,EAASlK,UAAUsV,gBAAkB,SAAU3F,GAC3C,GAAIzX,OAAOC,KAAK2O,KAAK/L,YAAY3C,QAAU0O,KAAK2I,MAAO,CACnD,IAAItV,GAAYrC,oBAAkBgP,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAW/N,WACxEV,EAAKqN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,SAC/ClO,GAAYV,IACZA,EAAGmE,UAAUsD,OAAOgH,EAAWG,SAC3BvB,KAAK9J,eACL8J,KAAKiM,eACLjM,KAAKiM,aAAatZ,GAClBqN,KAAKgM,eAEThM,KAAKkM,YAAYvZ,EAAIkW,MAIjCzF,EAASlK,UAAUuV,gBAAkB,SAAU5F,GAC3C,GAAI7I,KAAKgG,QAAUhG,KAAK9J,cAAgB9E,OAAOC,KAAK2O,KAAK/L,YAAY3C,QAAU0O,KAAK2I,MAAO,CACvF,IAAIhW,EAAKqN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,SAC/C5L,OAAkB,EAClBuV,OAAY,EAChB,IAAKla,oBAAkB2B,IAAO3B,oBAAkB2B,EAAGgE,cAAc,IAAMyK,EAAWnO,UAAW,CACzF,IAAIoT,GACAnR,aAASzD,EAAWwC,gBAAYxC,EAAWX,YAAQW,EAAW0C,aAAS1C,EACvEsB,UAAMtB,EAAW6D,KAAM3C,GAE3BgD,EAAkB0Q,EAAK/Q,KAAKqB,cAAc,IAAMyK,EAAWe,iBAC3DnC,KAAKqK,gBAAgBhE,EAAM1Q,GAC3BuV,EAAYvV,EAAgBgB,cAAc,IAAMyK,EAAWkB,aAAe,IAAMlB,EAAWtO,WAG3FkN,KAAK8K,YAAYnY,GAErB,IAAImZ,EAAY9L,KAAK+L,gBAAgBpZ,EAAIkW,GACzCjR,QAAMkU,GAAatO,YAAW0N,GAAYA,EAAUpU,UAAUmH,SAASmD,EAAWnO,WAClF+M,KAAK0I,QAAQ,SAAUoD,KAG/B1I,EAASlK,UAAUwV,iBAAmB,SAAU7F,GAC5C,OAAQA,EAAE8F,SACN,KAAK,GACD3O,KAAKiN,eAAepE,GACpB,MACJ,KAAK,GACD7I,KAAKiN,eAAepE,GAAG,GACvB,MACJ,KAAK,GACD7I,KAAKsN,gBAAgBzE,GACrB,MACJ,KAAK,GACD7I,KAAKsN,gBAAgBzE,GAAG,GACxB,MACJ,KAAK,GACD7I,KAAKwO,gBAAgB3F,GACrB,MACJ,KAAK,EACG7I,KAAK9J,cAAgB8J,KAAK2E,WAAW3E,KAAK2E,WAAWrT,OAAS,IAC9D0O,KAAKiL,kBAETjL,KAAKyL,OACL,MACJ,KAAK,GACDzL,KAAKyO,gBAAgB5F,KAIjCzF,EAASlK,UAAU0V,mBAAqB,SAAU/F,GACrB,UAArBA,EAAEgG,gBAA8BhG,EAAEiG,SA15B1B,IA05B+E,aAAzBjG,EAAEkG,cAAcxY,OAC1EyJ,KAAK9J,cAAgB8J,KAAK2E,WAAW3E,KAAK2E,WAAWrT,OAAS,IAC9D0O,KAAKiL,kBAETjL,KAAKyL,SAGbrI,EAASlK,UAAU8V,SAAW,WAC1B,GAAI5d,OAAOC,KAAK2O,KAAK/L,YAAY3C,QAAU0O,KAAK2I,MAAO,CACnD,IAAIuE,EAAiBlN,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,SAC3D0N,EAAgBjP,KAAK2I,MAAMhS,cAAc,0BACzCuW,IACAA,EAAepW,UAAUsD,OAAOgH,EAAWG,SACvC0N,IAAkBjP,KAAK9J,cACvB+Y,EAAcnY,UAAUC,IAAIqK,EAAWlO,aAKvDkQ,EAASlK,UAAUgW,WAAa,WAC5BC,eAAapY,IAAIiJ,KAAK9H,QAAS,UAAW8H,KAAK0O,iBAAkB1O,MACjEmP,eAAapY,IAAIiJ,KAAK9H,QAAS,QAAS8H,KAAKuL,aAAcvL,MAC3DmP,eAAapY,IAAIiJ,KAAK9H,QAAS,YAAa8H,KAAK6M,aAAc7M,MAC/DmP,eAAapY,IAAIiJ,KAAK9H,QAAS,WAAY8H,KAAKgN,aAAchN,MAC9DmP,eAAapY,IAAIiJ,KAAK9H,QAAS,WAAY8H,KAAKgP,SAAUhP,MAC1DA,KAAKoP,YAAc,IAAIC,QAAMrP,KAAK9H,SAAWoX,MAAOtP,KAAK4O,mBAAmB7F,KAAK/I,SAErFoD,EAASlK,UAAUqW,aAAe,WAC9BJ,eAAa/U,OAAO4F,KAAK9H,QAAS,QAAS8H,KAAKuL,cAChD4D,eAAa/U,OAAO4F,KAAK9H,QAAS,YAAa8H,KAAK6M,cACpDsC,eAAa/U,OAAO4F,KAAK9H,QAAS,WAAY8H,KAAKgN,cACnDmC,eAAa/U,OAAO4F,KAAK9H,QAAS,YAAa8H,KAAK6M,cACpDsC,eAAa/U,OAAO4F,KAAK9H,QAAS,WAAY8H,KAAKgN,cACnDhN,KAAKoP,YAAYI,WAErBpM,EAASlK,UAAU0S,YAAc,WAE7B,IAAK,IAAI1a,EAAK,EAAGue,EADDzP,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWG,SACrBrQ,EAAKue,EAAYne,OAAQJ,IAAM,CAC3Due,EAAYve,GAClB4F,UAAUsD,OAAOgH,EAAWG,WAGxC6B,EAASlK,UAAU8S,YAAc,WAC7B,IAAI0D,EAAU1P,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWE,OACtDoO,GACAA,EAAQ5Y,UAAUsD,OAAOgH,EAAWE,QAG5C8B,EAASlK,UAAU+S,aAAe,SAAUtZ,GACxC,GAAI3B,oBAAkB2B,GAElB,IAAK,IAAIzB,EAAK,EAAGye,EADA3P,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWlO,UACpBhC,EAAKye,EAAare,OAAQJ,IAAM,CACxE,IAAI0e,EAAMD,EAAaze,GACnB8O,KAAK9J,cAAgB0Z,EAAIjZ,cAAc,IAAMyK,EAAWnO,WAIxD2c,EAAI5Y,aAAa,gBAAiB,SAClC4Y,EAAI9Y,UAAUsD,OAAOgH,EAAWlO,gBAKxCP,EAAGmE,UAAUsD,OAAOgH,EAAWlO,UAC/BP,EAAGqE,aAAa,gBAAiB,UAGzCoM,EAASlK,UAAUgR,UAAY,SAAUvX,GACrC,OAAQA,GAAMA,EAAGmE,UAAUmH,SAASmD,EAAWK,YACvC9O,EAAGmE,UAAUmH,SAASmD,EAAWQ,iBACjCjP,EAAGmE,UAAUmH,SAASmD,EAAWY,UAE7CoB,EAASlK,UAAU2S,cAAgB,SAAUlZ,EAAIkW,GAC7C,GAAI7I,KAAKkK,UAAUvX,IAAOqN,KAAKgG,QAAUhG,KAAK9J,aAAc,CACpD8J,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,UAC1CvB,KAAK2I,MAAMhS,cAAc,IAAMyK,EAAWG,SAASzK,UAAUsD,OAAOgH,EAAWG,SAEnF5O,EAAGmE,UAAUC,IAAIqK,EAAWG,SAC5B,IAAI5L,EAAkBhD,EAAGgE,cAAc,IAAMyK,EAAWe,iBACpD+I,EAAYvV,EAAgBgB,cAAc,IAAMyK,EAAWkB,aAAe,IAAMlB,EAAWtO,MAC/FkN,KAAKgM,cACAd,EAAUpU,UAAUmH,SAASmD,EAAWnO,UAMzCiY,EAAUpU,UAAUsD,OAAOgH,EAAWnO,SACtCN,EAAGmE,UAAUsD,OAAOgH,EAAWlO,UAC/BP,EAAGqE,aAAa,gBAAiB,WAPjCkU,EAAUpU,UAAUC,IAAIqK,EAAWnO,SACnCN,EAAGmE,UAAUC,IAAIqK,EAAWlO,UAC5BP,EAAGqE,aAAa,gBAAiB,SAOrCrB,EAAgBqB,aAAa,eAAgBkU,EAAUpU,UAAUmH,SAASmD,EAAWnO,SACjF,OAAS,SACb,IAAI6Y,EAAY9L,KAAK+L,gBAAgBpZ,EAAIkW,GACzCjR,QAAMkU,GAAatO,UAAW0N,EAAUpU,UAAUmH,SAASmD,EAAWnO,WAClE+M,KAAKqE,sBACLrE,KAAKwE,qBAAqBqH,cAAclZ,EAAIkW,GAEhD7I,KAAK0I,QAAQ,SAAUoD,GACvB9L,KAAK6K,oBAAoBlY,GACzBqN,KAAK6P,cAAcld,KAG3ByQ,EAASlK,UAAU6S,gBAAkB,SAAUpZ,EAAIkW,GAC/C,IAEIiH,EAFAjV,EAAOmF,KAAKoL,YAAYzY,GACxB5B,EAAYH,EAAeiK,EAAMmF,KAAKmE,eAAerT,QAIrDgf,GAFC9e,oBAAkB6J,IACc,iBAAvBmF,KAAK/L,WAAW,IAAiD,iBAAvB+L,KAAK/L,WAAW,IACnDqB,KAAM3C,EAAII,KAAMJ,GAAMA,EAAGqJ,UAAU4C,OAAQ/D,KAAMmF,KAAK/L,aAKjEqB,KAAM3C,EAAII,KAAMhC,GAAaA,EAAUiP,KAAKmE,eAAerT,OAAOiC,MAEhE8H,KAAMA,GAElB,IAAIiR,KAKJ,OAJAlU,QAAMkU,EAAWgE,GACbjH,GACAjR,QAAMkU,GAAaiE,cAAc,EAAMC,MAAOnH,EAAG3W,MAAO8N,KAAK2I,OAAS1P,MAAMC,UAAUH,QAAQzG,KAAK0N,KAAK2I,MAAMvW,SAAUO,KAErHmZ,GAEX1I,EAASlK,UAAU2R,oBAAsB,SAAUlY,GAC/C,IAAIkI,EAAOmF,KAAKoL,YAAYzY,GAExB5B,EAAYH,EAAeiK,EAAMmF,KAAKmE,eAAerT,QACpDE,oBAAkB6J,IAAyC,iBAAvBmF,KAAK/L,WAAW,IACtB,iBAAvB+L,KAAK/L,WAAW,GAQxB+L,KAAKqL,eACD/V,KAAM3C,EAENI,KAAMhC,GAAaA,EAAUiP,KAAKmE,eAAerT,OAAOiC,MAExD8H,KAAMA,GAZVmF,KAAKqL,eACD/V,KAAM3C,EACNI,KAAMJ,GAAMA,EAAGqJ,UAAU4C,OACzB/D,KAAMmF,KAAK/L,aAavBmP,EAASlK,UAAUgT,YAAc,SAAUvZ,EAAIkW,GAC3C,GAAI7I,KAAKkK,UAAUvX,KAAQA,EAAGmE,UAAUmH,SAASmD,EAAWlO,WAAa8M,KAAKgG,OAAQ,CAC7EhG,KAAK9J,cACN8J,KAAKiM,eAETtZ,EAAGmE,UAAUC,IAAIqK,EAAWlO,UAC5BP,EAAGqE,aAAa,gBAAiB,QACjCgJ,KAAKgM,cACLhM,KAAK6K,oBAAoBlY,GACrBqN,KAAKqE,sBACLrE,KAAKwE,qBAAqB0H,YAAYvZ,EAAIkW,GAE9C,IAAIiD,EAAY9L,KAAK+L,gBAAgBpZ,EAAIkW,GACzC7I,KAAK0I,QAAQ,SAAUoD,GACvB9L,KAAKiQ,WAAatd,EAClBqN,KAAK6P,cAAcld,KAG3ByQ,EAASlK,UAAU6T,WAAa,SAAUpa,GACtC,GAAIqN,KAAKkK,UAAUvX,KAAQA,EAAGmE,UAAUmH,SAASmD,EAAWE,QAAUtB,KAAKgG,OAAQ,CAC/E,IAAIkK,EAASlQ,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWE,OACxD4O,GAAUA,EAAO5e,QACjBmU,cAAYyK,EAAQ9O,EAAWE,OAE9B3O,EAAGmE,UAAUmH,SAASmD,EAAWlO,YAAa8M,KAAK9J,cACpDvD,EAAGmE,UAAUC,IAAIqK,EAAWE,SAKxC8B,EAASlK,UAAUkM,SAAW,WAC1B,IAAI+K,EAAYnQ,KAAK2E,WACrB,GAAIwL,EAAU7e,OAAQ,CAElB,IAAK,IADD2G,EAAK+H,KAAKoQ,UACLlf,EAAK,EAAGmf,EAAcF,EAAWjf,EAAKmf,EAAY/e,OAAQJ,IAAM,CACrE,IAAIuN,EAAM4R,EAAYnf,GAClBof,KAEJA,EAAMtQ,KAAKlP,OAAOgE,IAAM2J,EACxBuB,KAAKuQ,UAAYvQ,KAAKwQ,eAAevY,EAAIqY,GACzC,IAAIvf,EAAYH,EAAeoP,KAAKuQ,UAAWvQ,KAAKmE,eAAerT,QACnEmH,EAAK+H,KAAKuQ,UAAYxf,EAAUiP,KAAKlP,OAAO+E,OAASoC,EAEzD,OAAOA,EAEX,OAAO+H,KAAKoQ,WAEhBhN,EAASlK,UAAUkS,YAAc,SAAUzY,GACvC,IAGI8d,EAHAxc,EAAa+L,KAAK/L,sBAAsB2F,cACxCoG,KAAKoQ,UAAYpQ,KAAK/L,WACtBnD,EAASkP,KAAK0Q,cAAc/d,GAQhC,OALI8d,EADAzf,oBAAkBgP,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAW/N,YAAc2M,KAAKlP,OAAO2M,QAChFuC,KAAKmF,UAGLlR,EAEL+L,KAAKwQ,eAAeC,EAAO3f,IAEtCsS,EAASlK,UAAUsX,eAAiB,SAAUvc,EAAYnD,EAAQ6f,GAC9D,IACIC,EADAvN,EAAQrD,KAmCZ,OAjCI/L,GAAcA,EAAW3C,QAAUR,EACnCmD,EAAW4c,KAAK,SAAUhW,GACtB,IAAI9J,EAEJH,EAAeiK,EAAMwI,EAAMc,eAAerT,QAE1C,IAAKA,EAAOuS,EAAMvS,OAAOgE,MAAOhE,EAAOuS,EAAMvS,OAAOiC,OAC9CjC,EAAOuS,EAAMvS,OAAOgE,OAAS9D,oBAAkBD,EAAUsS,EAAMvS,OAAOgE,MACpE/D,EAAUsS,EAAMvS,OAAOgE,IAAImC,cAAgBnG,EAAOuS,EAAMvS,OAAOgE,IAAImC,YACrEnG,EAAOuS,EAAMvS,OAAOiC,OAAShC,EAAUsS,EAAMvS,OAAOiC,QAAUjC,EAAOuS,EAAMvS,OAAOiC,MAGnF,GAAoB,iBAAT8H,IAAmD,IAA9B5G,EAAW8E,QAAQ8B,GACpD+V,EAAcD,EAAS1c,EAAa4G,OAEnC,IAAK7J,oBAAkBF,EAAOuS,EAAMvS,OAAOgE,MAAQ9D,oBAAkBD,EAAUsS,EAAMvS,OAAOgE,KAAM,CACnG,IAAInC,EAAK0Q,EAAMnL,QAAQvB,cAAc,cAC/B7F,EAAOuS,EAAMvS,OAAOgE,IAAM,MAE5BnC,GAAMA,EAAGqJ,UAAU4C,SAAW7N,EAAUsS,EAAMvS,OAAOiC,QACrD6d,EAAa/V,QAIZ9J,EAAUgF,eAAesN,EAAMvS,OAAO+E,QAAU9E,EAAUsS,EAAMvS,OAAO+E,OAAOvE,SACnFsf,EAAavN,EAAMmN,eAAezf,EAAUsS,EAAMvS,OAAO+E,OAAQ/E,EAAQ6f,SAfzEC,EAAcD,EAAS1c,EAAa4G,EAiBxC,QAAS+V,IAIbA,EAAa3c,EAEV2c,GAEXxN,EAASlK,UAAU4X,SAAW,WAC1B,IAAIC,KACAzX,EAAS0G,KAAK1G,MAAQ0G,KAAK1G,MAAQ,IAAIC,QAC3C,IAAKyG,KAAK1G,MAAO,CAEb,IAAK,IAAIpI,EAAK,EAAGC,EAAKC,OAAOC,KAAK2O,KAAKlP,OAAOsT,YAAalT,EAAKC,EAAGG,OAAQJ,IAAM,CAC7E,IAAI8f,EAAS7f,EAAGD,GACD,cAAX8f,GAA6BhR,KAAKlP,OAAOkgB,IACzChR,KAAKlP,OAAOkgB,KACRld,WAAS0B,oBAAoBwb,KACY,IAA1CD,EAAQhY,QAAQiH,KAAKlP,OAAOkgB,KAC/BD,EAAQ5e,KAAK6N,KAAKlP,OAAOkgB,IAGjC1X,EAAM2X,OAAOF,GAET/Q,KAAKlP,OAAOsT,WAAWrO,eAAe,cACtCuD,EAAM1H,KAAKoO,KAAKlP,OAAOogB,WAG/B,OAAO5X,GAEX8J,EAASlK,UAAUiY,kBAAoB,SAAUld,QAC1B,IAAfA,IAAyBA,EAAa+L,KAAKoQ,WAC3Cnc,GAAc+L,KAAKlP,OAAO2M,QACH,SAAnBuC,KAAK5G,UACL4G,KAAKmF,UAAYrR,WAASoK,gBAAgBpK,WAAS6F,cAAc1F,EAAYH,WAASqF,WAAW6G,KAAK5G,UAAW4G,KAAKlP,OAAOuI,SAAU2G,KAAKmE,eAAerT,OAAQkP,KAAK5G,WAGxK4G,KAAKmF,UAAYrR,WAASoK,gBAAgBjK,EAAY+L,KAAKmE,eAAerT,OAAQkP,KAAK5G,WAGtFnF,GAAiC,SAAnB+L,KAAK5G,UACxB4G,KAAKmF,UAAYrR,WAAS6F,cAAc1F,EAAYH,WAASqF,WAAW6G,KAAK5G,UAAW4G,KAAKlP,OAAOuI,SAGpG2G,KAAKmF,UAAYlR,GAGzBmP,EAASlK,UAAUkY,cAAgB,WAC/B,OAAOpR,KAAK2I,MAAM7R,UAAUmH,SAAS,eAEzCmF,EAASlK,UAAUmY,aAAe,WAC9B,IAAIhO,EAAQrD,KACZA,KAAK0I,QAAQ,eAEb,IAAI4I,EAAoBtR,KACxB,GAAIA,KAAK/L,sBAAsB2F,cAC3BoG,KAAK/L,WAAWsd,aAAavR,KAAK8Q,YAAYU,KAAK,SAAU3I,GACrDxF,EAAMoO,cAGVpO,EAAM+M,UAAYvH,EAAE6I,OACfrO,EAAMiB,kBAAsBC,cAC7B+M,EAAkBrH,cAAcqH,EAAkBzM,kBAEtDxB,EAAMsO,aACNtO,EAAMqF,QAAQ,iBAAkBG,MACjC+I,MAAM,SAAU/I,GACXxF,EAAMoO,aAGVpO,EAAMqF,QAAQ,gBAAiBG,UAGlC,GAAK7I,KAAK/L,YAAe+L,KAAK/L,WAAW3C,OAW1C0O,KAAKoQ,UAAYpQ,KAAK/L,WACtB+L,KAAK2R,aACL3R,KAAK0I,QAAQ,kBAAoB7N,KAAMmF,KAAKoQ,gBAbM,CAClD,IAAIxd,EAAKoN,KAAK9H,QAAQvB,cAAc,MAChC/D,IACAwH,SAAOxH,GACPoN,KAAK0G,eAAgBzS,WAAYH,WAASgG,sBAAsBlH,KAAO,GACvEoN,KAAKoQ,UAAYpQ,KAAK/L,WACtB+L,KAAK2R,aACL3R,KAAK0I,QAAQ,kBAAoB7N,KAAMmF,KAAKoQ,eASxDhN,EAASlK,UAAUwL,SAAW,WACrBH,cAAevE,KAAKsE,mBAAoBtE,KAAKqE,uBAC9CrE,KAAK6R,uBACL7R,KAAKiK,cAAcjK,KAAKwG,WACxBxG,KAAKiK,cAAcjK,KAAK1C,WACxB0C,KAAKiK,cAAcjK,KAAK6E,kBAEpB7E,KAAKoH,SACLpH,KAAK8R,iBAE0C,IAA/C1gB,OAAOC,KAAKiY,QAAQvQ,QAAQ,gBAC5BiH,KAAK9H,QAAQqE,UAAY,IAE7ByD,KAAKwG,UAAYxG,KAAK1C,UAAY0C,KAAKjB,kBAAetN,EACtDuO,KAAKX,UAETW,KAAKqR,gBAETjO,EAASlK,UAAUmM,iBAAmB,WAClCrF,KAAK6R,uBACL7R,KAAKmR,kBAAkBnR,KAAKmF,WAC5BnF,KAAK6E,iBAAiBtI,UAAY,GAClCyD,KAAKrC,aACLqC,KAAK+R,cAAc/R,KAAK2I,QAE5BvF,EAASlK,UAAU8Y,cAAgB,SAAUC,GACzC,IAAK,IAAIjd,EAAI,EAAGA,EAAIid,EAAW3gB,OAAQ0D,IAAK,CACxC,IAAIkD,EAAU+Z,EAAWjd,GACrBkD,EAAQpB,UAAUmH,SAAS,iBAC3B/F,EAAQlB,aAAa,KAAMgJ,KAAK9H,QAAQpD,GAAK,IAAMoD,EAAQoU,aAAa,aACxEpU,EAAQlB,aAAa,gBAAiB,SACtCkB,EAAQlB,aAAa,WAAY,SAI7CoM,EAASlK,UAAUyE,WAAa,WAC5BqC,KAAK0J,qBACL1J,KAAK2J,cAAe,EACpB3J,KAAK1C,UAAY0C,KAAK2I,MAAQ7U,WAAS6J,WAAWqC,KAAKhM,cAAegM,KAAKmF,UAAWnF,KAAKmE,eAAgB,KAAMnE,MACjHA,KAAKjB,aAAeiB,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UACjEzB,KAAKgS,cAAchS,KAAKjB,cACxBiB,KAAKmH,uBAAsB,IAE/B/D,EAASlK,UAAU2Y,qBAAuB,WAEtC,IAAIK,EAAqBC,kBACrBnS,KAAKvI,WACLya,EAAmBlS,KAAK8J,yBACxBsI,sBAAoBpS,KAAK8J,qBAAsBlH,IAE/C5C,KAAKrD,gBACLuV,EAAmBlS,KAAK+J,8BACxBqI,sBAAoBpS,KAAK+J,0BAA2BlH,IAEpD7C,KAAKtC,gBACL0U,sBAAoBpS,KAAKkH,2BAA4BpE,IAG7DM,EAASlK,UAAUiO,sBAAwB,SAAU1P,EAAUiG,EAAgB2U,QAC1D,IAAb5a,IAAuBA,GAAW,QACf,IAAnBiG,IAA6BA,GAAiB,QACpB,IAA1B2U,IAAoCA,GAAwB,GAC5DrS,KAAKvI,UAAYA,IAAauI,KAAKqE,sBACnCiO,uBAAqBtS,KAAK8J,qBAAsBlH,EAA4B5C,KAAMqS,GAElFrS,KAAKrD,eAAiBlF,IAAauI,KAAKqE,sBACxCiO,uBAAqBtS,KAAK+J,0BAA2BlH,EAAiC7C,KAAMqS,GAE5FrS,KAAKtC,gBAAkBA,GACvB4U,uBAAqBtS,KAAKkH,2BAA4BpE,EAAkC9C,KAAMqS,IAGtGjP,EAASlK,UAAUqZ,eAAiB,SAAU1J,GAC1C7I,KAAK0I,QAAQ,gBAAiBG,IAElCzF,EAASlK,UAAUsZ,gBAAkB,WACjCxS,KAAK1C,UAAY0C,KAAK2I,MAAQ3I,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWI,YACtExB,KAAK2I,QAEL3I,KAAKjB,aAAeiB,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,YAGzE2B,EAASlK,UAAUuZ,kBAAoB,WAEnC,IAAInB,EAAoBtR,KACxB0S,WAAW,WAEP,IAAK,IADDrJ,EAAciI,EAAkBpZ,QAAQvB,cAAc,IAAMyK,EAAWuB,yBAClE3N,EAAI,EAAGA,EAAIqU,EAAYsJ,kBAAmB3d,IAAK,CACpD,IAAI4d,EAAkBvJ,EAAYjX,SAAS4C,GACvC6d,OAAe,EACfC,OAAqB,EACzB,GAAIxB,EAAkBpb,aAClB,GAAIob,EAAkB/N,sBAAsBjS,OAAS,EACjD,IAAK,IAAI+M,EAAI,EAAGA,EAAIiT,EAAkB/N,sBAAsBjS,OAAQ+M,IAC5DuU,EAAgBtG,aAAa,cAAgBgF,EAAkB/N,sBAAsBlF,IACrFuU,EAAgB9b,UAAUC,IAAI,YAC9B6b,EAAgB5b,aAAa,gBAAiB,QAC1C4b,EAAgBjc,cAAc,qBAC9Bic,EAAgBjc,cAAc,oBAAoBG,UAAUC,IAAI,WAEpE8b,EAAe7d,GAGX6d,IAAiB7d,IACjB4d,EAAgB9b,UAAUsD,OAAO,YACjCwY,EAAgBzF,gBAAgB,iBAC5ByF,EAAgBjc,cAAc,aAC9Bic,EAAgBjc,cAAc,YAAYG,UAAUsD,OAAO,iBAO3EwY,EAAgB9b,UAAUsD,OAAO,YACjCwY,EAAgBzF,gBAAgB,iBAC5ByF,EAAgBjc,cAAc,aAC9Bic,EAAgBjc,cAAc,YAAYG,UAAUsD,OAAO,gBAK/DwY,EAAgBtG,aAAa,cAAgBgF,EAAkB/N,sBAAsB,IACrFqP,EAAgB9b,UAAUC,IAAI,YAC9B6b,EAAgB5b,aAAa,gBAAiB,UAG9C4b,EAAgB9b,UAAUsD,OAAO,YACjCwY,EAAgBzF,gBAAgB,kBAGxC,GAAImE,EAAkB9N,YAAYlS,OAAS,EACvC,IAAK,IAAIuN,EAAI,EAAGA,EAAIyS,EAAkB9N,YAAYlS,OAAQuN,IAClD+T,EAAgBtG,aAAa,cAAgBgF,EAAkB/N,sBAAsB1E,IACrF+T,EAAgBtb,MAAMC,QAAU,OAChCub,EAAqB9d,GAGjB8d,IAAuB9d,IACvB4d,EAAgBtb,MAAMC,QAAU,MAKhD,GAAI+Z,EAAkB7N,aAAanS,OAAS,EACxC,IAAK,IAAIyhB,EAAI,EAAGA,EAAIzB,EAAkB7N,aAAanS,OAAQyhB,IACnDH,EAAgBtG,aAAa,cAAgBgF,EAAkB7N,aAAasP,IACxEH,EAAgB9b,UAAUmH,SAAS,eACnC2U,EAAgB9b,UAAUsD,OAAO,cAKjD,GAAIkX,EAAkB5N,cAAcpS,OAAS,EACzC,IAAK,IAAI0hB,EAAI,EAAGA,EAAI1B,EAAkB5N,cAAcpS,OAAQ0hB,IACpDJ,EAAgBtG,aAAa,cAAgBgF,EAAkB5N,cAAcsP,KACxEJ,EAAgB9b,UAAUmH,SAAS,eACpC2U,EAAgB9b,UAAUC,IAAI,iBAMnD,MAEPqM,EAASlK,UAAU+Z,oBAAsB,WACrC,IAAIrgB,EAAK8Y,UAAQ1L,KAAK3C,UAAUsO,WAAY,IAAMvK,EAAWI,YACzD0R,EAASlT,KAAK9H,QAAQpD,GACtBwI,EAAYnB,SAASgX,eAAeD,GACpCE,EAAkB9V,EAAU+V,qBAAqB,MAAM/V,EAAU+V,qBAAqB,MAAM/hB,OAAS,GACzG0O,KAAKuH,WAAW3U,EAAIwgB,GACpBpT,KAAK3C,UAAY,MAErB+F,EAASlK,UAAU2W,cAAgB,SAAUld,GACzCqN,KAAK3C,UAAY1K,EACjB,IAAI6J,EAAM7J,EAAG2Z,aAAa,YAC1B,GAAI3Z,EAAGmE,UAAUmH,SAASmD,EAAW/N,WAAamJ,EAAK,CACnD,IAAI5J,EAAK8Y,UAAQ/Y,EAAGgZ,WAAY,IAAMvK,EAAWI,YAC7CoO,EAAM5P,KAAK9H,QAAQvB,cAAc,SAAY6F,EAAM,MAGvD,GAFAwD,KAAK2E,WAAWxS,KAAKqK,GACrBwD,KAAKmR,kBAAkBnR,KAAKoF,aACvBwK,EAAK,CACN,IAAI/U,EAAOmF,KAAKmF,UAChB,GAAIZ,cAAcvE,KAAKsE,iBAEnBtE,KAAKiF,eAAeC,kBAAkB,sBAAuBrK,OAE5D,CACD+U,EAAM9b,WAASyE,mBAAmByH,KAAKhM,cAAe6G,EAAMmF,KAAKmE,eAAgBnE,KAAK2E,WAAWrT,OAAQ,KAAM0O,MAE3GA,KAAKoH,SACLpH,KAAKqH,uBAET,IAAIiM,EAAQ1D,EAAIzV,iBAAiB,IAAMiH,EAAWK,UAClDzB,KAAKgS,cAAcsB,GACnB1D,EAAI5Y,aAAa,MAAOwF,GACxBoT,EAAItY,MAAMC,QAAU,OACpByI,KAAK+R,cAAcnC,GACnB5P,KAAKmH,uBAAsB,IAOnC,GAJK5C,cAAevE,KAAKsE,mBAAoBtE,KAAKqE,sBAC9CrE,KAAKuH,WAAW3U,EAAIgd,GAExB5P,KAAKjB,aAAeiB,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAC7DzB,KAAKqL,cAAe,CACpB,IAAIta,EAAYH,EAAeoP,KAAKqL,cAAcxQ,KAAMmF,KAAKmE,eAAerT,QAE5EkP,KAAKX,OAAQtO,EAAUiP,KAAKmE,eAAerT,OAAOiC,OAAQ,EAAM,UAEpEiN,KAAKiQ,gBAAaxe,IAG1B2R,EAASlK,UAAU6Y,cAAgB,SAAUnC,GACzC5P,KAAK6E,iBAAiBrS,YAAYod,IAEtCxM,EAASlK,UAAUyY,WAAa,SAAU9W,GACtCmF,KAAKmR,kBAAkBtW,GAClB0J,cAAevE,KAAKsE,mBAAoBtE,KAAKqE,uBAC1CrE,KAAKqE,sBACDjT,OAAOC,KAAK2O,KAAK/L,YAAY3C,SACvBiT,cAAcvE,KAAKsE,mBAChBtE,KAAKvI,WAAYuI,KAAKrD,eAAmBqD,KAAKwE,qBAAqB+O,iBAChEvT,KAAKoH,SACuB,iBAAjBpH,KAAKvI,WACZuI,KAAKmE,eAAe1M,SAAW,MAEF,iBAAtBuI,KAAKrD,gBACZqD,KAAKmE,eAAexH,cAAgB,QAIxCqD,KAAKmE,eAAe1M,SAAW,KAC/BuI,KAAKmE,eAAexH,cAAgB,MAExCqD,KAAKmE,eAAe9O,YAAc2K,KAAKwE,qBAAqBgP,aAAazK,KAAK/I,KAAKwE,wBAI/FxE,KAAKwE,qBAAqBiP,qBAG1BzT,KAAKrC,aACLqC,KAAK6E,iBAAmB7E,KAAKhM,cAAc,OAASqC,UAAW+K,EAAWa,UAC1EjC,KAAK9H,QAAQ1F,YAAYwN,KAAK6E,kBAC9B7E,KAAK+R,cAAc/R,KAAK1C,WAEpB0C,KAAKoH,SACLpH,KAAKqH,0BAKrBjE,EAASlK,UAAUwX,cAAgB,SAAUgD,GACzC,IAAI5iB,KAQJ,OAPI4iB,aAAeC,QAEf7iB,EAAOkP,KAAKlP,OAAOgE,IAAM4e,EAAIpH,aAAa,YAG1Cxb,EAAS4iB,EAEN5iB,GAKXsS,EAASlK,UAAU0a,OAAS,WACnBrP,cAAevE,KAAKsE,iBAarBtE,KAAK6T,YAAW,IAZhB7T,KAAK9H,QAAQpB,UAAUC,IAAIqK,EAAWC,MACtClG,aAAW6E,KAAK9H,SAAW6D,KAAM,OAAQ+X,SAAU,MACnD9T,KAAK+D,cACL/D,KAAKkE,eACLlE,KAAKgE,YACLhE,KAAKiE,UACLjE,KAAKkP,aACLlP,KAAKX,SACLW,KAAKqR,eACLrR,KAAK8D,oBAKT9D,KAAK+T,SAAWC,eAAahU,KAAK9H,SAC9B+b,SAAU,IAAM7S,EAAWK,WAE/BzB,KAAKkU,kBAET9Q,EAASlK,UAAU2a,WAAa,SAAUM,GAClB,OAAhBA,IACAA,GAAc,GAElBnU,KAAKqR,eACLrR,KAAKmR,kBAAkBnR,KAAKoQ,WAC5BpQ,KAAK6E,iBAAmB7E,KAAK9H,QAAQvB,cAAc,IAAMyK,EAAWa,SAChEkS,GACAnU,KAAKkP,cAMb9L,EAASlK,UAAUsW,QAAU,WACzBxP,KAAK6R,uBAED7R,KAAKoH,SACLpH,KAAK8R,gBAET9R,KAAKuP,eACL,IAAI6E,GAAWhT,EAAWC,KAAMD,EAAWY,QAAS,QAChD,eAAgB,SAAS2K,OAAO3M,KAAKrL,SAASuG,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,KAC5FC,eAAazF,KAAK9H,SAAUkc,GAC5BpU,KAAK9H,QAAQiV,gBAAgB,QAC7BnN,KAAK9H,QAAQiV,gBAAgB,YAC7BnN,KAAK2I,MAAQ3I,KAAK1C,UAAY0C,KAAKjB,aAAeiB,KAAKwG,eAAY/U,EAC7D8S,cAAcvE,KAAKsE,iBAKrBtE,KAAK9H,QAAQZ,MAAMC,QAAU,QAJ7ByI,KAAK9H,QAAQqE,UAAY,GACzByG,EAAO9J,UAAUsW,QAAQld,KAAK0N,QAStCoD,EAASlK,UAAUuS,KAAO,WACtB,IAAI4I,EAAMrU,KAAK2E,WAAW3E,KAAK2E,WAAWrT,OAAS,GACnD,QAAYG,IAAR4iB,IAAqBrU,KAAKoR,gBAA9B,CAGApR,KAAK2E,WAAW2P,MAChBtU,KAAKmR,kBAAkBnR,KAAKoF,YAC5B,IAAImP,EAAOvU,KAAK9H,QAAQvB,cAAc,cAAiB0d,EAAM,MACzDG,EAASxU,KAAK2I,MACb4L,EAOGA,EADAhQ,cAAcvE,KAAKsE,kBAAoBtE,KAAKqE,qBACrCkQ,EAAKjN,cAAcA,cAAcA,cAGjCiN,EAAKjN,eAThBtH,KAAKrC,aACLqC,KAAK+R,cAAc/R,KAAK1C,WACxBiX,EAAOvU,KAAK2I,OAUhB,IAEI5V,EAFYnC,EAAeoP,KAAKuQ,UAAWvQ,KAAKmE,eAAerT,QAE9CkP,KAAKlP,OAAOiC,MACjCiN,KAAKuH,WAAWiN,EAAQD,GAAM,GAC9BvU,KAAK4L,cACL,IAAIjZ,EAAKqN,KAAK9H,QAAQvB,cAAc,cAAiB0d,EAAM,MAC3D1hB,EAAGmE,UAAUsD,OAAOgH,EAAWY,SAC/BrP,EAAGmE,UAAUC,IAAIqK,EAAWG,SACxBvB,KAAK9J,cAAgBvD,EAAGgE,cAAc,IAAMyK,EAAWkB,cAAcxL,UAAUmH,SAASmD,EAAWnO,SACnGN,EAAGqE,aAAa,gBAAiB,SAGjCrE,EAAGmE,UAAUsD,OAAOgH,EAAWlO,UAC/BP,EAAGqE,aAAa,gBAAiB,UAErCgJ,KAAKjB,aAAeiB,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAC7DzB,KAAKvD,qBACLuD,KAAK0G,eAAgB9B,YAAa+B,qBAAmBC,SAAS5G,KAAK4E,eAAgB,GAEvF5E,KAAKX,OAAQW,KAAK2E,WAAWrT,OAASyB,EAAOiN,KAAK4E,cAAe5E,KAAK2E,WAAWrT,OAAwB,YAO7G8R,EAASlK,UAAUub,WAAa,SAAUnf,GAClC0K,KAAKqE,qBACLrE,KAAKwE,qBAAqBiQ,WAAWnf,GAEhC0K,KAAK9J,aACV8J,KAAK6L,cAAc7L,KAAK4K,sBAAsBtV,KAGd,IAA5BtE,oBAAkBsE,GAClB0K,KAAKiM,eAGLjM,KAAKkM,YAAYlM,KAAK4K,sBAAsBtV,KAIxD8N,EAASlK,UAAU0R,sBAAwB,SAAU8I,GACjD,IAAI/gB,EACAsB,EAAa+L,KAAK/L,sBAAsB2F,cACxCoG,KAAKoQ,UAAYpQ,KAAK/L,WAC1B,IAAKjD,oBAAkB0iB,GACnB,GAA6B,iBAAlBzf,EAAW,IAA4C,iBAAlBA,EAAW,GACvD,GAAIyf,aAAeC,SAEf,IAAK,IADDe,EAAMhB,EAAIpH,aAAa,YAAYrV,WAC9BjC,EAAI,EAAGA,EAAIgL,KAAKjB,aAAazN,OAAQ0D,IAC1C,GAAIgL,KAAKjB,aAAa/J,GAAGsX,aAAa,YAAYrV,aAAeyd,EAAK,CAClE/hB,EAAKqN,KAAKjB,aAAa/J,GACvB,YAKRiE,MAAMC,UAAU2X,KAAKve,KAAK0N,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,UAAW,SAAUnM,GACxF,OAAIA,EAAK0G,UAAU4C,SAAW8U,EAAIzc,aAC9BtE,EAAK2C,GACE,SAQlB,CACD,IAAIsb,EAAa5Q,KAAKoL,YAAYsI,GAC9B3iB,EAAYH,EAAeggB,EAAY5Q,KAAKmE,eAAerT,QAC/D,GAAI8f,IACAje,EAAKqN,KAAK9H,QAAQvB,cAAc,cAC1B5F,EAAUiP,KAAKlP,OAAOgE,IAAM,OAC7BkL,KAAKqE,sBAAwBrT,oBAAkB2B,IAE3C,CAAA,IADDma,EAAQ9M,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWK,UAC3D,IAASzM,EAAI,EAAGA,EAAI8X,EAAMxb,OAAQ0D,IAE1B8X,EAAM9X,GAAGgH,UAAU4C,SAAW7N,EAAUiP,KAAKlP,OAAOiC,QACpDJ,EAAKma,EAAM9X,KAOnC,OAAOrC,GAQXyQ,EAASlK,UAAUyb,oBAAsB,SAAUrf,GAC/C,IAAKtE,oBAAkBsE,GACnB,IAAK,IAAIN,EAAI,EAAGA,EAAIM,EAAKhE,OAAQ0D,IACxBhE,oBAAkBsE,EAAKN,KACxBgL,KAAKyU,WAAWnf,EAAKN,KAKrCoO,EAASlK,UAAU0b,YAAc,WAC7B,IAAIC,KACJ,GAAI7U,KAAK2J,aACL,IAAK,IAAI3U,EAAIgL,KAAK2E,WAAWrT,OAAS,EAAG0D,GAAK,EAAGA,IAC7C6f,EAAS1iB,KAAK6N,KAAK2E,WAAW3P,IAGtC,OAAO6f,GAOXzR,EAASlK,UAAU4b,iBAAmB,WAElC,IAAIC,EACAC,GAAc,EAClBhV,KAAK6J,cACL,IAAI5V,EAAa+L,KAAK/L,sBAAsB2F,cACxCoG,KAAKoQ,UAAYpQ,KAAK/L,WAC1B,GAAI+L,KAAKqE,uBAAyB2Q,EAC9BD,EAAa/U,KAAKwE,qBAAqBsQ,mBACvCE,GAAc,OAEb,GAAIhV,KAAK9J,eAAiB8e,EAAa,CAExC,IAAIjW,EAAeiB,KAAK2I,MAAMsM,uBAAuB7T,EAAWlO,UAC5DgiB,KACAC,KACJnV,KAAK6J,cAEL,IAAK,IADDuL,KACKpgB,EAAI,EAAGA,EAAI+J,EAAazN,OAAQ0D,IACrC,GAA6B,iBAAlBf,EAAW,IAA4C,iBAAlBA,EAAW,GACvDihB,EAAiB/iB,KAAK4M,EAAa/J,GAAGgH,UAAU4C,YAE/C,CACD,IAAIyW,EAAWrV,KAAKoL,YAAYrM,EAAa/J,IACzCjE,EAAYH,EAAeykB,EAAUrV,KAAKmE,eAAerT,QACzDkP,KAAK2J,aACLyL,EAAWjjB,MAAO0I,KAAMwa,EAAUR,SAAU7U,KAAK4U,gBAGjDO,EAAiBhjB,KAAKkjB,GAEtBtkB,GAEAmkB,EAAiB/iB,KAAKpB,EAAUiP,KAAKmE,eAAerT,OAAOiC,OAE3DiN,KAAK6J,WAAW1X,KAAKpB,EAAUiP,KAAKmE,eAAerT,OAAOgE,OAG1DogB,EAAiB/iB,UAAKV,GACtBuO,KAAK6J,WAAW1X,UAAKV,IAIH,iBAAlBwC,EAAW,IACS,iBAAlBA,EAAW,IACjB+gB,IACJD,GAAezf,KAAMyJ,EAAclE,KAAM5G,EAAYlB,KAAMmiB,GAC3DF,GAAc,GAEdhV,KAAK2J,eAAiBqL,GACtBD,GAAezf,KAAMyJ,EAAclE,KAAMua,EAAYriB,KAAMmiB,GAC3DF,GAAc,GAERA,IACND,GAAezf,KAAMyJ,EAAclE,KAAMsa,EAAkBpiB,KAAMmiB,GACjEF,GAAc,QAGjB,IAAKA,EAAa,CACnB,IAAI3X,EAAY2C,KAAK9H,QAAQ+c,uBAAuB7T,EAAWlO,UAAU,GACrEnC,EAAYH,EAAeoP,KAAKoL,YAAY/N,GAAY2C,KAAKmE,eAAerT,QAClD,iBAAlBmD,EAAW,IACS,iBAAlBA,EAAW,IACjB+gB,EAOEA,IACFhkB,oBAAkBD,IAAcC,oBAAkBqM,IAClD0X,OAAatjB,EACbujB,GAAc,IAIdhV,KAAK6J,WAAW1X,KAAKpB,EAAUiP,KAAKmE,eAAerT,OAAOgE,KAC1DigB,GACIhiB,KAAMhC,EAAUiP,KAAKmE,eAAerT,OAAOiC,MAAOuC,KAAM+H,EACxDxC,KAAMmF,KAAKoL,YAAY/N,IAE3B2X,GAAc,KAlBlBD,EAAe/jB,oBAAkBqM,QAG7B5L,GAFA6D,KAAM+H,EAAWxC,KAAM5G,EACvBlB,KAAMsK,EAAUrB,UAAU4C,QAE9BoW,GAAc,GAkBtB,OAAIzQ,aAEOvE,KAAKsV,uBAAuBP,GAG5BA,GAIf3R,EAASlK,UAAUoc,uBAAyB,SAAUC,GAClD,IAAIC,GACA3a,QACA3I,SACA2iB,YACA9hB,SAEJ,IAAK/B,oBAAkBukB,GAAuB,CAC1C,IAAKvkB,oBAAkBukB,EAAqB1a,MACxC,GAAImF,KAAK9J,cAAgB8J,KAAK2J,aAAc,CACxC,IAAK,IAAI3U,EAAI,EAAGA,EAAIugB,EAAqB1a,KAAKvJ,OAAQ0D,IAClDwgB,EAAmB3a,KAAK1I,KAAKojB,EAAqB1a,KAAK7F,GAAG6F,MAEzD7J,oBAAkBukB,EAAqB1a,KAAK,KACzC7J,oBAAkBukB,EAAqB1a,KAAK,GAAGga,YACnDW,EAAmBX,SAAWU,EAAqB1a,KAAK,GAAGga,eAI/DW,EAAmB3a,KAAOmF,KAAKyV,oBAAoBF,EAAqB1a,MAG3E7J,oBAAkBukB,EAAqBxiB,QACxCyiB,EAAmBziB,KAAOiN,KAAKyV,oBAAoBF,EAAqBxiB,OAEvE/B,oBAAkBukB,EAAqBrjB,SACxCsjB,EAAmBtjB,MAAQ8N,KAAKyV,oBAAoBF,EAAqBrjB,QAGjF,OAAOsjB,GAGXpS,EAASlK,UAAUuc,oBAAsB,SAAUlX,GAC/C,OAAOtF,MAAMyc,QAAQnX,GAASA,EAAMlM,SAAWkM,IAQnD6E,EAASlK,UAAUyc,SAAW,SAAUrgB,GACpC,OAAO0K,KAAKoL,YAAY9V,IAO5B8N,EAASlK,UAAU0c,WAAa,SAAUtgB,GACtC0K,KAAK6V,aAAavgB,GAAM,GACpB0K,KAAKqE,sBACLrE,KAAKwE,qBAAqBoR,WAAWtgB,IAQ7C8N,EAASlK,UAAU4c,YAAc,SAAUxgB,GACvC0K,KAAK6V,aAAavgB,GAAM,GACpB0K,KAAKqE,sBACLrE,KAAKwE,qBAAqBsR,YAAYxgB,IAI9C8N,EAASlK,UAAU2c,aAAe,SAAUvgB,EAAMygB,GAC9C,IAAInF,EAAa5Q,KAAKoL,YAAY9V,GAC9BvE,EAAYH,EAAeggB,EAAY5Q,KAAKmE,eAAerT,QAC/D,GAAI8f,EAAY,CACZ,IAAIje,EAAKqN,KAAK9H,QAAQvB,cAAc,cAAgB5F,EAAUiP,KAAKlP,OAAOgE,IAAM,MAC5EihB,GACIpjB,GACAA,EAAGmE,UAAUsD,OAAOgH,EAAWY,gBAE5B4O,EAAW5Q,KAAKlP,OAAOsG,UAExB2e,IACFpjB,GACAA,EAAGmE,UAAUC,IAAIqK,EAAWY,SAGhC4O,EAAW5Q,KAAKlP,OAAOsG,UAAW,KAS9CgM,EAASlK,UAAU8c,SAAW,SAAU1gB,GACpC0K,KAAKiW,aAAa3gB,GAAM,EAAO,IAC3B0K,KAAKqE,sBACLrE,KAAKwE,qBAAqBwR,SAAS1gB,IAQ3C8N,EAASlK,UAAUgd,SAAW,SAAU5gB,GACpC0K,KAAKiW,aAAa3gB,GAAM,EAAM,QAC1B0K,KAAKqE,sBACLrE,KAAKwE,qBAAqB0R,SAAS5gB,IAG3C8N,EAASlK,UAAU+c,aAAe,SAAUvC,EAAKyC,EAAQ5e,GACrD,IAAIqZ,EAAa5Q,KAAKoL,YAAYsI,GAC9B3iB,EAAYH,EAAeggB,EAAY5Q,KAAKmE,eAAerT,QAC/D,GAAI8f,EAAY,CACZ,IAAIje,EAAKqN,KAAK9H,QAAQvB,cAAc,cAAgB5F,EAAUiP,KAAKlP,OAAOgE,IAAM,MAC5EnC,IACAA,EAAG2E,MAAMC,QAAUA,GAEnB4e,EAEAvF,EAAW5Q,KAAKlP,OAAOuG,YAAa,SAG7BuZ,EAAW5Q,KAAKlP,OAAOuG,aAgB1C+L,EAASlK,UAAUkd,QAAU,SAAUvb,EAAM/J,QAC1B,IAAXA,IAAqBA,OAASW,GAClC,IAAIwC,EAAa+L,KAAK/L,sBAAsB2F,cACtCoG,KAAKoQ,UAAYpQ,KAAK/L,WAC5B+L,KAAKqW,kBAAkBxb,EAAM/J,EAAQmD,IAEzCmP,EAASlK,UAAUmd,kBAAoB,SAAUxb,EAAM/J,EAAQmD,GAC3D,GAAI4G,aAAgB5B,MAChB,GAAI+G,KAAKqE,qBACLrE,KAAKwE,qBAAqB4R,QAAQvb,EAAM/J,EAAQmD,OAE/C,CACD,IAAIgE,EAAK+H,KAAKwQ,eAAevc,EAAYnD,GACrC+E,OAAQ,EACZ,GAAIoC,EAAI,EAEJpC,EADgBjF,EAAeqH,EAAI+H,KAAKmE,eAAerT,QACrCkP,KAAKlP,OAAO+E,UAE1BA,MAEJA,EAAQA,EAAM8W,OAAO9R,GAGzB,GAAI5C,aAAcgB,MAAO,CACrB,IAAK,IAAIjE,EAAI,EAAGA,EAAI6F,EAAKvJ,OAAQ0D,IAAK,CAClCf,EAAW9B,KAAK0I,EAAK7F,IACrBgL,KAAKmR,kBAAkBld,GAGvB,IAAIqiB,EAAWtW,KAAK6E,iBACd7E,KAAK6E,iBAAiBzS,SAAS,GAC/B,KAGF4N,KAAK6E,kBAAoByR,EACzBtW,KAAKuW,eAAe1b,EAAK7F,GAAIshB,EAAUtW,KAAKmF,WAG5CnF,KAAK0E,WAGT1E,KAAK2I,OACL3I,KAAKmH,uBAAsB,GAE/BnH,KAAKjB,aAAeiB,KAAK2I,MAAMxO,iBAAiB,IAAMiH,EAAWK,eAI7DxJ,IACAA,EAAG+H,KAAKlP,OAAO+E,OAASA,EACxBmK,KAAKwW,oBAAoBve,EAAI4C,MAMjDuI,EAASlK,UAAUsd,oBAAsB,SAAUC,EAAgBC,GAE/D,IAAIC,EAAeF,EAAezW,KAAKlP,OAAOgE,IAC1C8hB,EAAgBH,EAAezW,KAAKlP,OAAO+E,OAC3CghB,EAAsB7W,KAAK9H,QAAQvB,cAAc,SAAYggB,EAAe,MAC5EG,EAAW9W,KAAK9H,QAAQvB,cAAc,cAAiBggB,EAAe,MACtEL,EAAWO,IAETC,EACIpL,UAAQoL,EAAU,MAClB,MACNC,EAAWF,EAAsBD,GAAiBH,GAElDO,GAA0B,EAG9B,KAJyBF,IAAYA,EAAShgB,UAAUmH,SAASmD,EAAW/N,UAIpD,CACpB,IAAI4jB,EAAyBnjB,WAASyB,uBAAuByK,KAAKhM,cAAe+iB,EAAU/W,KAAKmE,eAAgB,KAAM,KAAMnE,MAC5HA,KAAKgS,cAAciF,GACnBX,EAASvkB,aAAaklB,EAAuB,GAAIH,GACjDhS,SAAOgS,GACPE,GAA0B,EAG9B,GAAIH,GAAuBH,EAAW,CAClC,IAAK,IAAI1hB,EAAI,EAAGA,EAAI0hB,EAAUplB,OAAQ0D,IAClC+hB,EAAS5kB,KAAKukB,EAAU1hB,IACxBgL,KAAKuW,eAAeG,EAAU1hB,GAAIshB,EAAUS,GAEhDC,GAA0B,EAE1BA,GACAhX,KAAKmH,uBAAsB,IAGnC/D,EAASlK,UAAUqd,eAAiB,SAAUW,EAAaZ,EAAUnR,GACjE,IAAIjT,EAAQiT,EAAUpM,QAAQme,GAC9BlX,KAAKmX,YAAYD,EAAahlB,EAAOokB,EAAUnR,GAC/C,IAAIiS,EAAYjS,EAAUjT,EAAQ,GAC9BklB,GAAaA,EAAUnmB,UAAuC,IAA3BmmB,EAAU7Y,MAAMjN,QACnD0O,KAAKmX,YAAYC,EAAYllB,EAAQ,EAAIokB,EAAUnR,IAG3D/B,EAASlK,UAAUie,YAAc,SAAUljB,EAAY/B,EAAOoL,EAAW6H,GACrE,IAAI5S,EAASyN,KAAK4K,sBAAsBzF,EAAUjT,EAAQ,KACtD8N,KAAK4K,sBAAsBzF,EAAUjT,EAAQ,KAAO,KACpDS,EAAKmB,WAASyB,uBAAuByK,KAAKhM,eAAgBC,GAAa+L,KAAKmE,eAAgB,KAAM,KAAMnE,MAM5G,GALAA,KAAKgS,cAAcrf,GAEfqN,KAAKvI,UAAYuI,KAAKoH,SACtBpH,KAAKqH,uBAELrH,KAAKlP,OAAO2M,SAAW0H,EAAUjT,EAAQ,IAAMiT,EAAUjT,EAAQ,GAAGjB,SAAU,CAC9E,IAAIomB,EAAYrX,KAAK4K,sBAAsBzF,EAAUjT,EAAQ,IACzDmlB,IACA9kB,EAAS8kB,EAAUC,oBAG3Bha,EAAUvL,aAAaY,EAAG,GAAIJ,IAQlC6Q,EAASlK,UAAUqe,WAAa,SAAUjiB,GACtC,IAAIkiB,EAAiBxX,KAAK/L,sBAAsB2F,cAC1CoG,KAAKoQ,UAAYpQ,KAAK/L,WACxB+L,KAAKqE,qBACLrE,KAAKwE,qBAAqB+S,WAAWjiB,IAGrC0K,KAAKyX,mBAAmBniB,EAAMkiB,GAC9BxX,KAAKmH,uBAAsB,KAGnC/D,EAASlK,UAAUue,mBAAqB,SAAU/D,EAAK8D,GACnD,IAGIvjB,EAHAoP,EAAQrD,KACRmF,EAAYnF,KAAKmF,UACjBrU,EAAS4iB,aAAeC,QAAU3T,KAAK0Q,cAAcgD,GAAOA,EAIhE,GADAzf,EAAa+L,KAAKwQ,eAAegH,EAAgB1mB,GAAQ,GACzC,CACZ,IAAI4mB,EAEJA,EAAS1X,KAAKwQ,eAAevc,EAAYnD,GACzC,IAAIoB,EAAQiT,EAAUpM,QAAQ2e,GAC1B/kB,EAAKqN,KAAK4K,sBAAsB8I,GAChCiE,OAAU,EACd3X,KAAK4X,mBAAmBjlB,GACpBqN,KAAKlP,OAAO2M,SAAWuC,KAAKmF,UAAUjT,EAAQ,IAC9CiT,EAAUjT,EAAQ,GAAGjB,UACiB,IAAtCkU,EAAUjT,EAAQ,GAAGqM,MAAMjN,QACvBqB,GAAMA,EAAGklB,uBAAuB/gB,UAAUmH,SAASmD,EAAWQ,iBAC7D5Q,oBAAkB2B,EAAG2kB,qBAAwB3kB,EAAG2kB,oBAC7C3kB,EAAG2kB,mBAAmBxgB,UAAUmH,SAASmD,EAAWQ,kBACxD+V,EAAUhlB,EAAGklB,wBAGjBllB,GACAmS,SAAOnS,GAEPglB,GACA7S,SAAO6S,GAGX,IAAIG,EAAa7jB,EAAW3C,OAAS,GAAM,EACrC0O,KAAK+X,WAAW/X,KAAKoQ,UAAWpQ,KAAKlP,OAAOgE,GAE9C,SAAUtD,GAAS,OAAOA,IAAUkmB,EAAOrU,EAAMvS,OAAOgE,KAAQ,MAAQ,KACxEkjB,EAAU/jB,EAAW8E,QAAQ2e,GAGjC,GAFAzjB,EAAWyF,OAAOse,EAAS,GAC3BhY,KAAKmR,kBAAkBqG,GACnBM,GACGA,EAAUnH,QACV1X,MAAMyc,QAAQoC,EAAUnH,OAAO3Q,KAAKlP,OAAO+E,SAC3CiiB,EAAUnH,OAAO3Q,KAAKlP,OAAO+E,OAAOvE,QAAU,EAAG,CACpD,IAAI2mB,EAAWjY,KAAK4K,sBAAsBkN,EAAUnH,QACpD,GAAIsH,EAAU,CACV,IAAIC,EAAOpkB,WAASyB,uBAAuByK,KAAKhM,eAAgB8jB,EAAUnH,QAAS3Q,KAAKmE,eAAgB,KAAM,KAAMnE,MACpHA,KAAKgS,cAAckG,GACnBD,EAAS3Q,cAAcvV,aAAammB,EAAK,GAAID,GAC7CA,EAAS3Q,cAAcsF,YAAYqL,IAGvChkB,EAAW3C,QAAU,GACrB0O,KAAKyL,OAETzL,KAAKjB,aAAe9F,MAAMC,UAAU7G,MAAMC,KAAK0N,KAAK9H,QAAQiC,iBAAiB,IAAMiH,EAAWK,aAItG2B,EAASlK,UAAU0e,mBAAqB,SAAUjlB,GAC9C,IAAIwlB,EAAOxlB,EAAKA,EAAG2Z,aAAa,YAAYrV,WAAWmhB,cAAgB,KACvE,GAAID,GAAQnY,KAAK2E,YAAc3E,KAAK2E,WAAWrT,OAAS,EACpD,KAAO0O,KAAK2E,WAAWkM,KAAK,SAAU/b,GAAM,OAAOA,EAAGmC,WAAWmhB,gBAAkBD,KAC/EnY,KAAKyL,QASjBrI,EAASlK,UAAUmf,oBAAsB,SAAU/iB,GAC/C,GAAIA,EAAKhE,OAAQ,CACb,IAAK,IAAI0D,EAAI,EAAGA,EAAIM,EAAKhE,OAAQ0D,IAC7BgL,KAAKuX,WAAWjiB,EAAKN,IAEzBgL,KAAKmH,uBAAsB,KAInC/D,EAASlK,UAAU6e,WAAa,SAAU9jB,EAAYa,EAAIwjB,EAAU3H,GAEhE,GAAI1c,EAAW8B,eAAejB,KAAoC,IAA7BwjB,EAASrkB,EAAWa,IACrD,OAAOL,YAAWR,GAEtB,IAAK,IAAIe,EAAI,EAAGA,EAAI5D,OAAOC,KAAK4C,GAAY3C,OAAQ0D,IAChD,GAAIf,EAAW7C,OAAOC,KAAK4C,GAAYe,KACkB,iBAA3Cf,EAAW7C,OAAOC,KAAK4C,GAAYe,IAAkB,CAE/D,IAAI0c,EAAS1R,KAAK+X,WAAW9jB,EAAW7C,OAAOC,KAAK4C,GAAYe,IAAKF,EAAIwjB,EAAUrkB,GACnF,GAAc,MAAVyd,EAIA,OAHKA,EAAOf,SACRe,EAAOf,OAASA,GAEbe,EAInB,OAAO,MAGXtO,EAASlK,UAAUqf,cAAgB,WAC/B,MAAO,YAEXnV,EAASlK,UAAUsf,gBAAkB,WACjC,IAAIC,KAIJ,OAHIzY,KAAKqE,sBACLoU,EAAQtmB,MAAOkU,MAAOrG,MAAO0Y,OAAQ,mBAElCD,GAKXrV,EAASlK,UAAUyf,eAAiB,WAChC,OAAO3Y,KAAK4Y,cAAc,WAAY,YAAa,iBAC/C,SAAU,SAAU,YAAa,cACjC,YAAa,WAAY,SAAU,QAAS,eAAgB,sBAEpEzY,GACI+C,WAAS,KACVE,EAASlK,UAAW,gBAAY,GACnCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,4BAAwB,GAC/CiH,GACI+C,gBACDE,EAASlK,UAAW,sBAAkB,GACzCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,cAAU,GACjCiH,GACI+C,gBACDE,EAASlK,UAAW,kBAAc,GACrCiH,GACI+C,cACDE,EAASlK,UAAW,aAAS,GAChCiH,GACI0Y,UAAQ/kB,WAAS0B,oBAAqBuN,IACvCK,EAASlK,UAAW,cAAU,GACjCiH,GACI+C,YAAWgF,OAAQ,YAAaF,SAAU,IAAKO,OAAQ,UACxDnF,EAASlK,UAAW,iBAAa,GACpCiH,GACI+C,WAAS,SACVE,EAASlK,UAAW,iBAAa,GACpCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,gBAAY,GACnCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,oBAAgB,GACvCiH,GACI+C,WAAS,SACVE,EAASlK,UAAW,wBAAoB,GAC3CiH,GACI+C,WAAS,KACVE,EAASlK,UAAW,mBAAe,GACtCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,kBAAc,GACrCiH,GACI+C,YAAS,IACVE,EAASlK,UAAW,2BAAuB,GAC9CiH,GACI+C,WAAS,KACVE,EAASlK,UAAW,cAAU,GACjCiH,GACI+C,WAAS,KACVE,EAASlK,UAAW,aAAS,GAChCiH,GACI+C,WAAS,OACVE,EAASlK,UAAW,gBAAY,GACnCiH,GACI+C,WAAS,OACVE,EAASlK,UAAW,sBAAkB,GACzCiH,GACI+C,WAAS,OACVE,EAASlK,UAAW,qBAAiB,GACxCiH,GACI2Y,WACD1V,EAASlK,UAAW,cAAU,GACjCiH,GACI2Y,WACD1V,EAASlK,UAAW,mBAAe,GACtCiH,GACI2Y,WACD1V,EAASlK,UAAW,sBAAkB,GACzCiH,GACI2Y,WACD1V,EAASlK,UAAW,qBAAiB,GACxCkK,EAAWjD,GACP4Y,yBACD3V,IAEL4V,aC3yEEC,EAAgC,WAChC,SAASA,EAAeC,GACpBlZ,KAAKmZ,kBAAoB,EACzBnZ,KAAKoZ,iBAAmBF,EAuuC5B,OAhuCAD,EAAe/f,UAAUqa,aAAe,WACpC,OAAQviB,oBAAkBgP,KAAKoZ,iBAAiBC,cAA6D,iBAAtCrZ,KAAKoZ,iBAAiBC,aAOjGJ,EAAe/f,UAAUua,iBAAmB,WACxCzT,KAAKsZ,iBAAgB,GACrB,IAAInU,EAAYnF,KAAKoZ,iBAAiBjU,UAClCoU,EAAUpU,EAAU9S,MAAM,EAAG,GAC3BkS,cAAcvE,KAAKoZ,iBAAiB9U,mBACtCtE,KAAKoZ,iBAAiB9b,UAAY0C,KAAKoZ,iBAAiBzQ,MAAQ7U,WAAS6J,WAEzEqC,KAAKoZ,iBAAiBplB,cAAeulB,EAASvZ,KAAKoZ,iBAAiBjV,eAAgB,KAAMnE,KAAKoZ,kBAC/FpZ,KAAKoZ,iBAAiBvU,iBAAmB7E,KAAKoZ,iBAAiBplB,cAAc,OAASqC,UAAW+K,EAAWa,UAC5GjC,KAAKoZ,iBAAiBlhB,QAAQ1F,YAAYwN,KAAKoZ,iBAAiBvU,kBAChE7E,KAAKoZ,iBAAiBvU,iBAAiBrS,YAAYwN,KAAKoZ,iBAAiB9b,YAE7E0C,KAAKqO,eAAiBrO,KAAKoZ,iBAAiB9b,UAAUzG,kBAAkBuS,wBAAwB1D,OAChG1F,KAAKwZ,qBAAuBxZ,KAAKyZ,kBAAkB,KACnDzZ,KAAK0Z,aAAe1Z,KAAKyZ,kBAAkBroB,OAAOC,KAAK2O,KAAKoZ,iBAAiBjU,WAAW7T,QACxF0O,KAAKmO,aAAe,EACpBnO,KAAK2Z,YAAc3Z,KAAK0Z,aAAe,EACvC,IAAIE,EAAUzU,EAAU9S,MAAM,EAAG2N,KAAK0Z,cACtC,GAAMnV,cAAcvE,KAAKoZ,iBAAiB9U,iBAiBtCtE,KAAKoZ,iBAAiBvU,iBAAmB7E,KAAKoZ,iBAAiBlhB,QAAQvB,cAAc,cACrFqJ,KAAKoZ,iBAAiBra,aAAeiB,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,UAlBzB,CACzD,IAAI0f,EAAY/lB,WAASyB,uBAEzByK,KAAKoZ,iBAAiBplB,cAAe4lB,EAAS5Z,KAAKoZ,iBAAiBjV,eAAgB,KAAM,KAAMnE,KAAKoZ,kBACrGzgB,SAAOkhB,EAAW7Z,KAAKoZ,iBAAiB9b,WACxC0C,KAAKoZ,iBAAiBra,aAAeiB,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,MAClF6F,KAAK8Z,WAAa9Z,KAAKoZ,iBAAiBplB,cAAc,OACtDgM,KAAKoZ,iBAAiB9b,UAAUvL,aAAaiO,KAAK8Z,WAAY9Z,KAAKoZ,iBAAiB9b,UAAUzG,mBAC9FmJ,KAAK+Z,cAAgB/Z,KAAKoZ,iBAAiBplB,cAAc,OACzDgM,KAAKoZ,iBAAiB9b,UAAUvL,aAAaiO,KAAK+Z,cAAe,MACjE/Z,KAAKga,YAAe5oB,OAAOC,KAAK8T,GAAW7T,OAAS0O,KAAKqO,eAAmBrO,KAAK0Z,aAAe1Z,KAAKqO,eACrGrO,KAAK8Z,WAAWxiB,MAAMoO,OAAS,MAC/B1F,KAAK+Z,cAAcziB,MAAMoO,OAAS1F,KAAKga,YAAc,KACrDha,KAAKia,iBAAmB,EACxBja,KAAKka,oBAAsBla,KAAKga,YAMpCha,KAAKma,SAAW,EAChBna,KAAKoa,2BAETnB,EAAe/f,UAAUogB,gBAAkB,SAAU9J,GAC5CA,GAyBsC,IAAnCxP,KAAKoZ,iBAAiBvT,UACtByD,OAAO+Q,oBAAoB,SAAUra,KAAKsa,iBAC1ChR,OAAO+Q,oBAAoB,SAAUra,KAAKua,YAG1CpL,eAAa/U,OAAO4F,KAAKoZ,iBAAiBlhB,QAAS,SAAU8H,KAAKwa,mBAClErL,eAAa/U,OAAO4F,KAAKoZ,iBAAiBlhB,QAAS,SAAU8H,KAAKya,oBA9BhElW,cAAcvE,KAAKoZ,iBAAiB9U,iBAUlCtE,KAAKoZ,iBAAiBvT,UAEtB7F,KAAKsa,gBAAkBI,WAAS1a,KAAKwa,kBAAkBzR,KAAK/I,MAAO,KACnEA,KAAKua,SAAWva,KAAKya,kBAAkB1R,KAAK/I,MAC5CsJ,OAAOqR,iBAAiB,SAAU3a,KAAKsa,iBACvChR,OAAOqR,iBAAiB,SAAU3a,KAAKua,YAGvCpL,eAAapY,IAAIiJ,KAAKoZ,iBAAiBlhB,QAAS,SAAUwiB,WAAS1a,KAAKwa,kBAAmB,KAAMxa,MACjGmP,eAAapY,IAAIiJ,KAAKoZ,iBAAiBlhB,QAAS,SAAU8H,KAAKya,kBAAmBza,OAlBlFA,KAAKoZ,iBAAiBvT,UACtB7F,KAAKsa,gBAAkBta,KAAKwa,kBAAkBzR,KAAK/I,MACnDsJ,OAAOqR,iBAAiB,SAAU3a,KAAKsa,kBAGvCnL,eAAapY,IAAIiJ,KAAKoZ,iBAAiBlhB,QAAS,SAAU8H,KAAKwa,kBAAmBxa,OA4BlGiZ,EAAe/f,UAAUuhB,kBAAoB,SAAU5R,GACnD,IAAIsR,EACAxX,EAA0B3C,KAAKoZ,iBAAiB9b,UAAU3G,cAAc,IAAMyK,EAAWuB,yBACzF3R,oBAAkBgP,KAAKoZ,iBAAiBjQ,kBACxCnJ,KAAKoZ,iBAAiBnQ,0BAItBkR,EAFAna,KAAKoZ,iBAAiBvT,SAEXvK,KAAKsf,MAAM/R,EAAEtW,OAAOsoB,gBAAgB3M,UAAYlO,KAAKoZ,iBAAiBjQ,iBAAmB,EAIzF7N,KAAKsf,MAAM/R,EAAEtW,OAAO2b,UAAYlO,KAAKoZ,iBAAiBjQ,iBAAmB,GAEvE,GAAKnJ,KAAKoZ,iBAAiBjQ,gBAAmB,EAC3DxG,EAAwBrL,MAAMmW,IAAM,MAGpC9K,EAAwBrL,MAAMmW,IAAM,EAAazN,KAAKoZ,iBAAiBjQ,gBAAkB,MAGjG8P,EAAe/f,UAAUugB,kBAAoB,SAAUqB,GACnD,IACIC,EADArV,EAASsV,WAAWrV,aAAW3F,KAAKoZ,iBAAiB1T,SAiBzD,OAdIqV,EADA/a,KAAKoZ,iBAAiBvT,SACVvK,KAAKsf,MAAOtR,OAAOC,YAAcvJ,KAAKqO,eAzHrC,GA4H+B,iBAAjCrO,KAAKoZ,iBAAiB1T,SAAsE,IAA/C1F,KAAKoZ,iBAAiB1T,OAAO3M,QAAQ,KAE7EuC,KAAKsf,MAAO5a,KAAKoZ,iBAAiBlhB,QAAQkR,wBAAwB1D,OAAS1F,KAAKqO,eA/HrF,KAkIK/S,KAAKsf,MAAOlV,EAAS1F,KAAKqO,eAlI/B,MAqICyM,IACZC,EAAYD,GAETC,GAEX9B,EAAe/f,UAAUkhB,wBAA0B,WAC/Cpa,KAAKib,WAAcC,iBAAqBC,uBAA2BC,sBAEnE,IAAK,IADDvgB,EAAOmF,KAAKoZ,iBAAiBjU,UACxBnQ,EAAI,EAAGA,EAAI6F,EAAKvJ,OAAQ0D,IACzBgL,KAAKoZ,iBAAiBljB,cAAgB2E,EAAK7F,GAAGgL,KAAKoZ,iBAAiBtoB,OAAO0M,YAC3EwC,KAAKib,UAAUC,cAAc/oB,KAAK6C,GAGjChE,oBAAkB6J,EAAK7F,GAAGgL,KAAKoZ,iBAAiBtoB,OAAOsG,WACvDyD,EAAK7F,GAAGgL,KAAKoZ,iBAAiBtoB,OAAOsG,UAErC4I,KAAKib,UAAUE,oBAAoBhpB,KAAK6C,GAGjD,GAAIgL,KAAKuT,eAEL,IAAK,IADDhV,EAAQyB,KAAKoZ,iBAAiBlhB,QAAQiC,iBAAiB,IAAMiH,EAAWK,UACnEvP,EAAQ,EAAGA,EAAQqM,EAAMjN,OAAQY,IACtCqM,EAAMrM,GAAOmpB,QAAUrb,KAAKoZ,iBAAiBkC,iBAAiBC,IAAIrpB,GAAOmpB,SAIrFpC,EAAe/f,UAAUoS,kBAAoB,WACzC,GAAItL,KAAKoZ,iBAAiBjU,UAAU7T,OAAQ,CACxC,IAAI6T,EAAYnF,KAAKoZ,iBAAiBjU,UAClCZ,cAAcvE,KAAKoZ,iBAAiB9U,iBACpCtE,KAAKoZ,iBAAiB9b,UAAUlL,SAAS,GAAGkF,MAAMoO,OAC7C1F,KAAKoZ,iBAAiBjQ,gBAAmB/X,OAAOC,KAAK8T,GAAiB,OAAK,MAGhFnF,KAAKqO,eAAiBrO,KAAK8Z,WAAW0B,YAAYpS,wBAAwB1D,OAC1E1F,KAAKga,YAAe5oB,OAAOC,KAAK8T,GAAW7T,OAAS0O,KAAKqO,eAAmBrO,KAAK0Z,aAAe1Z,KAAKqO,eACrGrO,KAAKka,oBAAsBla,KAAKga,YAChCha,KAAK+Z,cAAcziB,MAAMoO,OAAS1F,KAAKga,YAAc,QAIjEf,EAAe/f,UAAUuiB,kBAAoB,SAAUC,GACnD,OAAO1b,KAAKoZ,iBAAiBvT,SAAcoI,YAAcyN,GAAmB,EAAK,EAC5EzN,YAAcyN,EAAqB1b,KAAKoZ,iBAAiBlhB,QAAQgW,UAAYwN,GAAmB,EAAK,EACrG1b,KAAKoZ,iBAAiBlhB,QAAQgW,UAAYwN,GAEnDzC,EAAe/f,UAAUshB,kBAAoB,SAAU3R,GACnD,IAAI1X,EACAuqB,EAEAA,EADA1b,KAAKoZ,iBAAiBvT,SACL7F,KAAKoZ,iBAAiB9b,UAAU8L,wBAAwBqE,IACrEtR,SAAS0e,gBAAgBzR,wBAAwBqE,IAGpCzN,KAAKoZ,iBAAiB5S,UAAYxG,KAAKoZ,iBAAiB5S,UAAU4C,wBAAwB1D,OAAS,EAExH1F,KAAK2b,eAAiB3qB,oBAAkBgP,KAAK2b,gBAAkB,EAAI3b,KAAK2b,eACxE,IAAI3N,EAAShO,KAAKyb,kBAAkBC,GAKpC,GAJA1b,KAAKia,iBAAmBja,KAAKqO,eAAiB/S,KAAKC,MAAMyS,EAAShO,KAAKqO,gBACvErO,KAAKka,oBAAsBla,KAAKga,YAAcha,KAAKia,iBACnD9oB,EAAK6c,GAAUhO,KAAKga,aACfha,KAAKia,iBAAkBja,KAAKka,sBAAwBla,KAAKga,YAAa,GAAIha,KAAKia,iBAAmB9oB,EAAG,GAAI6O,KAAKka,oBAAsB/oB,EAAG,GACxIoT,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CACtD,IAAI6V,OAAW,EAWf,GAVInpB,oBAAkBgP,KAAKoZ,iBAAiBjQ,kBACxCnJ,KAAKoZ,iBAAiBnQ,yBAGtBkR,EADAna,KAAKoZ,iBAAiBvT,SACXvK,KAAKsf,MAAMze,SAAS0e,gBAAgB3M,UAAYlO,KAAKoZ,iBAAiBjQ,iBAItE7N,KAAKsf,MAAM/R,EAAEtW,OAAO2b,UAAYlO,KAAKoZ,iBAAiBjQ,kBAErD,EAAKnJ,KAAKmZ,mBAAqB,GAAMgB,EAAW,EAAKna,KAAKmZ,oBAAsB,EAAG,CAC/F,IAAI9S,GAAS8T,SAAUA,EAAW,EAAG9O,cAAerL,KAAKoZ,iBAAiB7V,uBAC1EvD,KAAKoZ,iBAAiBnU,eAAeC,kBAAkB,kBAAmBmB,GACtErG,KAAKoZ,iBAAiB9b,UAAU3G,cAAc,eAC9CqJ,KAAKoZ,iBAAiB9b,UAAU3G,cAAc,cAAcG,UAAUsD,OAAO,aAEjF4F,KAAKmZ,kBAAoBgB,EAAW,OAGvC,CACD,GAAIna,KAAKia,mBAAqBe,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAG3D,GAFA1F,KAAK8Z,WAAWxiB,MAAMoO,OAAS1F,KAAKia,iBAAmB,KACvDja,KAAK+Z,cAAcziB,MAAMoO,OAAS1F,KAAKka,oBAAsB,KACzDlM,EAAShO,KAAK2b,eAAgB,EAC1BxB,EAAW7e,KAAKsf,MAAQ5a,KAAKia,iBAAmBja,KAAKqO,eAAkBrO,KAAKma,WAChEna,KAAKwZ,qBAAuB,EACxCxZ,KAAK4b,aAAazB,GAAU,GAG5Bna,KAAK6b,eAAe1B,GAAU,OAGjC,EACGA,EAAW7e,KAAKsf,MAAO5a,KAAKma,SAAYna,KAAKia,iBAAmBja,KAAKqO,iBACzDrO,KAAKwZ,qBAAuB,EACxCxZ,KAAK4b,aAAazB,GAAU,GAG5Bna,KAAK6b,eAAe1B,GAAU,GAI1Cna,KAAKma,SAAW7e,KAAKsf,MAAM5a,KAAKia,iBAAmBja,KAAKqO,gBACN,mBAAvCrO,KAAKoZ,iBAAiBhL,cAC7BpO,KAAKoZ,iBAAiBhL,eAG9BpO,KAAK2b,eAAiB3N,GAE1BiL,EAAe/f,UAAU0iB,aAAe,SAAUzB,EAAU2B,GAGxD,IAAK,IAFD5pB,EAAQ4pB,EAAmB9b,KAAKmO,aAAegM,EAAana,KAAKmO,aAAegM,EAChF4B,EAAW/b,KAAKoZ,iBAAiB9b,UAAUnD,iBAAiB,MACvDnF,EAAI,EAAGA,EAAI+mB,EAASzqB,OAAQ0D,IACjCgL,KAAKgc,SAASD,EAAS/mB,GAAI9C,GAC3BA,IAEJ8N,KAAK2Z,YAAcmC,EAAmB9b,KAAK2Z,YAAcQ,EAAana,KAAK2Z,YAAcQ,EACzFna,KAAKmO,aAAe2N,EAAmB9b,KAAKmO,aAAegM,EAAana,KAAKmO,aAAegM,GAEhGlB,EAAe/f,UAAU2iB,eAAiB,SAAU1B,EAAU2B,GAC1D,GAAIA,EACA,IAAK,IAAI9mB,EAAI,EAAGA,EAAImlB,EAAUnlB,IAAK,CAC/B,IAAI9C,IAAU8N,KAAK2Z,YACnB3Z,KAAKgc,SAAShc,KAAK8Z,WAAWxC,mBAAoBplB,EAAO8N,KAAK+Z,eAC9D/Z,KAAKmO,oBAIT,IAASnZ,EAAI,EAAGA,EAAImlB,EAAUnlB,IAAK,CAC3B9C,IAAU8N,KAAKmO,aAAnB,IACI5b,EAASyN,KAAK8Z,WAAW0B,YAC7Bxb,KAAKgc,SAAShc,KAAK+Z,cAAclC,uBAAwB3lB,EAAOK,GAChEyN,KAAK2Z,gBAIjBV,EAAe/f,UAAU+iB,gBAAkB,SAAU/jB,EAAShG,GAC1D,IAAIgqB,EAAYlc,KAAKoZ,iBAAiBjU,UAgBtC,GAfmD,iBAAxCnF,KAAKoZ,iBAAiBnlB,WAAW,IACO,iBAAxC+L,KAAKoZ,iBAAiBnlB,WAAW,IACxCiE,EAAQikB,QAAQzH,IAAM5gB,WAASiB,aAC/BmD,EAAQ+c,uBAAuB7T,EAAWO,cAAc,GAAGpF,UACvDyD,KAAKoZ,iBAAiBjU,UAAUjT,GAAO+E,aAI3CiB,EAAQikB,QAAQzH,IAAOwH,EAAUhqB,GAAO8N,KAAKoZ,iBAAiBtoB,OAAOgE,IAEhEonB,EAAUhqB,GAAO8N,KAAKoZ,iBAAiBtoB,OAAOgE,IAAOhB,WAASiB,aACnEmD,EAAQ+c,uBAAuB7T,EAAWO,cAAc,GAAGpF,UAEtD2f,EAAUhqB,GAAO8N,KAAKoZ,iBAAiBtoB,OAAOiC,OAEnDiN,KAAKoZ,iBAAiB5iB,WAClB0B,EAAQvB,cAAc,IAAMyK,EAAWM,WACvCoD,SAAO5M,EAAQvB,cAAc,IAAMyK,EAAWM,WAE9C1B,KAAKoZ,iBAAiBjU,UAAUjT,GAAO8N,KAAKoZ,iBAAiBtoB,OAAO2F,UAAU,CAC9E,IAAIrD,EAAc8E,EAAQvB,cAAc,IAAMyK,EAAWhO,aACrDb,EAASyN,KAAKoZ,iBAAiBplB,cAAc,OAC7CqC,UAAW+K,EAAWM,SAAW,IAC7B1B,KAAKoZ,iBAAiBjU,UAAUjT,GAAO8N,KAAKoZ,iBAAiBtoB,OAAO2F,WAE5ErD,EAAYrB,aAAaQ,EAAQ2F,EAAQvB,cAAc,IAAMyK,EAAWO,eAGhF,GAAI3B,KAAKoZ,iBAAiBljB,cAAgB8J,KAAKoZ,iBAAiBtoB,OAAO2M,QAAS,CACvEuC,KAAKoc,mBACNpc,KAAKoc,iBAAmBpc,KAAKoZ,iBAAiBzQ,MAAMhS,cAAc,IAAMyK,EAAWe,iBAAiBnI,WAAU,IAE9G5G,EAAc8E,EAAQvB,cAAc,IAAMyK,EAAWhO,aACrD4M,KAAKoZ,iBAAiBjU,UAAUjT,GAAOjB,SACnCiH,EAAQvB,cAAc,IAAMyK,EAAWe,mBACvCjK,EAAQpB,UAAUsD,OAAOgH,EAAWiB,WACpCjP,EAAY0D,UAAUsD,OAAOgH,EAAWgB,UACxC0C,SAAO5M,EAAQvB,cAAc,IAAMyK,EAAWe,mBAI7CjK,EAAQvB,cAAc,IAAMyK,EAAWe,mBACxCjK,EAAQpB,UAAUC,IAAIqK,EAAWiB,WACjCjP,EAAY0D,UAAUC,IAAIqK,EAAWgB,UACrChP,EAAYrB,aAAaiO,KAAKoc,iBAAiBpiB,WAAU,GAAO9B,EAAQvB,cAAc,IAAMyK,EAAWO,kBAKvHsX,EAAe/f,UAAUmjB,wBAA0B,SAAUnkB,EAAShG,GASlE,GARAgG,EAAQpB,UAAUsD,OAAOgH,EAAWY,SAChChC,KAAKib,UAAUE,oBAAoB7pB,SAAiE,IAAvD0O,KAAKib,UAAUE,oBAAoBpiB,QAAQ7G,IACxFgG,EAAQpB,UAAUC,IAAIqK,EAAWY,SAErC9J,EAAQZ,MAAMC,QAAU,GACpByI,KAAKib,UAAUG,kBAAkB9pB,SAA+D,IAArD0O,KAAKib,UAAUG,kBAAkBriB,QAAQ7G,KACpFgG,EAAQZ,MAAMC,QAAU,QAExByI,KAAKoZ,iBAAiBljB,aAAc,CACpC,IAAIomB,EAAmBpkB,EAAQvB,cAAc,IAAMyK,EAAWe,iBAC9DjK,EAAQpB,UAAUsD,OAAOgH,EAAWlO,UACpCgF,EAAQpB,UAAUsD,OAAOgH,EAAWG,SAChC+a,IACAA,EAAiBnP,gBAAgB,gBACjCmP,EAAiBzlB,kBAAkBC,UAAUsD,OAAOgH,EAAWnO,UAE/D+M,KAAKib,UAAUC,cAAc5pB,SAA2D,IAAjD0O,KAAKib,UAAUC,cAAcniB,QAAQ7G,KAC3E8N,KAAKoZ,iBAAiBzQ,MAAMhS,cAAcyK,EAAWlO,YACtDgF,EAAQpB,UAAUC,IAAIqK,EAAWlO,UACjCopB,EAAiBzlB,kBAAkBC,UAAUC,IAAIqK,EAAWnO,SAC5DqpB,EAAiBtlB,aAAa,eAAgB,QAC1CgJ,KAAKuc,cAAgBrqB,GACrBgG,EAAQpB,UAAUC,IAAIqK,EAAWG,eAKzCrJ,EAAQpB,UAAUsD,OAAOgH,EAAWlO,UACpCgF,EAAQiV,gBAAgB,iBACnBnc,oBAAkBgP,KAAKuc,cAAgBvc,KAAKuc,cAAgBrqB,GAC5D8N,KAAKoZ,iBAAiBzQ,MAAMhS,cAAcyK,EAAWlO,YACtDgF,EAAQpB,UAAUC,IAAIqK,EAAWlO,UACjCgF,EAAQlB,aAAa,gBAAiB,SAG1CgJ,KAAKoZ,iBAAiBtoB,OAAO2M,UACzBuC,KAAKoZ,iBAAiBjU,UAAUjT,GAAOjB,SACnCiH,EAAQpB,UAAUmH,SAASmD,EAAWK,YACtCvJ,EAAQpB,UAAUsD,OAAOgH,EAAWK,UACpCvJ,EAAQlB,aAAa,OAAQ,SAC7BkB,EAAQpB,UAAUC,IAAIqK,EAAWQ,gBAIjC1J,EAAQpB,UAAUmH,SAASmD,EAAWQ,iBACtC1J,EAAQpB,UAAUsD,OAAOgH,EAAWQ,eACpC1J,EAAQlB,aAAa,OAAQ,YAC7BkB,EAAQpB,UAAUC,IAAIqK,EAAWK,aAKjDwX,EAAe/f,UAAUsjB,qBAAuB,SAAUvkB,EAAInH,GAC1D,IAAIuS,EAAQrD,KACR4Q,KAkBJ,OAjBA9f,EAASkP,KAAKoZ,iBAAiB1I,cAAc5f,GACxCE,oBAAkBF,IACnBmH,EAAG4Y,KAAK,SAAUhW,EAAM3I,GACpB,SAAKpB,EAAOuS,EAAM+V,iBAAiBtoB,OAAOgE,KAEtChE,EAAOuS,EAAM+V,iBAAiBtoB,OAAOgE,OAE5B+F,EAAKwI,EAAM+V,iBAAiBtoB,OAAOgE,KAAO+F,EAAKwI,EAAM+V,iBAAiBtoB,OAAOgE,MAAQhE,IAAW+J,KACzG+V,EAAW1e,MAAQA,EACnB0e,EAAW/V,KAAOA,GACX,KAOZ+V,GAEXqI,EAAe/f,UAAU4b,iBAAmB,WACxC,IAAIzR,EAAQrD,KACZ,IAAKhP,oBAAkBgP,KAAKuc,cAAiBvc,KAAKoZ,iBAAiBljB,cAAgB8J,KAAKib,UAAUC,cAAc5pB,OAAS,CACrH,IAAImrB,KACAC,KACJ,GAAmD,iBAAxC1c,KAAKoZ,iBAAiBnlB,WAAW,IACO,iBAAxC+L,KAAKoZ,iBAAiBnlB,WAAW,GAAiB,CACzD,IAAI0oB,EAAc3c,KAAKoZ,iBAAiBjU,UACxC,GAAInF,KAAKoZ,iBAAiBljB,aAAc,CAEpC,IAAK,IADD0mB,EAAU5c,KAAKib,UAAUC,cACpBlmB,EAAI,EAAGA,EAAI4nB,EAAQtrB,OAAQ0D,IAChCynB,EAAetqB,KAAKwqB,EAAYC,EAAQ5nB,KAE5C,OACIjC,KAAM0pB,EAEN5hB,KAAM4hB,EACNvqB,MAAO8N,KAAKib,UAAUC,cAAc2B,IAAI,SAAU3qB,GAC9C,OAAOmR,EAAM+V,iBAAiBnlB,WAAW8E,QAAQ4jB,EAAYzqB,OAKrE,OACIa,KAAM4pB,EAAY3c,KAAKuc,aACvB1hB,KAAM8hB,EAAY3c,KAAKuc,aACvBrqB,MAAO8N,KAAKoZ,iBAAiBnlB,WAAW8E,QAAQ4jB,EAAY3c,KAAKuc,eAKzE,GAAIhY,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CACtD,IAAIwY,EAAaxhB,KAAKsf,MAAM5a,KAAKoZ,iBAAiBlhB,QAAQgW,UACtDlO,KAAKoZ,iBAAiBjQ,iBAAmB,EACzC2T,EAAa,IACbA,EAAa,GAEjB9c,KAAKuc,aAAeO,EAExB,IAAIC,EAAc/c,KAAKoZ,iBAAiBjU,UACpCpS,EAAOiN,KAAKoZ,iBAAiBtoB,OAAOiC,KACxC,GAAIiN,KAAKoZ,iBAAiBljB,aAAc,CAE/B,IADD8mB,EAAahd,KAAKib,UAAUC,cAChC,IAASlmB,EAAI,EAAGA,EAAIgoB,EAAW1rB,OAAQ0D,IACnC0nB,EAAevqB,KAAK4qB,EAAYC,EAAWhoB,IAAIjC,IAC/C0pB,EAAetqB,KAAK4qB,EAAYC,EAAWhoB,KAE/C,IAAIioB,EAAejd,KAAKoZ,iBAAiBnlB,sBAAsB2F,cACzDmjB,EAAc/c,KAAKoZ,iBAAiBnlB,WAC1C,OACIlB,KAAM2pB,EAEN7hB,KAAM4hB,EACNvqB,MAAO8N,KAAKib,UAAUC,cAAc2B,IAAI,SAAU3qB,GAC9C,OAAO+qB,EAAalkB,QAAQgkB,EAAY7qB,OAKhD,IAAI+B,EAAa+L,KAAKoZ,iBAAiBnlB,sBAAsB2F,cACvDmjB,EAAc/c,KAAKoZ,iBAAiBnlB,WAC1C,OACIlB,KAAMgqB,EAAY/c,KAAKuc,aAAavc,KAAKoZ,iBAAiBtoB,OAAOiC,MAEjE8H,KAAMkiB,EAAY/c,KAAKuc,aACvBrqB,MAAO+B,EAAW8E,QAAQgkB,EAAY/c,KAAKuc,iBAS/DtD,EAAe/f,UAAUub,WAAa,SAAUf,GAC5C,IAAIwJ,EAAYld,KAAKwc,qBAAqBxc,KAAKoZ,iBAAiBjU,UAAWuO,GAC3E,GAAItiB,OAAOC,KAAK6rB,GAAW5rB,OAAQ,CAC/B,IAAI6rB,EAAand,KAAKuc,cAAgBW,EAAUhrB,MAC5CsL,OAAY,EAehB,GAdAwC,KAAKuc,YAAcW,EAAUhrB,MACzB8N,KAAKoZ,iBAAiBljB,gBACyC,IAA3D8J,KAAKib,UAAUC,cAAcniB,QAAQmkB,EAAUhrB,QAC/CsL,GAAY,EACZwC,KAAKib,UAAUC,cAAc/oB,KAAK+qB,EAAUhrB,SAG5CsL,GAAY,EACZwC,KAAKib,UAAUC,cAAcxhB,OAAOsG,KAAKib,UAAUC,cAAcniB,QAAQmkB,EAAUhrB,OAAQ,IAE3F8N,KAAKoZ,iBAAiBzQ,MAAMhS,cAAc,IAAMyK,EAAWG,UAC3DvB,KAAKoZ,iBAAiBzQ,MAAMhS,cAAc,IAAMyK,EAAWG,SAASzK,UAAUsD,OAAOgH,EAAWG,UAGpGvB,KAAKoZ,iBAAiBxO,sBAAsB8I,GACxC1T,KAAKoZ,iBAAiBljB,aACtB8J,KAAKoZ,iBAAiBvN,cAAc7L,KAAKoZ,iBAAiBxO,sBAAsB8I,IAGhF1T,KAAKoZ,iBAAiBlN,YAAYlM,KAAKoZ,iBAAiBxO,sBAAsB8I,QAGjF,CACD,IAAI5H,OAAY,EAChB,GAAmD,iBAAxC9L,KAAKoZ,iBAAiBnlB,WAAW,IACO,iBAAxC+L,KAAKoZ,iBAAiBnlB,WAAW,GACxC6X,GACI/Y,KAAMiN,KAAKoZ,iBAAiBjU,UAAUnF,KAAKuc,aAC3C1hB,KAAMmF,KAAKoZ,iBAAiBjU,UAAUnF,KAAKuc,aAC3CrqB,MAAO8N,KAAKuc,iBAGf,CACD,IAAIpX,EAAYnF,KAAKoZ,iBAAiBjU,UACtC2G,GACI/Y,KAAMoS,EAAUnF,KAAKuc,aAAavc,KAAKoZ,iBAAiBtoB,OAAOiC,MAC/D8H,KAAMsK,EAAUnF,KAAKuc,aACrBrqB,MAAO8N,KAAKuc,aAGhBvc,KAAKoZ,iBAAiBljB,cACtB4V,EAAUtO,UAAYA,EACtBwC,KAAKoZ,iBAAiB1Q,QAAQ,SAAUoD,IAElCqR,IACNnd,KAAKoZ,iBAAiBnN,eACtBjM,KAAKoZ,iBAAiB1Q,QAAQ,SAAUoD,UAI3C9a,oBAAkB0iB,KAAS1T,KAAKoZ,iBAAiBljB,eACtD8J,KAAKoZ,iBAAiBnN,eACtBjM,KAAKuc,iBAAc9qB,GAEvB,GAAI8S,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CAEtD,IAAI8Y,EAAYF,EAAUriB,KAAKmF,KAAKoZ,iBAAiBtoB,OAAOgE,IAC5D,GAAIkL,KAAKoZ,iBAAiBljB,aACtB,GAAK8J,KAAKoZ,iBAAiB7V,sBAAsB8I,SAAS+Q,GAGrD,CACD,IAAIC,EAAgBrd,KAAKoZ,iBAAiB7V,sBAAsBxK,QAAQqkB,GACpEC,GAAiB,GACjBrd,KAAKoZ,iBAAiB7V,sBAAsB7J,OAAO2jB,EAAe,QALtErd,KAAKoZ,iBAAiB7V,sBAAsBpR,KAAKirB,QAUrDpd,KAAKoZ,iBAAiB7V,sBAAsB,GAAK6Z,EAErDpd,KAAKoZ,iBAAiB3G,sBAG9BwG,EAAe/f,UAAU0c,WAAa,SAAUlC,GAC5C,IAAIwJ,EAAYld,KAAKwc,qBAAqBxc,KAAKoZ,iBAAiBjU,UAAWuO,GAC3E,GAAInP,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CAEtD,IAAIgZ,EAASJ,EAAUriB,KAAKmF,KAAKoZ,iBAAiBtoB,OAAOgE,IAKzD,GAJKkL,KAAKoZ,iBAAiB3V,aAAa4I,SAASiR,KAC7Ctd,KAAKoZ,iBAAiB3V,aAAatR,KAAKmrB,GACxCtd,KAAKoZ,iBAAiB3G,qBAEtBzS,KAAKoZ,iBAAiB1V,cAAc2I,SAASiR,GAAS,CACtD,IAAID,EAAgBrd,KAAKoZ,iBAAiB1V,cAAc3K,QAAQukB,GAC5DD,GAAiB,GACjBrd,KAAKoZ,iBAAiB1V,cAAchK,OAAO2jB,EAAe,SAK9DjsB,OAAOC,KAAK6rB,GAAW5rB,QACvB0O,KAAKib,UAAUE,oBAAoBzhB,OAAOsG,KAAKib,UAAUE,oBAAoBpiB,QAAQmkB,EAAUhrB,OAAQ,IAInH+mB,EAAe/f,UAAU4c,YAAc,SAAUpC,GAC7C,IAAIwJ,EAAYld,KAAKwc,qBAAqBxc,KAAKoZ,iBAAiBjU,UAAWuO,GAC3E,GAAInP,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CAEtD,IAAIiZ,EAAcL,EAAUriB,KAAKmF,KAAKoZ,iBAAiBtoB,OAAOgE,IAK9D,GAJKkL,KAAKoZ,iBAAiB1V,cAAc2I,SAASkR,KAC9Cvd,KAAKoZ,iBAAiB1V,cAAcvR,KAAKorB,GACzCvd,KAAKoZ,iBAAiB3G,qBAEtBzS,KAAKoZ,iBAAiB3V,aAAa4I,SAASkR,GAAc,CAC1D,IAAIF,EAAgBrd,KAAKoZ,iBAAiB3V,aAAa1K,QAAQwkB,GAC3DF,GAAiB,GACjBrd,KAAKoZ,iBAAiB3V,aAAa/J,OAAO2jB,EAAe,SAK7DjsB,OAAOC,KAAK6rB,GAAW5rB,SAA2E,IAAjE0O,KAAKib,UAAUE,oBAAoBpiB,QAAQmkB,EAAUhrB,QACtF8N,KAAKib,UAAUE,oBAAoBhpB,KAAK+qB,EAAUhrB,QAI9D+mB,EAAe/f,UAAU8c,SAAW,SAAUtC,GAC1C,IAAIwJ,EAAYld,KAAKwc,qBAAqBxc,KAAKoZ,iBAAiBjU,UAAWuO,GAC3E,GAAInP,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CAEtD,IAAIkZ,EAAkBN,EAAUriB,KAAKmF,KAAKoZ,iBAAiBtoB,OAAOgE,IAClE,GAAIkL,KAAKoZ,iBAAiB5V,YAAY6I,SAASmR,GAAkB,CAC7D,IAAIH,EAAgBrd,KAAKoZ,iBAAiB5V,YAAYzK,QAAQykB,GAC1DH,GAAiB,IACjBrd,KAAKoZ,iBAAiB7V,sBAAsB7J,OAAO2jB,EAAe,GAClErd,KAAKoZ,iBAAiB3G,2BAK1BrhB,OAAOC,KAAK6rB,GAAW5rB,QACvB0O,KAAKib,UAAUG,kBAAkB1hB,OAAOsG,KAAKib,UAAUG,kBAAkBriB,QAAQmkB,EAAUhrB,OAAQ,IAI/G+mB,EAAe/f,UAAUgd,SAAW,SAAUxC,GAC1C,IAAIwJ,EAAYld,KAAKwc,qBAAqBxc,KAAKoZ,iBAAiBjU,UAAWuO,GAC3E,GAAInP,cAAcvE,KAAKoZ,iBAAiB9U,iBAAkB,CAEtD,IAAI8Y,EAAYF,EAAUriB,KAAKmF,KAAKoZ,iBAAiBtoB,OAAOgE,IACvDkL,KAAKoZ,iBAAiB5V,YAAY6I,SAAS+Q,KAC5Cpd,KAAKoZ,iBAAiB5V,YAAYrR,KAAKirB,GACvCpd,KAAKoZ,iBAAiB3G,0BAItBrhB,OAAOC,KAAK6rB,GAAW5rB,SAAyE,IAA/D0O,KAAKib,UAAUG,kBAAkBriB,QAAQmkB,EAAUhrB,QACpF8N,KAAKib,UAAUG,kBAAkBjpB,KAAK+qB,EAAUhrB,QAI5D+mB,EAAe/f,UAAUqe,WAAa,SAAU7D,GAC5C,IAAIzf,EACAkR,EAAYnF,KAAKoZ,iBAAiBjU,UAClC+X,EAAYld,KAAKwc,qBAAqBrX,EAAWuO,GACjDnP,cAAcvE,KAAKoZ,iBAAiB9U,uBACZ7S,IAApByrB,EAAUhrB,OACV8N,KAAKoZ,iBAAiBnU,eAAeC,kBAAkB,qBAAsBgY,EAAUhrB,OAG3Fd,OAAOC,KAAK6rB,GAAW5rB,SACvB2C,EAAaipB,EAAUriB,KACnBsK,EAAU+X,EAAUhrB,MAAQ,IAC5BiT,EAAU+X,EAAUhrB,MAAQ,GAAGjB,UAET,IADrBkU,EAAU+X,EAAUhrB,MAAQ,GACxBqM,MAAMjN,QACX0O,KAAKyd,aAAaP,EAAUhrB,MAAQ,GACpC8N,KAAKyd,aAAaP,EAAUhrB,MAAQ,IAG9BqS,cAAcvE,KAAKoZ,iBAAiB9U,kBACtCtE,KAAKyd,aAAaP,EAAUhrB,QAIxC,IAAIslB,EAAiBxX,KAAKoZ,iBAAiBnlB,sBAAsB2F,cAC3DoG,KAAKoZ,iBAAiBhJ,UAAYpQ,KAAKoZ,iBAAiBnlB,WAC1D/B,EAAQslB,EAAeze,QAAQ9E,IACpB,IAAX/B,IACAslB,EAAe9d,OAAOxH,EAAO,GAC7B8N,KAAKoZ,iBAAiBjI,kBAAkBqG,IAG5CxX,KAAKoZ,iBAAiBra,aAClBiB,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,OAGrD8e,EAAe/f,UAAU2S,cAAgB,SAAUlZ,EAAIkW,GAC/CtE,cAAcvE,KAAKoZ,iBAAiB9U,mBACpCtE,KAAKmO,aAAe7S,KAAKsf,MAAM5a,KAAKoZ,iBAAiBlhB,QAAQgW,UAAY,IAAM,EAC3ElO,KAAKmO,aAAe,IACpBnO,KAAKmO,aAAe,IAG5B,IAAIjc,EAAQ+G,MAAMC,UAAUH,QAAQzG,KAAK0N,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,MAAOxH,GAAMqN,KAAKmO,aACxGnO,KAAKuc,YAActjB,MAAMC,UAAUH,QAAQzG,KAAK0N,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,MAAOxH,GAAMqN,KAAKmO,aAC3Gxb,EAAGmE,UAAUmH,SAASmD,EAAWlO,WACoB,IAAjD8M,KAAKib,UAAUC,cAAcniB,QAAQ7G,IACrC8N,KAAKib,UAAUC,cAAc/oB,KAAKD,GAItC8N,KAAKib,UAAUC,cAAcxhB,OAAOsG,KAAKib,UAAUC,cAAcniB,QAAQ7G,GAAQ,IAIzF+mB,EAAe/f,UAAUgT,YAAc,SAAUvZ,EAAIkW,GACjD7I,KAAKuc,YAActjB,MAAMC,UAAUH,QAAQzG,KAAK0N,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,MAAOxH,GAAMqN,KAAKmO,cAEnH8K,EAAe/f,UAAUiS,YAAc,SAAUlY,GAC7C,GAAIA,EAAS,CACT+M,KAAKib,UAAUC,iBACflb,KAAKuc,iBAAc9qB,EAEnB,IAAK,IADDoJ,EAAOmF,KAAKoZ,iBAAiBjU,UACxBjT,EAAQ,EAAGA,EAAQ2I,EAAKvJ,OAAQY,IAChC2I,EAAK3I,GAAOjB,UACb+O,KAAKib,UAAUC,cAAc/oB,KAAKD,QAK1C8N,KAAKuc,iBAAc9qB,EACnBuO,KAAKib,UAAUC,kBAGvBjC,EAAe/f,UAAUwkB,UAAY,SAAUxrB,GAK3C,IAAIgqB,EAAYlc,KAAKoZ,iBAAiBjU,UAYtC,GAXAnF,KAAK2d,gBAAgBzrB,GAAO,GACxB8N,KAAKuc,aAAevc,KAAKuc,aAAerqB,GACxC8N,KAAKuc,cAELvc,KAAKoZ,iBAAiBljB,cACtBgmB,EAAUhqB,GAAO8N,KAAKoZ,iBAAiBtoB,OAAO0M,YAC9CwC,KAAKib,UAAUC,cAAc/oB,KAAKD,GAEjC8oB,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,SAAYsV,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,UAClF1F,KAAK+Z,cAAcziB,MAAMoO,OAASsV,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,QAAU1F,KAAKqO,eAAiB,MAEtG2M,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,QAAS,CAC7C,IAAIkY,EAAS5d,KAAKoZ,iBAAiBzQ,MAAM6B,iBAAiBqT,iBACtDtrB,EAASyN,KAAKoZ,iBAAiBxO,sBAAsBsR,EAAUhqB,EAAQ,KACvE8N,KAAKoZ,iBAAiBxO,sBAAsBsR,EAAUhqB,EAAQ,OAE9D8N,KAAK+Z,cAAcziB,MAAMoO,OAASsV,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,QAAU1F,KAAKqO,eAAiB,KACtGrO,KAAKgc,SAAS4B,EAAQ1rB,EAAOK,QAGhC,CACGqrB,EAAS5d,KAAKoZ,iBAAiBzQ,MAAM9R,kBAAkB2kB,YAA3D,IACIjpB,OAAS,EAETA,EADCnB,OAAOC,KAAK2O,KAAKoZ,iBAAiBjU,WAAW7T,OAAS,IAAOY,EACrD8N,KAAKoZ,iBAAiBzQ,MAAM6B,iBAG5BxK,KAAKoZ,iBAAiBxO,sBAAsBsR,EAAUhqB,EAAQ,KACnE8N,KAAKoZ,iBAAiBxO,sBAAsBsR,EAAUhqB,EAAQ,IAEtE8N,KAAK8Z,WAAWxiB,MAAMoO,OAASsV,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAAU1F,KAAKqO,eAAiB,KAChGrO,KAAKmO,eACLnO,KAAK2Z,cACDpnB,IACAyN,KAAKgc,SAAS4B,EAAQ1rB,EAAOK,IACU,IAAnCyN,KAAKoZ,iBAAiBvT,SACtByD,OAAOwU,SAAS,EAAI7P,YAAcjO,KAAKqO,gBAGvCrO,KAAKoZ,iBAAiBlhB,QAAQgW,WAAalO,KAAKqO,gBAI5DrO,KAAKga,aAAeha,KAAKqO,eACzBrO,KAAKma,SAAW7e,KAAKsf,MAAMI,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAAU1F,KAAKqO,iBAE/E4K,EAAe/f,UAAUukB,aAAe,SAAUvrB,GAC9C8N,KAAKga,aAAeha,KAAKqO,eACzB,IAAIlJ,EAAYnF,KAAKoZ,iBAAiBjU,UAAUjT,GAC5C0rB,EAAS5d,KAAKoZ,iBAAiBxO,sBAAsBzF,GAKzD,GAJAnF,KAAKoZ,iBAAiBjU,UAAUzL,OAAOxH,EAAO,GAC1C8N,KAAKuc,aAAevc,KAAKuc,aAAerqB,GACxC8N,KAAKuc,cAELqB,EACA,GAAI5d,KAAK0Z,aAAetoB,OAAOC,KAAK2O,KAAKoZ,iBAAiBjU,WAAW7T,OACjEwT,SAAO8Y,GACP5d,KAAK0Z,eACL1Z,KAAK2Z,cACL3Z,KAAKga,YAAc,MAElB,CASD,GARI4D,EAAO9mB,UAAUmH,SAASmD,EAAWY,WACrC4b,EAAO9mB,UAAUsD,OAAOgH,EAAWY,SACnChC,KAAKib,UAAUE,oBAAoBzhB,OAAOsG,KAAKib,UAAUE,oBAAoBpiB,QAAQ7G,GAAQ,IAEpE,SAAzB0rB,EAAOtmB,MAAMC,UACbqmB,EAAOtmB,MAAMC,QAAU,GACvByI,KAAKib,UAAUG,kBAAkB1hB,OAAOsG,KAAKib,UAAUG,kBAAkBriB,QAAQ7G,GAAQ,IAEzF8N,KAAKoZ,iBAAiBljB,cAAgB0nB,EAAO9mB,UAAUmH,SAASmD,EAAWlO,UAAW,CACtF8M,KAAKoZ,iBAAiBnN,eACtBjM,KAAKib,UAAUC,cAAcxhB,OAAOsG,KAAKib,UAAUC,cAAcniB,QAAQ7G,GAAQ,GACjF,IAAIoqB,EAAmBsB,EAAOjnB,cAAc,IAAMyK,EAAWe,iBAC7Dma,EAAiBnP,gBAAgB,gBACjCmP,EAAiBzlB,kBAAkBC,UAAUsD,OAAOgH,EAAWnO,SAC3D2qB,EAAO9mB,UAAUmH,SAASmD,EAAWG,WACrCqc,EAAO9mB,UAAUsD,OAAOgH,EAAWG,SACnCvB,KAAKuc,iBAAc9qB,QAGlBmsB,EAAO9mB,UAAUmH,SAASmD,EAAWlO,YAC1C8M,KAAKoZ,iBAAiBnN,eACtBjM,KAAKuc,iBAAc9qB,GAElBupB,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,SAAYsV,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAG7EsV,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,SACzC1F,KAAK+Z,cAAcziB,MAAMoO,OAASsV,WAAWhb,KAAK+Z,cAAcziB,MAAMoO,QAAU1F,KAAKqO,eAAiB,KACtGrO,KAAKgc,SAAS4B,EAAQ5d,KAAK2Z,YAAa3Z,KAAK+Z,iBAG7C/Z,KAAK8Z,WAAWxiB,MAAMoO,OAASsV,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAAU1F,KAAKqO,eAAiB,KAChGrO,KAAKgc,SAAS4B,EAAS5d,KAAKmO,aAAe,EAAInO,KAAK8Z,WAAW0B,aAC/Dxb,KAAK2Z,cACL3Z,KAAKmO,gBAVLnO,KAAKgc,SAAS4B,EAAQ5d,KAAK2Z,YAAa3Z,KAAK+Z,eAczD/Z,KAAK2d,gBAAgBzrB,GAAO,GAC5B8N,KAAKma,SAAW7e,KAAKsf,MAAMI,WAAWhb,KAAK8Z,WAAWxiB,MAAMoO,QAAU1F,KAAKqO,iBAE/E4K,EAAe/f,UAAUykB,gBAAkB,SAAUzrB,EAAO6rB,GAExD,IAAK,IADD1sB,EAAOD,OAAOC,KAAK2O,KAAKib,WACnB+C,EAAM,EAAGA,EAAM3sB,EAAKC,OAAQ0sB,IACjChe,KAAKib,UAAU5pB,EAAK2sB,IAAQhe,KAAKib,UAAU5pB,EAAK2sB,IAAMnB,IAAI,SAAU7nB,GAChE,OAAIA,GAAK9C,EACE6rB,IAAc/oB,IAAMA,EAGpBA,KAKvBikB,EAAe/f,UAAUkd,QAAU,SAAUvb,EAAM/J,EAAQmD,GACvD,IAAK,IAAIe,EAAI,EAAGA,EAAI6F,EAAKvJ,OAAQ0D,IAAK,CAClC,IAAIkiB,EAAcrc,EAAK7F,GAMvB,GAJAf,EAAW9B,KAAK+kB,GAEhBlX,KAAKoZ,iBAAiBjI,kBAAkBld,GAEnC+L,KAAK0Z,aAUL,GAAI1Z,KAAK0Z,aAAe1Z,KAAKwZ,qBAAsB,CAEpD,GADSxZ,KAAKoZ,iBAAiB5I,eAAevc,EAAYnD,aACxCmI,MAAO,CACrB,GAAI+G,KAAKoZ,iBAAiB9b,UAAW,CACjC,IAAIpL,EAAQ8N,KAAKoZ,iBAAiBjU,UAAUpM,QAAQme,GAEpDlX,KAAKie,uBAAuB/G,EAAahlB,IAErCiT,EAAYnF,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,KACvCiT,EAAUlU,UAAuC,IAA3BkU,EAAU5G,MAAMjN,WAEjDY,EAEF8N,KAAKie,uBAAuB9Y,EAAWjT,IAI/C8N,KAAKoZ,iBAAiBra,aAClBiB,KAAKoZ,iBAAiBzQ,MAAMxO,iBAAiB,WAGpD,CACGjI,EAAQ8N,KAAKoZ,iBAAiBjU,UAAUpM,QAAQme,GAEpDlX,KAAK0d,UAAUxrB,GAEf,IAAIiT,GAAAA,EAAYnF,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,KACvCiT,EAAUlU,UAAuC,IAA3BkU,EAAU5G,MAAMjN,QACnD0O,KAAK0d,UAAUxrB,EAAQ,QApCtB8N,KAAKoZ,iBAAiB3hB,WAAYuI,KAAKoZ,iBAAiBzc,eAAmBqD,KAAKuT,iBACjFvT,KAAKoZ,iBAAiBjV,eAAe1M,SAAW,KAChDuI,KAAKoZ,iBAAiBjV,eAAexH,cAAgB,KACrDqD,KAAKoZ,iBAAiBjV,eAAe9O,YAAc2K,KAAKwT,aAAazK,KAAK/I,OAE9EA,KAAKyT,qBAoCjBwF,EAAe/f,UAAU+kB,uBAAyB,SAAUC,EAAUhsB,GAElE,IAAIK,EACAI,EAAKmB,WAASyB,uBAAuByK,KAAKoZ,iBAAiBplB,eAE9DkqB,GAAWle,KAAKoZ,iBAAiBjV,eAAgB,KAAM,KAAMnE,KAAKoZ,kBAUnE,GAPI7mB,EADCnB,OAAOC,KAAK2O,KAAKoZ,iBAAiBjU,WAAW7T,OAAS,IAAOY,EACrD8N,KAAKoZ,iBAAiBzQ,MAAM6B,iBAI5BxK,KAAKoZ,iBAAiBxO,sBAAsB5K,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,KACzF8N,KAAKoZ,iBAAiBxO,sBAAsB5K,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,IAExF8N,KAAKoZ,iBAAiBtoB,OAAO2M,SAAWuC,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,IAAM8N,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,GAAGjB,SAAU,CAC3I,IAAIomB,EAAYrX,KAAKoZ,iBAAiBxO,sBAAsB5K,KAAKoZ,iBAAiBjU,UAAUjT,EAAQ,IAChGmlB,IACA9kB,EAAS8kB,EAAUC,oBAI3BtX,KAAKoZ,iBAAiB9b,UAAUvL,aAAaY,EAAG,GAAIJ,GAEpDyN,KAAK0Z,eACD1Z,KAAKka,qBAAuB,GAC5Bla,KAAK2Z,cAGT3Z,KAAKsL,qBAET2N,EAAe/f,UAAUsa,aAAe,SAAUnN,GAC9C,IAAI8X,EAAkBne,KAAKoZ,iBAAiB3hB,SACxCA,EAAWuI,KAAKoZ,iBAAiBplB,cAAc,OAC/CoqB,EAAiB,iFACiBpe,KAAKoZ,iBAAiBtoB,OAAOiC,KAAO,kBAI1E,GAHIiN,KAAKoZ,iBAAiBhS,UACtBgX,EAAiB,MAEjBpe,KAAKoZ,iBAAiBljB,aAAc,CAGpC,GADA8J,KAAKoZ,iBAAiBtQ,eAAezC,IAC/BrV,oBAAkBgP,KAAKoZ,iBAAiB7O,mBACxCvZ,oBAAkBgP,KAAKoZ,iBAAiB7O,gBAAgBxD,WAAa,CACvE,IAAIsX,EAAMliB,SAASnI,cAAc,OACjCqqB,EAAI9hB,UAAYyD,KAAKoZ,iBAAiB3hB,UAAY2mB,EAC9CC,EAAIjsB,UAAYisB,EAAIjsB,SAAS,KAC7BisB,EAAIjsB,SAAS,GAAG0E,UAAUC,IAAI,cACiB,SAA3CiJ,KAAKoZ,iBAAiB9O,iBACtB+T,EAAIjsB,SAAS,GAAG0E,UAAUC,IAAI,mBAG9BsnB,EAAIjsB,SAAS,GAAG0E,UAAUC,IAAI,oBAEa,SAA3CiJ,KAAKoZ,iBAAiB9O,iBACtB+T,EAAIjsB,SAAS,GAAGL,aAAaiO,KAAKoZ,iBAAiB7O,gBAAiB8T,EAAI9jB,WAAW,GAAGnI,SAAS,IAG/FisB,EAAIjsB,SAAS,GAAGI,YAAYwN,KAAKoZ,iBAAiB7O,iBAEtDvK,KAAKoZ,iBAAiB3hB,SAAW4mB,EAAI9hB,WAG7C9E,EAAS8E,UAAYyD,KAAKoZ,iBAAiB3hB,SAC3CuI,KAAKoZ,iBAAiB3hB,SAAW0mB,OAGjC1mB,EAAS8E,UAAYyD,KAAKoZ,iBAAiB3hB,UAAY2mB,EAG3D,IAAIE,EAAmB7mB,EAAS4b,qBAAqB,KACjD1W,EAAgBqD,KAAKoZ,iBAAiBplB,cAAc,OACpDgM,KAAKoZ,iBAAiBtoB,OAAO2M,UAC7Bd,EAAcJ,UAAYyD,KAAKoZ,iBAAiBzc,eAAiByhB,GAGrE,IAAIG,EAAwB5hB,EAAc0W,qBAAqB,KAC3DhN,EAAKnR,QAAQjE,WACb+O,KAAKV,WAAa+G,EAAKnR,SAE3B8K,KAAKwe,aAAenY,EAAKnR,QAAQjE,SAAWoV,EAAKnR,QAAQqJ,MAAM,GAC3D8H,EAAKnR,UACJ8K,KAAKoZ,iBAAiBhS,SAAqD,iBAAlCpH,KAAKoZ,iBAAiB3hB,WAAyB4O,EAAK/Q,KAAKwB,UAAUmH,SAAS,sBACvE,iBAAvC+B,KAAKoZ,iBAAiBzc,eAA6B0J,EAAK/Q,KAAKwB,UAAUmH,SAAS,wBACxFoI,EAAK/Q,KAAKiH,UAAY,IAE1B8J,EAAK/Q,KAAK+lB,SAAYxgB,KAAMwL,EAAKnR,QAASupB,OAASC,qBAAuBC,wBAC1E,IAAK,IAAI3pB,EAAI,EAAGA,EAAIspB,EAAiBhtB,OAAQ0D,IACzCgL,KAAK4e,gBAAgBN,EAAiBtpB,GAAIqR,EAAK/Q,MAAM,GAEzD,IAASN,EAAI,EAAGA,EAAIupB,EAAsBjtB,OAAQ0D,IAC9CgL,KAAK4e,gBAAgBL,EAAsBvpB,GAAIqR,EAAK/Q,MAAM,GAE9D+Q,EAAK/Q,KAAK+lB,QAAQ5jB,SAAW4O,EAAKnR,QAAQjE,SAAWwG,EAASZ,kBAC1D8F,EAAc9F,kBAClBwP,EAAK/Q,KAAK+lB,QAAQ9kB,KAAO8P,EAAKnR,QAAQjE,SAAW,WAAa,YAC9D,IAAIiH,EAAUmO,EAAKnR,QAAQjE,SAAW0L,EAAgBlF,EAClDS,EAAQrB,mBACRwP,EAAK/Q,KAAKvD,aAAamG,EAAQrB,kBAAmB,OAG1DoiB,EAAe/f,UAAU0lB,gBAAkB,SAAU1mB,EAAS5C,EAAMrE,GAChE+O,KAAK6e,aAAa3mB,EAAS5C,EAAMrE,GACjC+O,KAAK8e,cAAc5mB,EAAS5C,EAAMrE,GAClC+O,KAAK+e,kBAAkB7mB,EAAS5C,EAAMrE,IAE1CgoB,EAAe/f,UAAU8lB,SAAW,SAAUC,EAASC,GACnDA,EAAY7D,QAAQxgB,KAAOokB,EAE3B,IAAIN,EAAqBO,EAAY7D,QAAQoD,MAAME,mBAE/CD,EAAoBQ,EAAY7D,QAAQoD,MAAMC,kBAElD,IAAK1tB,oBAAkBiuB,EAAQhuB,WAAaguB,EAAQhuB,UAAyC,cAA7BiuB,EAAY7D,QAAQ9kB,KAAsB,CAEtG,IAAI2B,EAAUgnB,EAAYroB,kBAC1BiO,SAAOoa,EAAYroB,mBACnBqoB,EAAYntB,aAAamtB,EAAY7D,QAAQ5jB,SAAU,MACvDynB,EAAY7D,QAAQ5jB,SAAWS,EAC/BgnB,EAAY7D,QAAQ9kB,KAAO,WAC3B,IAAK,IAAIvB,EAAI,EAAGA,EAAI2pB,EAAmBrtB,OAAQ0D,IAE3C2pB,EAAmB3pB,GAAGgqB,SAASC,QAGlC,GAAKA,EAAQhuB,UAAyC,aAA7BiuB,EAAY7D,QAAQ9kB,KAW7C,GAAK0oB,EAAQhuB,SAOd,IAAS+D,EAAI,EAAGA,EAAI2pB,EAAmBrtB,OAAQ0D,IAE3C2pB,EAAmB3pB,GAAGgqB,SAASC,QARnC,IAASjqB,EAAI,EAAGA,EAAI0pB,EAAkBptB,OAAQ0D,IAE1C0pB,EAAkB1pB,GAAGgqB,SAASC,OAdiC,CAC/D/mB,EAAUgnB,EAAYroB,kBAC1BiO,SAAOoa,EAAYroB,mBACnBqoB,EAAYntB,aAAamtB,EAAY7D,QAAQ5jB,SAAU,MACvDynB,EAAY7D,QAAQ5jB,SAAWS,EAC/BgnB,EAAY7D,QAAQ9kB,KAAO,YAC3B,IAAK,IAAIvB,EAAI,EAAGA,EAAI0pB,EAAkBptB,OAAQ0D,IAE1C0pB,EAAkB1pB,GAAGgqB,SAASC,KAiB1ChG,EAAe/f,UAAUimB,kBAAoB,SAAUD,EAAaE,EAAMnuB,GAClEA,EACAiuB,EAAY7D,QAAQoD,MAAME,mBAAmBxsB,KAAKitB,GAGlDF,EAAY7D,QAAQoD,MAAMC,kBAAkBvsB,KAAKitB,IAGzDnG,EAAe/f,UAAU4lB,cAAgB,SAAU5mB,EAASgnB,EAAajuB,GAIrE,IAHA,IAEIouB,EAFAC,EAAQ,IAAIC,OAAO,eAAgB,KACnCC,KAEkB,OAAfH,GAAqB,CACxB,IAAIvkB,EAAQwkB,EAAMG,KAAKvnB,EAAQ7B,WAC/BmpB,EAAgBrtB,KAAK2I,GAEF,QADnBukB,EAAavkB,IAET0kB,EAAgBlL,MAGxB,GAAIkL,GAAmBA,EAAgBluB,OAyCnC,IAAK,IAxCDouB,EAAU,SAAU1qB,GACpB,IAEI2qB,EAFAC,EAAiBJ,EAAgBxqB,GAKjC2qB,GAFoC,IAApCC,EAAe,GAAG7mB,QAAQ,OAAmD,IAApC6mB,EAAe,GAAG7mB,QAAQ,KAEnD,IAAI8mB,SAAS,OAAQ,UAAYD,EAAe,GAAGE,QAAQ,MAAO,UAIlE,IAAID,SAAS,OAAQ,eAAsBD,EAAe,IAG9E,IAAIG,KAEAA,EAAQC,YAAcL,EADtB1uB,EACoCgvB,EAAO3gB,WAGP2gB,EAAOzB,cAE/CuB,EAAQf,SAAW,SAAUxtB,GACrBuuB,EAAQC,aACRva,eAAavN,GAAU6nB,EAAQC,YAAY9kB,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,KAEzF,IAAI0a,EAASP,EAAcnuB,GACvB0uB,GACArnB,YAAUX,GAAU,EAASgD,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,KAE3Eua,EAAQC,YAAcE,GAG1B,IAAK,IADD7pB,EAAYupB,EAAe,GAAG1kB,MAAM,KAC/BV,EAAM,EAAGA,EAAMnE,EAAU/E,OAAQkJ,IACtCtC,EAAQpB,UAAUsD,OAAO/D,EAAUmE,IAEnCulB,EAAQC,aACRnnB,YAAUX,GAAU6nB,EAAQC,YAAY9kB,MAAM,KAAKqK,OAAO,SAAUC,GAAO,OAAOA,KAEtFya,EAAOd,kBAAkBD,EAAaa,EAAS9uB,IAE/CgvB,EAASjgB,KACJhL,EAAI,EAAGA,EAAIwqB,EAAgBluB,OAAQ0D,IACxC0qB,EAAQ1qB,IAIpBikB,EAAe/f,UAAU6lB,kBAAoB,SAAU7mB,EAASgnB,EAAajuB,GAEzE,IAAK,IADDkvB,KACKnrB,EAAI,EAAGA,EAAIkD,EAAQiD,WAAW7J,OAAQ0D,IAC3CmrB,EAAehuB,KAAK+F,EAAQiD,WAAWnG,GAAGoG,WAEL,IAArC+kB,EAAepnB,QAAQ,UACvBonB,EAAezmB,OAAOymB,EAAepnB,QAAQ,SAAU,GAuDtD,IArDDqnB,EAAU,SAAUprB,GACpB,IAKIqrB,EAEAC,EAPAC,EAAgBJ,EAAenrB,GAC/BwrB,EAAgB,IAAIjB,OAAO,eAAgB,KAAKE,KAAKc,OACrDE,EAAiB,IAAIlB,OAAO,eAAgB,KAAKE,KAAKvnB,EAAQoU,aAAaiU,QAM/E,GAAIC,EAAclvB,QAAUmvB,EAAenvB,OAAQ,CAC3CkvB,EAAc,KAEdH,EAAwB,IAAIR,SAAS,OAAQ,eAAsBW,EAAc,KAEjFC,EAAe,KAGXH,GAFoC,IAApCG,EAAe,GAAG1nB,QAAQ,OAAmD,IAApC0nB,EAAe,GAAG1nB,QAAQ,KAE1C,IAAI8mB,SAAS,OAAQ,UAAYY,EAAe,GAAGX,QAAQ,MAAO,UAIlE,IAAID,SAAS,OAAQ,eAAsBY,EAAe,KAI3F,IAAIC,KAEAA,EAAUV,YADV/uB,QAC8CQ,IAArB+uB,EAAc,QAAmB/uB,EAAY4uB,EAAsBM,EAAOrhB,iBACzE7N,IAAtBgvB,EAAe,QAAmBhvB,EAAY6uB,EAAuBK,EAAOrhB,mBAGlC7N,IAArB+uB,EAAc,QAAmB/uB,EAAY4uB,EAAsBM,EAAOnC,mBACzE/sB,IAAtBgvB,EAAe,QAAmBhvB,EAAY6uB,EAAuBK,EAAOnC,eAEpFkC,EAAUE,cAAwCnvB,IAA7BivB,EAAUV,YAAY,GACvCO,EAAgBG,EAAUV,YAAY,GAC1CU,EAAU1B,SAAW,SAAUxtB,GAC3B,IAAIwuB,OAA2CvuB,IAA7BivB,EAAUV,YAAY,GACpC9nB,EAAQoU,aAAaoU,EAAUE,UAAYN,EAAuB9uB,GACtE0G,EAAQiV,gBAAgBuT,EAAUE,UAClCF,EAAUE,cAAwCnvB,IAA7BivB,EAAUV,YAAY,GAAmBU,EAAUE,SAAWP,EAAsB7uB,GACzG0G,EAAQlB,aAAa0pB,EAAUE,SAAUZ,GACzCU,EAAUV,kBAA4CvuB,IAA7BivB,EAAUV,YAAY,QAAmBvuB,EAAY4uB,EAAsB7uB,QACnEC,IAA7BivB,EAAUV,YAAY,QAAmBvuB,EAAY6uB,EAAuB9uB,KAEpF,IAAIqvB,OAA8CpvB,IAA7BivB,EAAUV,YAAY,GAAmB9nB,EAAQoU,aAAaiU,GAC/EG,EAAUV,YAAY,GAC1B9nB,EAAQiV,gBAAgBoT,GACxBroB,EAAQlB,aAAa0pB,EAAUE,SAAUC,GACzCF,EAAOxB,kBAAkBD,EAAawB,EAAWzvB,KAGrD0vB,EAAS3gB,KACb,IAAShL,EAAI,EAAGA,EAAImrB,EAAe7uB,OAAQ0D,IACvCorB,EAAQprB,IAGhBikB,EAAe/f,UAAU2lB,aAAe,SAAU3mB,EAASgnB,EAAajuB,GAIpE,IAHA,IAEIouB,EAFAC,EAAQ,IAAIC,OAAO,eAAgB,KACnCC,KAEkB,OAAfH,GAAqB,CACxB,IAAIvkB,EAAQwkB,EAAMG,KAAKvnB,EAAQ8D,WAC/BwjB,EAAgBrtB,KAAK2I,GAEF,QADnBukB,EAAavkB,IAET0kB,EAAgBlL,MAGxB,IAAIwM,EAAwB7nB,MAAMC,UAAU2X,KAAKve,KAAK4F,EAAQ9F,SAAU,SAAU8F,GAC9E,QAAI,IAAIqnB,OAAO,eAAgB,KAAKE,KAAKvnB,EAAQ8D,aAOrD,GAAIwjB,GAAmBA,EAAgBluB,SAAWwvB,EA6B9C,IAAK,IA5BDC,EAAU,SAAU/rB,GACpB,IAIIgsB,EAJAC,EAAoBzB,EAAgBxqB,GAEpC+qB,KAKAiB,GAFuC,IAAvCC,EAAkB,GAAGloB,QAAQ,OAAsD,IAAvCkoB,EAAkB,GAAGloB,QAAQ,KAE1D,IAAI8mB,SAAS,OAAQ,UAAYoB,EAAkB,GAAGnB,QAAQ,MAAO,UAIrE,IAAID,SAAS,OAAQ,eAAsBoB,EAAkB,IAG5ElB,EAAQC,YAAcgB,EADtB/vB,EACmCiwB,EAAO5hB,WAGP4hB,EAAO1C,cAE9CuB,EAAQf,SAAW,SAAUxtB,GACzB0G,EAAQ8D,UAAY9D,EAAQ8D,UAAU8jB,QAAQC,EAAQC,YAAagB,EAAaxvB,IAChFuuB,EAAQC,YAAcgB,EAAaxvB,IAEvC0G,EAAQ8D,UAAY9D,EAAQ8D,UAAU8jB,QAAQmB,EAAkB,GAAIlB,EAAQC,aAC5EkB,EAAO/B,kBAAkBD,EAAaa,EAAS9uB,IAE/CiwB,EAASlhB,KACJhL,EAAI,EAAGA,EAAIwqB,EAAgBluB,OAAQ0D,IACxC+rB,EAAQ/rB,IAIpBikB,EAAe/f,UAAUuL,yBAA2B,WAChDzE,KAAKsZ,iBAAgB,GACjBtZ,KAAKoZ,iBAAiBvU,kBACtBC,SAAO9E,KAAKoZ,iBAAiBvU,kBAEjC7E,KAAKoZ,iBAAiBxQ,YAGtB5I,KAAK0Z,aAAe,EACpB1Z,KAAKoZ,iBAAiB/Z,SACtBW,KAAKoZ,iBAAiB/H,gBAE1B4H,EAAe/f,UAAU8iB,SAAW,SAAU9jB,EAAShG,EAAOivB,GAE1D,IAAInC,EAAWhf,KAAKuT,eAAiBvT,KAAKohB,WAAaphB,KAAKgf,SAC5D,GAAIhf,KAAKoZ,iBAAiB3hB,UAAYuI,KAAKoZ,iBAAiBzc,cAAe,CACvE,IAAIwI,EAAYnF,KAAKoZ,iBAAiBjU,UAAUjT,GAEhDgG,EAAQikB,QAAQzH,IAAOvP,EAAUnF,KAAKoZ,iBAAiBtoB,OAAOgE,IAEzDqQ,EAAUnF,KAAKoZ,iBAAiBtoB,OAAOgE,IAAOhB,WAASiB,aAC5DiqB,EAAS7Z,EAAWjN,EAAS8H,WAG7BA,KAAKic,gBAAgB/jB,EAAShG,GAElC8N,KAAKqc,wBAAwBnkB,EAAShG,GAClCivB,GACAnhB,KAAKoZ,iBAAiB9b,UAAUvL,aAAamG,EAASipB,IAG9DlI,EAAe/f,UAAUkoB,WAAa,SAAUnC,EAASC,EAAamC,GAKlE,IAFA,IACIC,EADmBzkB,UAAQwkB,EAAYjI,iBAAiB3hB,SACxC8pB,CAAiBtC,GAC9BC,EAAYsC,WACftC,EAAYtS,YAAYsS,EAAYsC,WAExCtC,EAAY1sB,YAAY8uB,EAAc,KAE1CrI,EAAe/f,UAAUqf,cAAgB,WACrC,MAAO,kBAEXU,EAAe/f,UAAUsW,QAAU,WAC/BxP,KAAKsZ,iBAAgB,IAElBL,KFjvCPzZ,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBrO,OAAOwO,iBAChBC,wBAA2B5G,OAAS,SAAUyG,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAE5J,eAAe+J,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASI,IAAOC,KAAKC,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAExG,UAAkB,OAANyG,EAAavO,OAAO8O,OAAOP,IAAMI,EAAG7G,UAAYyG,EAAEzG,UAAW,IAAI6G,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY7N,EAAQkM,EAAK4B,GAC7E,IAA2HX,EAAvHY,EAAIC,UAAUjP,OAAQkP,EAAIF,EAAI,EAAI/N,EAAkB,OAAT8N,EAAgBA,EAAOjP,OAAOqP,yBAAyBlO,EAAQkM,GAAO4B,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAY7N,EAAQkM,EAAK4B,QACpH,IAAK,IAAIrL,EAAIoL,EAAW9O,OAAS,EAAG0D,GAAK,EAAGA,KAAS0K,EAAIU,EAAWpL,MAAIwL,GAAKF,EAAI,EAAIZ,EAAEc,GAAKF,EAAI,EAAIZ,EAAEnN,EAAQkM,EAAK+B,GAAKd,EAAEnN,EAAQkM,KAAS+B,GAChJ,OAAOF,EAAI,GAAKE,GAAKpP,OAAOwP,eAAerO,EAAQkM,EAAK+B,GAAIA,GAsB5DihB,EAA0B,SAAUze,GAGpC,SAASye,EAASvpB,EAAS/D,GACvB,IAAIkP,EAAQL,EAAO1Q,KAAK0N,KAAM7L,EAAS+D,IAAY8H,KA2LnD,OAzLAqD,EAAMqe,UAAY,SAAU7Y,GAExB,IAAItW,EAAS8Q,EAAMse,mBAAmB9Y,EAAE+Y,OAAOrvB,QAC/C,IAAK8Q,EAAMwe,cAActvB,EAAQ8Q,GAC7B,OAAO,EAEX,IAAInL,EAeJ,OAdImL,EAAMye,OACN5pB,EAAUmL,EAAMye,QAASF,OAAQrvB,EAAQ2F,QAAS2Q,EAAE3Q,YAGpDA,EAAU3F,EAAOyH,WAAU,IACnB1C,MAAMsO,MAAQrT,EAAOwvB,YAAc,KAC3C7pB,EAAQZ,MAAMoO,OAASnT,EAAOyvB,aAAe,MAEjDnpB,YAAUX,IAAW,oBACrBuN,eAAavN,IAAW,4BACpBA,GAAWA,EAAQ7B,UAAU0C,QAAQ,qBAAuB,GAC5DF,YAAUX,IAAW,sBAEzBiE,SAAS8lB,KAAKzvB,YAAY0F,GACnBA,GAGXmL,EAAM6e,OAAS,SAAUrZ,GACrBxF,EAAMqF,QAAQ,QAAUsH,MAAOnH,EAAEmH,MAAO9X,QAASmL,EAAMnL,QAAS3F,OAAQsW,EAAEtW,SAC1E,IAAI4vB,EAAU9e,EAAM+e,oBAAoBvZ,EAAEtW,QACtCA,EAAS8Q,EAAMse,mBAAmB9Y,EAAEtW,OAAQ4vB,GAChD,IAAK9e,EAAMwe,cAActvB,EAAQ4vB,IAAYtZ,EAAEtW,OAAO8D,UAAU0C,QAAQ,sBAAwB,KAAOsK,EAAMgf,YAAc9vB,IACtHvB,oBAAkBmxB,EAAQG,iBAAkBH,EAAQI,oBAAqBJ,EAAQI,qBAAuB1Z,EAAEtW,QACpG,CAKP,GAJIsW,EAAEtW,OAAO8D,UAAU0C,QAAQ,sBAAwB,IACnDxG,EAASsW,EAAEtW,QAEf8Q,EAAMgf,UAAY9vB,EACd8Q,EAAM9Q,SAAWA,EACjB,OAEJ,IAAIiwB,EAASnf,EAAMof,SAASN,EAAQI,mBAAoBJ,GACpDG,EAAcjf,EAAMqf,eAAenwB,EAAQ4vB,GAC3CQ,OAAS,EACb,GAAIL,EAAa,CACbE,EAASxxB,oBAAkBwxB,GAAUnf,EAAMof,SAASpf,EAAM9Q,QAAUiwB,EACpEG,EAAStf,EAAMof,SAASlwB,EAAQ4vB,EAAStZ,EAAEmH,OAC3C,IAAI4S,EAAuBvf,EAAMuf,qBAAqBT,GACtD,GAAIS,GAAwBJ,IAAWG,EACnC,OAEAC,GACAxoB,SAAO+nB,EAAQI,oBAEnBJ,EAAQI,mBAAqBD,EACzBzZ,EAAEtW,OAAO8D,UAAU0C,QAAQ,sBAAwB,EACnDopB,EAAQjqB,QAAQnG,aAAaowB,EAAQI,mBAAoBJ,EAAQjqB,QAAQ9F,SAASuwB,IAE7ER,EAAQjqB,UAAYmL,EAAMnL,SAAWyqB,IAAWR,EAAQjqB,QAAQya,kBACrEwP,EAAQjqB,QAAQ1F,YAAY2vB,EAAQI,oBAGpCJ,EAAQjqB,QAAQnG,aAAaowB,EAAQI,mBAAoBJ,EAAQjqB,QAAQ9F,SAASuwB,IAEtFtf,EAAMwf,gBAAgBL,EAAQG,EAAQR,OAErC,CACDK,EAASxxB,oBAAkBwxB,GAAUnf,EAAMof,SAASpf,EAAM9Q,QACtD8Q,EAAMof,SAASlwB,EAAQ4vB,GAAWK,IAAWA,EAASA,EAASA,EAAS,EAC5EG,EAAStf,EAAMof,SAASlwB,EAAQ4vB,GAChC,IAAIW,EAAMX,EAAQjqB,UAAYmL,EAAMnL,QAAUyqB,EAASH,EAASG,EAASA,EAAS,EAAIA,EACtFtf,EAAM0f,gBAAgBZ,GACtBA,EAAQjqB,QAAQnG,aAAasR,EAAM9Q,OAAQ4vB,EAAQjqB,QAAQ9F,SAAS0wB,IACpEzf,EAAMwf,gBAAgBL,EAAQG,EAAQR,GACtC9e,EAAMgf,UAAYhf,EAAM9Q,OACxB8Q,EAAMqF,QAAQ,QACVsa,eAAgB3f,EAAM9Q,OAAQ2F,QAASiqB,EAAQjqB,QAAS+qB,cAAeT,EAAQU,aAAcP,EAC7FpwB,OAAQsW,EAAEtW,OAAQuvB,OAAQ3lB,SAAS8Y,uBAAuB,mBAAmB,GAAIjF,MAAOnH,EAAEmH,MAAOmT,MAAO9f,EAAM8f,SAK1H,GADAhB,EAAU9e,EAAM+e,oBAAoB/e,EAAMgf,WACtCrxB,oBAAkBuB,IAAWsW,EAAEtW,SAAW4vB,EAAQI,mBAC9Clf,EAAMuf,qBAAqBT,IAC3B9e,EAAM+f,kBAAkBjB,OAG3B,CACD,IACIkB,KADkBhxB,MAAMC,KAAK6J,SAAS8Y,uBAAuB,2BAEpDhjB,QAAQ,SAAUqwB,IAC3Be,EAAShgB,EAAM+e,oBAAoBE,IACxBpqB,SAAWmrB,IAAWlB,GAC7B9e,EAAM+f,kBAAkBC,OAMxChgB,EAAMigB,YAAc,SAAUza,GAC1BxF,EAAM9Q,OAAS8Q,EAAMse,mBAAmB9Y,EAAEtW,QAC1C,IAAIgxB,GAAa,EACjBlgB,EAAM9Q,OAAOuE,UAAUC,IAAI,aAC3BsM,EAAMgf,UAAYhf,EAAM9Q,OACxBsW,EAAEiZ,OAAS3lB,SAAS8Y,uBAAuB,mBAAmB,GAC9D,IAAI5O,GAASmd,QAAQ,EAAOtrB,QAASmL,EAAMnL,QAAS3F,OAAQ8Q,EAAM9Q,QAClE8Q,EAAMqF,QAAQ,kBAAmBrC,EAAM,SAAUod,GACzCA,EAAaD,SACbD,EAAaE,EAAaD,OAC1BngB,EAAMqgB,WAAW7a,MAGrB0a,IAGAhf,WACAlB,EAAMqF,QAAQ,aACVsH,MAAOnH,EAAEmH,MAAO9X,QAASmL,EAAMnL,QAAS3F,OAAQ8Q,EAAM9Q,OACtDoxB,WAAY9a,EAAE8a,WAAYC,YAAa/a,EAAE+a,cAI7CvgB,EAAMqF,QAAQ,aAAesH,MAAOnH,EAAEmH,MAAO9X,QAASmL,EAAMnL,QAAS3F,OAAQ8Q,EAAM9Q,WAI3F8Q,EAAMqgB,WAAa,SAAU7a,GACzB,IACIgb,EACAC,EACAC,EAHAC,EAAW3gB,EAAM+e,oBAAoB/e,EAAMgf,WAI/CwB,EAAUxgB,EAAMof,SAASpf,EAAM9Q,QAC/B,IAAIqwB,EAAuBvf,EAAMuf,qBAAqBoB,GACtD,GAAIpB,EAAsB,CACtB,IAAIqB,EAAW5gB,EAAMof,SAASuB,EAASzB,mBAAoByB,GACvDE,EAAW7gB,IAAU2gB,GAAaH,EAAUI,EAAY,EAAIJ,EAAU,EAAIA,EAC1Exd,GACA4c,cAAeiB,EAAUhB,aAAc7f,EAAMgf,YAAchf,EAAM9Q,OAAS2xB,EAAWD,EAAU1xB,OAAQsW,EAAEtW,OAAQywB,eAAgB3f,EAAM9Q,OACvIuvB,OAAQjZ,EAAEiZ,OAAQ0B,QAAQ,EAAOO,SAAS,GAE9C1gB,EAAMqF,QAAQ,aAAcrC,EAAM,SAAUod,GACxC,IAAKA,EAAaD,OAAQ,CAGtB,GAFAO,EAAUN,EAAaM,QACvB1gB,EAAM0f,gBAAgBiB,GAClBP,EAAaM,QAAS,CACtB,IAAInU,EAAMvM,EAAM9Q,OAAOyH,WAAU,GACjCqJ,EAAM9Q,OAAOuE,UAAUsD,OAAO,aAC9BiJ,EAAM9Q,OAASqd,EAEnBoU,EAAS9rB,QAAQnG,aAAasR,EAAM9Q,OAAQyxB,EAASzB,oBACrD,IAAI4B,EAAW9gB,EAAMof,SAASpf,EAAM9Q,OAAQyxB,GAC5CH,EAAUxgB,IAAU2gB,GAAaH,EAAUM,EAAY,EAAIN,EAAU,EAAIA,EACzExgB,EAAMqF,QAAQ,QACVsH,MAAOnH,EAAEmH,MAAO9X,QAAS8rB,EAAS9rB,QAAS+qB,cAAeY,EAASX,aAAciB,EACjF5xB,OAAQsW,EAAEtW,OAAQuvB,OAAQjZ,EAAEiZ,OAAQkB,eAAgB3f,EAAM9Q,OAAQ6xB,UAAW/gB,EAAM8f,MAAOY,QAASA,IAG3G3pB,SAAO4pB,EAASzB,sBAGxByB,EAAW3gB,EAAM+e,oBAAoBvZ,EAAEtW,QAEvCuxB,EAASE,EAAS9rB,QAAQya,kBAC1BkR,EAAUxgB,EAAMof,SAASpf,EAAM9Q,QAC/B,IAAIA,EAAUsW,EAAEtW,OAAO8D,UAAU0C,QAAQ,eAAiB,EAAK8P,EAAEtW,OAAO+U,cAAgBuB,EAAEtW,OAC1F,GAAIyxB,EAAS9rB,UAAY3F,IAAYqwB,GAAwBvf,EAAMgf,YAAchf,EAAM9Q,OAAS,CAC5F,IAAI8xB,GACApB,cAAeY,EAASX,aAAc7f,EAAMgf,YAAchf,EAAM9Q,OAASsxB,EAAUC,EACnFvxB,OAAQsW,EAAEtW,OAAQywB,eAAgB3f,EAAM9Q,OAAQuvB,OAAQjZ,EAAEiZ,OAAQ0B,QAAQ,GAE9EngB,EAAMqF,QAAQ,aAAc2b,EAAgB,SAAUZ,GAC9CO,EAAS9rB,UAAY2Q,EAAEtW,QAAWkxB,EAAaD,SAC/CngB,EAAM0f,gBAAgBiB,GACtBA,EAAS9rB,QAAQ1F,YAAY6Q,EAAM9Q,QACnC8Q,EAAMqF,QAAQ,QACVsH,MAAOnH,EAAEmH,MAAO9X,QAAS8rB,EAAS9rB,QAAS+qB,cAAeY,EAASX,aAAcY,EACjFvxB,OAAQsW,EAAEtW,OAAQuvB,OAAQjZ,EAAEiZ,OAAQkB,eAAgB3f,EAAM9Q,OAAQ6xB,UAAW/gB,EAAM8f,WAKnG9f,EAAM9Q,OAAOuE,UAAUsD,OAAO,aAC9BiJ,EAAM9Q,OAAS,KACf8Q,EAAMgf,UAAY,KAClBjoB,SAAOyO,EAAEiZ,QACTwC,eAAajhB,EAAMnL,QAASqsB,aAAWC,WAAW3b,EAAEmH,QAExD3M,EAAM0F,OACC1F,EA9LX7D,EAAUiiB,EAAUze,GAgMpByhB,EAAahD,EACbA,EAASvoB,UAAU6P,KAAO,WACjB/I,KAAK9H,QAAQpD,KACdkL,KAAK9H,QAAQpD,GAAK4vB,cAAY,aAE7B1kB,KAAKtJ,YACNsJ,KAAKtJ,UAAY,cACjBsJ,KAAK2kB,YAET3kB,KAAK4kB,uBAETnD,EAASvoB,UAAU0rB,oBAAsB,WACrC,IAAIL,YAAUvkB,KAAK9H,SACf4pB,OAAQ9hB,KAAK0hB,UACbmD,UAAW7kB,KAAKsjB,YAChBwB,KAAM9kB,KAAKkiB,OACX6C,SAAU/kB,KAAK0jB,WACfsB,WAAY,IAAMhlB,KAAKtJ,UACvBuuB,eAAe,EACfC,iBAAkB,IAClBC,kBAAmBnlB,KAAKmlB,kBACxBC,SAAU,KAGlB3D,EAASvoB,UAAUwpB,eAAiB,SAAUnwB,EAAQ2mB,GAClD,GAAIA,EAASoJ,YAAa,CACtB,IAAIC,EAAqBrJ,EAASoJ,aAAcpqB,QAASghB,EAAShhB,QAASmtB,eAAgBrlB,KAAKzN,OAAQA,OAAQA,IAEhH,OADAgwB,EAAmBzrB,UAAUC,IAAI,0BAC1BwrB,EAEX,OAAO,MAEXd,EAASvoB,UAAU2oB,cAAgB,SAAUtvB,EAAQ2mB,GACjD,OAAO3mB,GAAU+yB,uBAAqB/yB,EAAQ2mB,EAAShhB,UAAY3F,EAAOuE,UAAUmH,SAASib,EAASxiB,aACjGnE,EAAOuE,UAAUmH,SAAS,eAEnCwjB,EAASvoB,UAAUkqB,kBAAoB,SAAUlK,GAC7C9e,SAAO8e,EAASqJ,oBAChBrJ,EAASqJ,mBAAqB,MAElCd,EAASvoB,UAAU6pB,gBAAkB,SAAU7J,GACvClZ,OAASkZ,IACTlZ,KAAKzN,OAAOuE,UAAUsD,OAAO4F,KAAKtJ,WAClCsJ,KAAKzN,OAAOuE,UAAUC,IAAImiB,EAASxiB,aAG3C+qB,EAASvoB,UAAUkpB,oBAAsB,SAAUlqB,GAE/C,GADAA,EAAUwT,UAAQxT,EAAS,MAAQ8H,KAAKuY,iBAC3B,CACT,IAAIgN,EAAOjB,eAAapsB,EAASusB,GACjC,OAAOc,EAAKpC,OAASnjB,KAAKmjB,OAASoC,EAAKpC,QAAUnjB,KAAKmjB,MAAQoC,EAAOvlB,KAGtE,OAAOA,MAGfyhB,EAASvoB,UAAU2pB,gBAAkB,SAAUL,EAAQG,EAAQzJ,GAC3D,GAAIA,IAAalZ,KAMb,IALA,IAAI9H,OAAU,EACVstB,EAAYhD,EAASG,EACrB8C,OAAc,EACdC,EAAQF,EAAYhD,EAASG,EAC7Bna,EAAMgd,EAAY7C,EAASH,EACxBkD,GAASld,IACZtQ,EAAU8H,KAAK9H,QAAQ9F,SAASszB,IACpB5uB,UAAUmH,SAAS,eAC3BwnB,EAAczlB,KAAKyiB,SAASvqB,GAC5B8H,KAAK9H,QAAQnG,aAAamG,EAAS8H,KAAK9H,QAAQ9F,SAASozB,EAAYC,EAAc,EAAIA,EAAc,IACrGC,EAAQF,EAAYC,EAAc,EAAIA,EAAc,GAGpDC,KAKhBjE,EAASvoB,UAAUupB,SAAW,SAAUlwB,EAAQ2mB,EAAUrQ,QACrC,IAAbqQ,IAAuBA,EAAWlZ,MACtC,IAAI8iB,EACA6C,EAkBJ,SAjBGtzB,MAAMC,KAAK4mB,EAAShhB,QAAQ9F,UAAUH,QAAQ,SAAUiG,EAAShG,GAIhE,GAHIgG,EAAQpB,UAAUmH,SAAS,4BAC3B0nB,GAAqB,GAErBztB,IAAY3F,QAEZ,GADAuwB,EAAM5wB,GACDlB,oBAAkB6X,GAAI,CACnB8c,IACA7C,GAAO,GAEX,IAAI8C,EAASrzB,EAAO6W,wBAChByc,EAAUD,EAAOE,QAAWF,EAAOE,OAASF,EAAOnY,KAAO,EAC9DqV,EAAMja,EAAEgd,SAAWA,EAAU/C,EAAMA,EAAM,KAK9CA,GAEXrB,EAASvoB,UAAUyoB,mBAAqB,SAAUzpB,EAASghB,GAEvD,YADiB,IAAbA,IAAuBA,EAAWlZ,MAC/B0L,UAAQxT,EAAS,IAAMghB,EAASxiB,YAE3C+qB,EAASvoB,UAAUisB,kBAAoB,SAAU3zB,GAG7C,OAFAA,EAAMu0B,KAAOC,YAAchL,WAAWxpB,EAAMu0B,MAAQC,YAAc,KAAOx0B,EAAMu0B,KAC/Ev0B,EAAMic,IAAMQ,YAAc+M,WAAWxpB,EAAMic,KAAOQ,YAAc,KAAOzc,EAAMic,IACtEjc,GAEXiwB,EAASvoB,UAAU0pB,qBAAuB,SAAU1J,GAChD,OAAOA,EAASqJ,sBAAwB7W,UAAQwN,EAASqJ,mBAAoB,IAAMrJ,EAAShhB,QAAQpD,KAcxG2sB,EAASvoB,UAAUvH,OAAS,SAAUs0B,EAAan0B,EAAeC,GAC9DJ,EAAOqO,KAAK9H,QAAS+tB,EAAan0B,EAAeC,IAKrD0vB,EAASvoB,UAAUsW,QAAU,WACF,gBAAnBxP,KAAKtJ,YACLsJ,KAAKtJ,UAAY,KACjBsJ,KAAK2kB,YAETL,eAAatkB,KAAK9H,QAASqsB,aAAW/U,UACtCxM,EAAO9J,UAAUsW,QAAQld,KAAK0N,OAElCyhB,EAASvoB,UAAUqf,cAAgB,WAC/B,MAAO,YAEXkJ,EAASvoB,UAAUyK,kBAAoB,SAAUC,EAASC,GACtD,IAAK,IAAI3S,EAAK,EAAGC,EAAKC,OAAOC,KAAKuS,GAAU1S,EAAKC,EAAGG,OAAQJ,IAAM,CAE9D,OADWC,EAAGD,IAEV,IAAK,eACEmB,MAAMC,KAAK0N,KAAK9H,QAAQ9F,UAAUH,QAAQ,SAAUiG,GAC/CA,EAAQpB,UAAUmH,SAAS4F,EAAQnN,YACnCwB,EAAQpB,UAAUsD,OAAOyJ,EAAQnN,WAEjCkN,EAAQlN,WACRwB,EAAQpB,UAAUC,IAAI6M,EAAQlN,gBAOtD,IAAI+tB,EAkCJ,OAjCAtkB,GACI+C,YAAS,IACVue,EAASvoB,UAAW,uBAAmB,GAC1CiH,GACI+C,WAAS,OACVue,EAASvoB,UAAW,iBAAa,GACpCiH,GACI+C,WAAS,OACVue,EAASvoB,UAAW,aAAS,GAChCiH,GACI+C,cACDue,EAASvoB,UAAW,cAAU,GACjCiH,GACI+C,cACDue,EAASvoB,UAAW,mBAAe,GACtCiH,GACI2Y,WACD2I,EAASvoB,UAAW,YAAQ,GAC/BiH,GACI2Y,WACD2I,EAASvoB,UAAW,uBAAmB,GAC1CiH,GACI2Y,WACD2I,EAASvoB,UAAW,iBAAa,GACpCiH,GACI2Y,WACD2I,EAASvoB,UAAW,kBAAc,GACrCiH,GACI2Y,WACD2I,EAASvoB,UAAW,YAAQ,GAC/BuoB,EAAWgD,EAAatkB,GACpB4Y,yBACD0I,IAELyE"}
1
+ {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/sortable/sortable.js","../src/list-view/list-view.js","../src/list-view/virtualization.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"],"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","createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","extend","defaultListBaseOptions","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","anchorElement","child","typeofData","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","type","showIcon","iconCss","itemClass","prepend","firstElementChild","classList","add","setAttribute","toString","tooltip","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","ds","element","subDS","hasChildren","processSubChild","subLi","createListFromJson","expandCollapse","expandElement","expandIconPosition","append","expandIconClass","addClass","listClass","indexOf","elementArray","Array","prototype","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","typeof","elementAttributes","class","split","attributes","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","elementID","groupItemRole","itemRole","role","innerText","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","enableHtmlSanitizer","groupTemplate","compiledElement","compiledString","groupTemplateID","isStringTemplate","templateID","innerDiv","wrapperRole","itemText","liElement","ulElement","listRole","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","contains","groupDataSource","curFields","cusQuery","j","itemObj","items","grpItem","key","newtext","_id","k","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","__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","LISTVIEW_GROUPTEMPLATE_PROPERTY","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","_loop_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","this_1","newCss","attributeNames","_loop_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","this_2","attrName","attributeValue","isChildHasTextContent","_loop_3","textFunction","textPropertyMatch","this_3","targetElement","onNgChange","virtualThis","resultElement","templateCompiler","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"],"mappings":"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"}