\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.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 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\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 { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\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, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n if (!document.body.contains(this.element) && navIdxLen === 0) {\n return null;\n }\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n trgtliId = new regExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed && !_this.isCmenuHover) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n // eslint-disable-next-line guard-for-in\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n var menuWrapper = closest(e.target, '.e-menu-wrapper');\n if (menuWrapper && menuWrapper.querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul && ul.children) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n if (this.isMenu || !Browser.isDevice) {\n ul.style.display = 'block';\n }\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\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 { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ?\n !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 :\n !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n // eslint-disable-next-line max-len\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = {\n minWidth: el.style.minWidth, height: el.style.height,\n minHeight: el.style.minHeight\n };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n var tabindexValue = this.getDataTabindex(previousEle) === '-1' ? '0' : this.getDataTabindex(previousEle);\n previousEle.setAttribute('tabindex', tabindexValue);\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle), 10) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\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 { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect, animationMode } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, addClass, removeClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll, SanitizeHtmlHelper, isRippleEnabled } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
\n * \n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n this.element.removeAttribute('data-ripple');\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (nested && nested.firstElementChild && nested.firstElementChild.firstElementChild) {\n if (nested.firstElementChild.firstElementChild.classList.contains(CLS_ROOT)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return templateCompiler(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeHeaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[parseInt(i.toString(), 10)]);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n e.preventDefault();\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n e.preventDefault();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-disabled': 'false', 'aria-expanded': 'false'\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', {\n className: CLS_ITEM, id: item.id || getUniqueID('acrdn_item')\n });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getHeaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var header = item.header;\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, header, index));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n else if (value instanceof (HTMLElement)) {\n ele.appendChild(value);\n if (this.trgtEle) {\n ele.firstElementChild.style.display = '';\n }\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'region');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[parseInt(index.toString(), 10)], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n var content = this.items[parseInt(index.toString(), 10)].content;\n if (this.enableHtmlSanitizer && typeof (content) === 'string') {\n content = SanitizeHtmlHelper.sanitize(content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, content, index));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideDown';\n animate.name = 'SlideDown';\n }\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.remove(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideUp';\n animate.name = 'SlideUp';\n }\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[parseInt(itemIndex.toString(), 10)]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.expandedIndices = [];\n _this.expandedItemRefresh();\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.expandedItemRefresh = function () {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n if (this.isReact || this.isAngular) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n this.clearAccordionTemplate(header, this.dataSource.length > 0 ? 'headerTemplate' : 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, this.dataSource.length > 0 ? 'itemTemplate' : 'content', CLS_CTENT);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.expandedIndices = [];\n this.expandedItemRefresh();\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[parseInt(index.toString(), 10)];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[parseInt(index.toString(), 10)];\n items.splice(index, 1);\n this.restoreContent(index);\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n if (this.isReact || this.isAngular) {\n this.clearAccordionTemplate(header, 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, 'content', CLS_CTENT);\n }\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n this.fetchElement(toElement, template, index);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clearAccordionTemplate = function (templateEle, templateName, className) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + templateName].length; index++) {\n var registeredItem = registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle || isNOU(registeredItem.parentNode)) {\n this.clearTemplate([templateName], [registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(j.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)]);\n for (var k = 0; k < property.length; k++) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var temp = property[parseInt(k.toString(), 10)];\n var content = select('.' + CLS_CTENT, item);\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property[parseInt(k.toString(), 10)] === 'cssClass' && !isNOU(item)) {\n if (oldVal) {\n removeClass([item], oldVal.split(' '));\n }\n if (newVal) {\n addClass([item], newVal.split(' '));\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'visible' && !isNOU(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'disabled' && !isNOU(item)) {\n this.enableItem(index, !newVal);\n }\n if (property.indexOf('header') < 0 && property[parseInt(k.toString(), 10)] === 'content'\n && !isNOU(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n if (this.isAngular || this.isReact) {\n this.clearAccordionTemplate(content, property[parseInt(k.toString(), 10)], CLS_CTENT);\n }\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeHeaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL);\n }\n else {\n this.remove(acrdn, CLS_RTL);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single' && !isNOU(this.expandedIndices) && this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n break;\n }\n }\n if (isRefresh) {\n this.initExpand = [];\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Property(true)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\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/triple-slash-reference */\n///
\nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, 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 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\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/triple-slash-reference */\n///
\nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Property(true)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\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 { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
\n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n if (!isNOU(_this.tbObj)) {\n _this.tbObj.refreshOverflow();\n }\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? { role: 'tab', 'aria-disabled': 'true' } : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: (this.animation.previous.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: (this.animation.next.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);\n }\n else {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '' || isNOU(cls)) {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL)) ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var sortedKeys = Object.keys(newProp).sort(function (a, b) {\n if (a === 'items')\n return -1;\n if (b === 'items')\n return 1;\n return 0;\n });\n for (var _i = 0, sortedKeys_1 = sortedKeys; _i < sortedKeys_1.length; _i++) {\n var prop = sortedKeys_1[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\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 { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n _this.isDropIn = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[\"\" + col]\n && col !== 'url' && columns.indexOf(mapper[\"\" + col]) === -1) {\n columns.push(mapper[\"\" + col]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(prop, 'tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[parseInt(i.toString(), 10)], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n *\n * @returns {void}\n */\n TreeView.prototype.updateCheckedStateFromDS = function () {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[parseInt(i.toString(), 10)][this.fields.hasChildren]) {\n var id = resultData[parseInt(i.toString(), 10)][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[parseInt(child.toString(), 10)][this.fields.id]\n ? childData[parseInt(child.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[parseInt(index.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[parseInt(index.toString(), 10)][this.fields.id] ? this.treeData[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (this.treeData[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(index.toString(), 10)]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[parseInt(index.toString(), 10)]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n *\n * @param {FieldsSettingsModel} mapper - The mapper object containing field settings.\n * @param {Object[]} checkNodes - The array of checked nodes.\n * @returns {void}\n * @private\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n *\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[parseInt(i.toString(), 10)], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[parseInt(j.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n *\n * @param {Object} data - The data object to check for indeterminate state.\n * @returns {void}\n * @private\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n *\n * @param {Object[]} childItems - The array of child items to update the checked state.\n * @param {Object} treeData - The tree data object containing field values.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (childItems[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1) {\n this.parentCheckData.push(treeData);\n }\n this.updateChildCheckState(subChildItems, childItems[parseInt(index.toString(), 10)]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[parseInt(len.toString(), 10)]) &&\n (this.parentCheckData[parseInt(len.toString(), 10)])) {\n this.checkIndeterminateState(this.parentCheckData[parseInt(len.toString(), 10)]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute('tabindex', '-1');\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) && !isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)])) ||\n !isNOU(getValue(mapper.hasChildren, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[parseInt(j.toString(), 10)].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var _this = this;\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[parseInt(k.toString(), 10)].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[parseInt(j.toString(), 10)]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[parseInt(j.toString(), 10)]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[parseInt(i.toString(), 10)]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[parseInt(i.toString(), 10)].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[parseInt(i.toString(), 10)]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n else {\n this.ensureChildCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[parseInt(i.toString(), 10)].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) &&\n !isNOU(getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[parseInt(index.toString(), 10)]\n .getElementsByClassName(CHECKBOXFRAME)[0]\n .classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[parseInt(index.toString(), 10)].classList.contains(CHILD) &&\n (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n if (!isNOU(nodes)) {\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[parseInt(len.toString(), 10)]);\n if (isNOU(liEle)) {\n var node = nodes[len - (nodes.length - 1)]\n ? nodes[len - (nodes.length - 1)].toString()\n : nodes[parseInt(len.toString(), 10)]\n ? nodes[parseInt(len.toString(), 10)].toString()\n : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[parseInt(j.toString(), 10)] ? nodes[parseInt(j.toString(), 10)].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[parseInt(i.toString(), 10)]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n *\n * @param {Object[]} subChild - Array of child nodes\n * @param {string} parent - Parent identifier\n * @param {string} node - Current node identifier\n * @param {boolean} doCheck - Boolean indicating whether to perform a check\n * @param {string} [child] - Optional child identifier\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[parseInt(j.toString(), 10)][this.fields.id] ? subChild[parseInt(j.toString(), 10)][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[parseInt(j.toString(), 10)]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? Object.prototype.hasOwnProperty.call(this.rootData[0], this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[parseInt(i.toString(), 10)] && this.expandChildren.indexOf(eUids[parseInt(i.toString(), 10)]) === -1) {\n this.expandChildren.push(eUids[parseInt(i.toString(), 10)].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var _this = this;\n this.expandCallback(arr[this.index], function () {\n _this.index++;\n if (_this.index < arr.length) {\n _this.expandGivenNodes(arr);\n }\n else {\n _this.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[parseInt(i.toString(), 10)]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[parseInt(i.toString(), 10)].classList.contains('e-disable')) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos\n ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY)\n : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function () {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n _this.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function () {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n _this.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n if (eicon.classList.contains(LOAD)) {\n this.hideSpinner(eicon);\n }\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n *\n * @param {Object[]} nodes - Array of nodes\n * @returns {void}\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[parseInt(i.toString(), 10)][this.fields.id]\n ? nodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) &&\n getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue(this.fields.child, obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[parseInt(i.toString(), 10)]);\n var childIndex = !isNOU(tempArray)\n ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.id, data) &&\n getValue(_this.fields.id, data).toString() === parentId;\n })\n : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[parseInt(childIndex.toString(), 10)]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n else if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) &&\n getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue('child', obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[parseInt(i_1.toString(), 10)]);\n var childIndex = !isNOU(tempArray)\n ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.child.id, data) &&\n getValue(_this.fields.child.id, data).toString() === parentId;\n })\n : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[parseInt(childIndex.toString(), 10)]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[parseInt(i.toString(), 10)][0]) &&\n !isNOU(getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]))) {\n if (getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]).toString() === parentId) {\n return data[parseInt(i.toString(), 10)];\n }\n }\n else if (isRoot) {\n return data[parseInt(i.toString(), 10)];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n if (element.querySelector('.e-icons') !== cIcons[parseInt(i.toString(), 10)]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[parseInt(i.toString(), 10)];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute('tabindex', '-1');\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos\n ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY)\n : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[parseInt(i.toString(), 10)]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[parseInt(i.toString(), 10)]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[parseInt(i.toString(), 10)], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName('e-checkbox-disabled').length === 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n if (child !== null) {\n this.allCheckNode(child, this.checkedElement, null, null, false);\n }\n else {\n child = null;\n }\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n *\n * @param {Element} li - The list item element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var isCheck = resultData[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? resultData[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[parseInt(i.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[parseInt(i.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var childIsCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n *\n * @param {Object[]} childItems - Array of child items\n * @param {string} parent - Parent identifier\n * @param {Element} childElement - Child DOM element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n var isCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[parseInt(i.toString(), 10)]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[parseInt(length_1.toString(), 10)][this.fields.isChecked]) &&\n newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n if (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) {\n newCheck.push(childId.toString());\n }\n else {\n childCheck = null;\n }\n childCheck = (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[parseInt(length_1.toString(), 10)]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[parseInt(length_1.toString(), 10)]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n if (isNOU(validateCheck)) {\n this.allCheckNode(childId_1, newCheck, checked, childCheck);\n }\n else {\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n }\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable') || nextNode.classList.contains('e-prevent')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[parseInt(index.toString(), 10)];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[parseInt(index.toString(), 10)];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute('tabindex', '-1');\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable') || focusedElement.classList.contains('e-prevent')) {\n focusedElement.setAttribute('tabindex', '-1');\n this.navigateNode(true);\n }\n else {\n focusedElement.setAttribute('tabindex', '0');\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target === focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n TreeView.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle);\n }\n };\n TreeView.prototype.createTextbox = function (liEle) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n Input.destroy({ element: target, properties: this.properties });\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n EventHandler.remove(target, 'blur', this.inputFocusOut);\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n if (this.enableHtmlSanitizer) {\n txtEle.innerText = SanitizeHtmlHelper.sanitize(newText);\n }\n else {\n txtEle.innerHTML = newText;\n }\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeData[parseInt(i.toString(), 10)]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[parseInt(i.toString(), 10)];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && dataId && dataId.toString() === id) {\n return obj[parseInt(i.toString(), 10)];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = _this.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = _this.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = _this.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n if (!e.target.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n // eslint-disable-next-line\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n if (dropTarget.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) &&\n (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function () {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n _this.removeVirtualEle();\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.isDropIn = false;\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) ||\n (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) &&\n !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) ||\n ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) ||\n (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) &&\n (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) ||\n (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var nodeData = [];\n var liArray = [];\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[parseInt(i.toString(), 10)] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[parseInt(i.toString(), 10)]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, null, dropTarget);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true, dropTarget);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck, dropTarget) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && ((pos < 7 && !dropTarget.classList.contains('e-sibling')) || (dropTarget.classList.contains('e-sibling') && !dropLi.lastChild.classList.contains('e-sibling'))) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[parseInt(i.toString(), 10)]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || (args && args.name !== 'nodeExpanding')) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[parseInt(i.toString(), 10)])) {\n iconClass = iconCss[parseInt(i.toString(), 10)];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[parseInt(i.toString(), 10)] === draggedNode && dropLi !== draggedNode)\n ? ++dropTar\n : dropTar;\n if ((drop !== true && index.children[parseInt(i.toString(), 10)].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[parseInt(i.toString(), 10)] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = this.isDropIn ? 'Inside' : ((event.offsetY < 7) ? 'Before' : 'After');\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[parseInt(i.toString(), 10)]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[parseInt(i.toString(), 10)]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[parseInt(i.toString(), 10)])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[parseInt(i.toString(), 10)]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n if (toExpand) {\n this.expandAction(liEle, icon, null);\n }\n else {\n this.collapseNode(liEle, icon, null);\n }\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() > li[parseInt(i.toString(), 10)].innerText.toUpperCase() : cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() < li[parseInt(i.toString(), 10)].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[parseInt(j.toString(), 10)]);\n break;\n }\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[parseInt(j.toString(), 10)]);\n }\n this.treeData.splice(pos, 0, nodes[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = Object.prototype.hasOwnProperty.call(prop, 'navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var data = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var items = getValue('child', obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], mapper.child) && obj[parseInt(i.toString(), 10)][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], 'child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[parseInt(i.toString(), 10)]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[parseInt(i.toString(), 10)][\"\" + key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[parseInt(i.toString(), 10)][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[parseInt(i.toString(), 10)]);\n var id = strNodes[parseInt(i.toString(), 10)];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[parseInt(i.toString(), 10)] == 'string') {\n id = (nodes[parseInt(i.toString(), 10)]) ? nodes[parseInt(i.toString(), 10)].toString() : null;\n }\n else if (typeof nodes[parseInt(i.toString(), 10)] === 'object') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() : null;\n }\n if (validID.indexOf(id) === -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[parseInt(l.toString(), 10)], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[parseInt(k.toString(), 10)], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[parseInt(m.toString(), 10)], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[parseInt(j.toString(), 10)]);\n if (!isNOU(obj[parseInt(i.toString(), 10)][\"\" + field])) {\n delete obj[parseInt(i.toString(), 10)][\"\" + field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue(mapper.child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue('child', obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[parseInt(i.toString(), 10)]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childItems = getValue('child', obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[parseInt(i.toString(), 10)][this.fields.id])\n ? getValue(this.fields.id, node[parseInt(i.toString(), 10)]).toString()\n : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n _this.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n _this.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n _this.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[parseInt(len.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[parseInt(a.toString(), 10)][this.fields.id] ? this.treeData[parseInt(a.toString(), 10)][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[parseInt(index.toString(), 10)][this.fields.id]\n ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[parseInt(index.toString(), 10)]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[parseInt(i.toString(), 10)]);\n if (treeData[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === currID) {\n treeData[parseInt(i.toString(), 10)] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == 'string') {\n nodesID[0] = target.toString();\n }\n else if (typeof target === 'object') {\n nodesID[0] = target.getAttribute('data-uid').toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[parseInt(i.toString(), 10)]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length === 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function () { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length === 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[parseInt(i.toString(), 10)]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var _this = this;\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n this.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n _this.addGivenNodes(nodes, dropLi, index, true, dropUl);\n _this.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[parseInt(i.toString(), 10)]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[parseInt(i.toString(), 10)][this.fields.id].toString());\n this.getHierarchicalParentId(data[parseInt(i.toString(), 10)][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeViewModel} newProp - The new property value.\n * @param {TreeViewModel} oldProp - The old property value.\n * @returns {void}\n * @private\n */\n TreeView.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 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[parseInt(i.toString(), 10)].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[parseInt(i.toString(), 10)], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @returns {void}\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n *\n * @param { object } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[parseInt(i.toString(), 10)]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[parseInt(i.toString(), 10)]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {void}\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n * @returns {void}\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType === 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length !== 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType === 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: 'smooth' }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n * @returns {void}\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} - An array of strings representing the unique identifiers of checked nodes.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} An array of strings representing the unique identifiers of disabled nodes.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {Object} - The data associated with the specified node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n * @returns {Object} - The tree data associated with the specified node or element.\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n *\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index, null, null, null, dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n *\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {Object[]} newData - Specifies the new data of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var isRefreshChild = false;\n if (this.dataType === 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType === 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n var id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n var newNodeData;\n var parentData;\n if (this.dataType === 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[parseInt(k.toString(), 10)][this.fields.parentID])) {\n parentData = newData[parseInt(k.toString(), 10)];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[parseInt(index.toString(), 10)]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute('title', newNodeData[this.fields.tooltip]);\n }\n if (Object.prototype.hasOwnProperty.call(newNodeData, this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n *\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\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 { Component, formatUnit, EventHandler, Event, isNullOrUndefined, closest, Browser } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Sidebar = /** @class */ (function (_super) {\n __extends(Sidebar, _super);\n function Sidebar(options, element) {\n return _super.call(this, options, element) || this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n this.firstRender = true;\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNOU(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === 'EJS-SIDEBAR') {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : null;\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n if (!isNullOrUndefined(this.tabIndex)) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], [CLOSE, DISABLEANIMATION]);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && !this.firstRender) {\n this.triggerChange();\n }\n this.firstRender = false;\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling && !isNullOrUndefined(this.defaultBackdropDiv)) {\n removeClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @param {Event} e - The event triggering the hide action.\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyle(_this.element, { 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling && !(this.type === 'Over' && this.enableDock)) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @param {Event} e - The optional event triggering the show action.\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], [VISIBILITY, DISABLEANIMATION]);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var targetString = this.target;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n this.defaultBackdropDiv = this.createElement('div');\n addClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n setStyle(this.defaultBackdropDiv, { height: targetString.style.height });\n sibling.appendChild(this.defaultBackdropDiv);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function () {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto' && !(this.type === 'Over' && this.enableDock)) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && (this.element.classList.contains(CLOSE) || this.isOpen)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = this.setDimension(this.dockSize);\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION, DISABLEANIMATION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\nexport { Sidebar };\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 { Component, NotifyPropertyChanges, ChildProperty, Property, Collection, append, extend, Event, EventHandler, closest, addClass, removeClass, detach, remove, initializeCSPTemplate, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { Popup } from '@syncfusion/ej2-popups';\nvar ICONRIGHT = 'e-icon-right';\nvar ITEMTEXTCLASS = 'e-breadcrumb-text';\nvar ICONCLASS = 'e-breadcrumb-icon';\nvar MENUCLASS = 'e-breadcrumb-menu';\nvar ITEMCLASS = 'e-breadcrumb-item';\nvar POPUPCLASS = 'e-breadcrumb-popup';\nvar WRAPMODECLASS = 'e-breadcrumb-wrap-mode';\nvar SCROLLMODECLASS = 'e-breadcrumb-scroll-mode';\nvar TABINDEX = 'tabindex';\nvar DISABLEDCLASS = 'e-disabled';\nvar ARIADISABLED = 'aria-disabled';\nvar DOT = '.';\n/**\n * Defines the Breadcrumb overflow modes.\n */\nexport var BreadcrumbOverflowMode;\n(function (BreadcrumbOverflowMode) {\n /**\n * Hidden mode shows the maximum number of items possible in the container space and hides the remaining items.\n * Clicking on a previous item will make the hidden item visible.\n */\n BreadcrumbOverflowMode[\"Hidden\"] = \"Hidden\";\n /**\n * Collapsed mode shows the first and last Breadcrumb items and hides the remaining items with a collapsed icon.\n * When the collapsed icon is clicked, all items become visible and navigable.\n */\n BreadcrumbOverflowMode[\"Collapsed\"] = \"Collapsed\";\n /**\n * Menu mode shows the number of Breadcrumb items that can be accommodated within the container space and creates a submenu with the remaining items.\n */\n BreadcrumbOverflowMode[\"Menu\"] = \"Menu\";\n /**\n * Wrap mode wraps the items to multiple lines when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Wrap\"] = \"Wrap\";\n /**\n * Scroll mode shows an HTML scroll bar when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Scroll\"] = \"Scroll\";\n /**\n * None mode shows all the items in a single line.\n */\n BreadcrumbOverflowMode[\"None\"] = \"None\";\n})(BreadcrumbOverflowMode || (BreadcrumbOverflowMode = {}));\nvar BreadcrumbItem = /** @class */ (function (_super) {\n __extends(BreadcrumbItem, _super);\n function BreadcrumbItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"url\", void 0);\n __decorate([\n Property(null)\n ], BreadcrumbItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BreadcrumbItem.prototype, \"disabled\", void 0);\n return BreadcrumbItem;\n}(ChildProperty));\nexport { BreadcrumbItem };\n/**\n * Breadcrumb is a graphical user interface that helps to identify or highlight the current location within a hierarchical structure of websites.\n * The aim is to make the user aware of their current position in a hierarchy of website links.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Breadcrumb = /** @class */ (function (_super) {\n __extends(Breadcrumb, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {BreadcrumbModel} options - Specifies the Breadcrumb model.\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function Breadcrumb(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = false;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.preRender = function () {\n // pre render code\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.render = function () {\n this.initialize();\n this.renderItems(this.items);\n this.wireEvents();\n };\n Breadcrumb.prototype.initialize = function () {\n this._maxItems = this.maxItems;\n if (isNullOrUndefined(this.element.getAttribute('aria-label'))) {\n this.element.setAttribute('aria-label', 'breadcrumb');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n if (this.disabled) {\n this.element.classList.add(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, 'true');\n }\n if (this.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n this.initItems();\n this.initPvtProps();\n };\n Breadcrumb.prototype.initPvtProps = function () {\n if (this.overflowMode === 'Hidden' && this._maxItems > 0) {\n this.endIndex = this.getEndIndex();\n this.startIndex = this.endIndex + 1 - (this._maxItems - 1);\n }\n if (this.overflowMode === 'Menu') {\n if (this._maxItems >= 0) {\n this.startIndex = this._maxItems > 1 ? 1 : 0;\n this.endIndex = this.getEndIndex();\n this.popupUl = this.createElement('ul', { attrs: { TABINDEX: '0', 'role': 'menu' } });\n }\n else {\n this.startIndex = this.endIndex = null;\n }\n }\n };\n Breadcrumb.prototype.getEndIndex = function () {\n var _this = this;\n var endIndex;\n if (this.activeItem) {\n this.items.forEach(function (item, idx) {\n if (item.url === _this.activeItem || item.text === _this.activeItem) {\n endIndex = idx;\n }\n });\n }\n else {\n endIndex = this.items.length - 1;\n }\n return endIndex;\n };\n Breadcrumb.prototype.initItems = function () {\n if (!this.items.length) {\n var baseUri = void 0;\n var uri = void 0;\n var items = [];\n if (this.url) {\n var url = new URL(this.url, window.location.origin);\n baseUri = url.origin + '/';\n uri = url.href.split(baseUri)[1].split('/');\n }\n else {\n baseUri = window.location.origin + '/';\n uri = window.location.href.split(baseUri)[1].split('/');\n }\n items.push({ iconCss: 'e-icons e-home', url: baseUri });\n for (var i = 0; i < uri.length; i++) {\n if (uri[i]) {\n items.push({ text: uri[i], url: baseUri + uri[i] });\n baseUri += uri[i] + '/';\n }\n }\n this.setProperties({ items: items }, true);\n }\n };\n Breadcrumb.prototype.renderItems = function (items) {\n var _this = this;\n var item;\n var isSingleLevel;\n var isIconRight = this.element.classList.contains(ICONRIGHT);\n var itemsLength = items.length;\n if (itemsLength) {\n var isActiveItem = void 0;\n var isLastItem = void 0;\n var isLastItemInPopup_1;\n var j_1 = 0;\n var wrapDiv = void 0;\n var len = (itemsLength * 2) - 1;\n var isItemCancelled_1 = false;\n var ol = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-wrapped-ol' : '' });\n var firstOl = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-first-ol' : '' });\n var showIcon = this.hasField(items, 'iconCss');\n var isCollasped = (this.overflowMode === 'Collapsed' && this._maxItems > 0 && itemsLength > this._maxItems && !this.isExpanded);\n var isDefaultOverflowMode_1 = (this.overflowMode === 'Hidden' && this._maxItems > 0);\n if (this.overflowMode === 'Menu' && this.popupUl) {\n this.popupUl.innerHTML = '';\n }\n var listBaseOptions = {\n moduleName: this.getModuleName(),\n showIcon: showIcon,\n itemNavigable: true,\n itemCreated: function (args) {\n var isLastItem = args.curData.isLastItem;\n if (isLastItem && args.item.children.length && !_this.itemTemplate) {\n delete args.curData.isLastItem;\n if (!isLastItemInPopup_1 && !_this.enableActiveItemNavigation) {\n args.item.innerHTML = _this.createElement('span', { className: ITEMTEXTCLASS, innerHTML: args.item.children[0].innerHTML }).outerHTML;\n }\n }\n if (args.curData.iconCss && !args.curData.text && !_this.itemTemplate) {\n args.item.classList.add('e-icon-item');\n }\n if (isDefaultOverflowMode_1) {\n args.item.setAttribute('item-index', j_1.toString());\n }\n var eventArgs = {\n item: extend({}, args.curData.properties ?\n args.curData.properties : args.curData), element: args.item, cancel: false\n };\n _this.trigger('beforeItemRender', eventArgs);\n isItemCancelled_1 = eventArgs.cancel;\n var containsRightIcon = (isIconRight || eventArgs.element.classList.contains(ICONRIGHT));\n if (containsRightIcon && args.curData.iconCss && !_this.itemTemplate) {\n args.item.querySelector('.e-anchor-wrap').appendChild(args.item.querySelector(DOT + ICONCLASS));\n }\n if (eventArgs.item.disabled) {\n args.item.setAttribute(ARIADISABLED, 'true');\n args.item.classList.add(DISABLEDCLASS);\n }\n if (eventArgs.item.id) {\n args.item.setAttribute('id', eventArgs.item.id);\n }\n if ((eventArgs.item.disabled || _this.disabled) && args.item.children.length && !_this.itemTemplate) {\n args.item.children[0].setAttribute(TABINDEX, '-1');\n }\n if (args.curData.isEmptyUrl) {\n args.item.children[0].removeAttribute('href');\n if ((!isLastItem || (isLastItem && _this.enableActiveItemNavigation)) && !(eventArgs.item.disabled\n || _this.disabled)) {\n args.item.children[0].setAttribute(TABINDEX, '0');\n EventHandler.add(args.item.children[0], 'keydown', _this.keyDownHandler, _this);\n }\n }\n args.item.removeAttribute('role');\n if (isLastItem) {\n args.item.setAttribute('data-active-item', '');\n }\n if (!_this.itemTemplate) {\n _this.beforeItemRenderChanges(args.curData, eventArgs.item, args.item, containsRightIcon);\n }\n }\n };\n for (var i = 0; i < len; (i % 2 && j_1++), i++) {\n isActiveItem = (this.activeItem && (this.activeItem === items[j_1].url ||\n this.activeItem === items[j_1].text));\n if (isCollasped && i > 1 && i < len - 2) {\n continue;\n }\n else if (isDefaultOverflowMode_1 && ((j_1 < this.startIndex || j_1 > this.endIndex)\n && (i % 2 ? j_1 !== this.startIndex - 1 : true)) && j_1 !== 0) {\n continue;\n }\n if (i % 2) {\n // separator item\n wrapDiv = this.createElement('div', { className: 'e-breadcrumb-item-wrapper' });\n if ((this.separatorTemplate && this.separatorTemplate === '/') || isNullOrUndefined(this.separatorTemplate)) {\n listBaseOptions.template = initializeCSPTemplate(function () {\n return '/';\n });\n }\n else {\n listBaseOptions.template = this.separatorTemplate;\n }\n listBaseOptions.itemClass = 'e-breadcrumb-separator';\n isSingleLevel = false;\n item = [{ previousItem: items[j_1], nextItem: items[j_1 + 1] }];\n }\n else {\n // list item\n listBaseOptions.itemClass = '';\n if (this.itemTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listBaseOptions.template = this.itemTemplate;\n isSingleLevel = false;\n }\n else {\n isSingleLevel = true;\n }\n item = [extend({}, items[j_1].properties ?\n items[j_1].properties\n : items[j_1])];\n if (!item[0].url && !this.itemTemplate) {\n item = [extend({}, item[0], { isEmptyUrl: true, url: '#' })];\n }\n isLastItem = (isDefaultOverflowMode_1 || this.overflowMode === 'Menu') && (j_1 === this.endIndex);\n if (((i === len - 1 || isLastItem) && !this.itemTemplate) || isActiveItem) {\n item[0].isLastItem = true;\n }\n }\n var parent_1 = ol;\n var lastPopupItemIdx = this.startIndex + this.endIndex - this._maxItems;\n if (this.overflowMode === 'Menu' && ((j_1 >= this.startIndex && (j_1 <= lastPopupItemIdx && (i % 2 ? !(j_1 === lastPopupItemIdx) : true)) && this.endIndex >= this._maxItems && this._maxItems > 0) || this._maxItems === 0)) {\n if (i % 2) {\n continue;\n }\n else {\n parent_1 = this.popupUl;\n if (isLastItem) {\n isLastItemInPopup_1 = true;\n }\n }\n }\n else if (this.overflowMode === 'Wrap') {\n if (i === 0) {\n parent_1 = firstOl;\n }\n else {\n parent_1 = wrapDiv;\n }\n }\n var li = ListBase.createList(this.createElement, item, listBaseOptions, isSingleLevel, this).childNodes;\n if (!isItemCancelled_1) {\n append(li, parent_1);\n }\n else if (isDefaultOverflowMode_1 || isCollasped || this.overflowMode === 'Menu' || this.overflowMode === 'Wrap') {\n items.splice(j_1, 1);\n this.initPvtProps();\n return this.reRenderItems();\n }\n else if ((i === len - 1 || isLastItem)) {\n remove(parent_1.lastElementChild);\n }\n if (this.overflowMode === 'Wrap' && i !== 0 && i % 2 === 0) {\n ol.appendChild(wrapDiv);\n }\n if (isCollasped && i === 1) {\n var li_1 = this.createElement('li', { className: 'e-icons e-breadcrumb-collapsed', attrs: { TABINDEX: '0' } });\n EventHandler.add(li_1, 'keyup', this.expandHandler, this);\n ol.appendChild(li_1);\n }\n if (this.overflowMode === 'Menu' && this.startIndex === i && this.endIndex >= this._maxItems && this._maxItems >= 0) {\n var menu = this.getMenuElement();\n EventHandler.add(menu, 'keyup', this.keyDownHandler, this);\n ol.appendChild(menu);\n }\n if (isActiveItem || isLastItem) {\n break;\n }\n if (isItemCancelled_1) {\n i++;\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n setTimeout(function () {\n _this.calculateMaxItems();\n }, 5);\n }\n if (this.overflowMode === 'Wrap') {\n this.element.appendChild(firstOl);\n }\n this.element.appendChild(ol);\n if (!this.isReact) {\n this.calculateMaxItems();\n }\n }\n };\n Breadcrumb.prototype.calculateMaxItems = function () {\n if (this.overflowMode === 'Hidden' || this.overflowMode === 'Collapsed' || this.overflowMode === 'Menu') {\n var maxItems = void 0;\n var width = this.element.offsetWidth;\n var liElems = [].slice.call(this.element.children[0].children).reverse();\n var liWidth = this.overflowMode === 'Menu' ? 0 : liElems[liElems.length - 1].offsetWidth + (liElems[liElems.length - 2] ? liElems[liElems.length - 2].offsetWidth : 0);\n if (this.overflowMode === 'Menu') {\n var menuEle = this.getMenuElement();\n this.element.appendChild(menuEle);\n liWidth += menuEle.offsetWidth;\n remove(menuEle);\n }\n for (var i = 0; i < liElems.length - 2; i++) {\n if (liWidth > width) {\n maxItems = Math.ceil((i - 1) / 2) + ((this.overflowMode === 'Menu' && i <= 2) ? 0 : 1);\n if (((this.maxItems > maxItems && !(this.maxItems > -1 && maxItems === -1)) ||\n this.maxItems === -1) && this._maxItems !== maxItems) {\n this._maxItems = maxItems;\n this.initPvtProps();\n return this.reRenderItems();\n }\n else {\n break;\n }\n }\n else {\n if (this.overflowMode === 'Menu' && i === 2) {\n liWidth += liElems[liElems.length - 1].offsetWidth + liElems[liElems.length - 2].offsetWidth;\n if (liWidth > width) {\n this._maxItems = 1;\n this.initPvtProps();\n return this.reRenderItems();\n }\n }\n if (!(this.overflowMode === 'Menu' && liElems[i].classList.contains(MENUCLASS))) {\n liWidth += liElems[i].offsetWidth;\n }\n }\n }\n }\n else if ((this.overflowMode === 'Wrap' || this.overflowMode === 'Scroll') && this._maxItems > 0) {\n var width = 0;\n var liElems = this.element.querySelectorAll(DOT + ITEMCLASS);\n if (liElems.length > this._maxItems + this._maxItems - 1) {\n for (var i = this.overflowMode === 'Wrap' ? 1 : 0; i < this._maxItems + this._maxItems - 1; i++) {\n width += liElems[i].offsetWidth;\n }\n width = width + 5 + (parseInt(getComputedStyle(this.element.children[0]).paddingLeft, 10) * 2);\n if (this.overflowMode === 'Wrap') {\n this.element.querySelector('.e-breadcrumb-wrapped-ol').style.width = width + 'px';\n }\n else {\n this.element.style.width = width + 'px';\n }\n }\n }\n };\n Breadcrumb.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n Breadcrumb.prototype.getMenuElement = function () {\n return this.createElement('li', { className: 'e-icons e-breadcrumb-menu', attrs: { TABINDEX: '0' } });\n };\n Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {\n var wrapElem = elem.querySelector('.e-anchor-wrap');\n if (wrapElem) {\n wrapElem.parentElement.setAttribute('aria-label', 'home');\n }\n if (currItem.text !== prevItem.text && wrapElem) {\n wrapElem.childNodes.forEach(function (child) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = currItem.text;\n }\n });\n }\n if (currItem.iconCss !== prevItem.iconCss && wrapElem) { // wrapElem - for checking it is item not a separator\n var iconElem = elem.querySelector(DOT + ICONCLASS);\n if (iconElem) {\n if (currItem.iconCss) {\n removeClass([iconElem], prevItem.iconCss.split(' '));\n addClass([iconElem], currItem.iconCss.split(' '));\n }\n else {\n remove(iconElem);\n }\n }\n else if (currItem.iconCss) {\n var iconElem_1 = this.createElement('span', { className: ICONCLASS + ' ' + currItem.iconCss });\n if (isRightIcon) {\n append([iconElem_1], wrapElem);\n }\n else {\n wrapElem.insertBefore(iconElem_1, wrapElem.childNodes[0]);\n }\n }\n }\n if (currItem.url !== prevItem.url && this.enableNavigation) {\n var anchor = elem.querySelector('a.' + ITEMTEXTCLASS);\n if (anchor) {\n if (currItem.url) {\n anchor.setAttribute('href', currItem.url);\n }\n else {\n anchor.removeAttribute('href');\n }\n }\n }\n };\n Breadcrumb.prototype.reRenderItems = function () {\n this.element.innerHTML = '';\n this.renderItems(this.items);\n };\n Breadcrumb.prototype.clickHandler = function (e) {\n var li = closest(e.target, DOT + ITEMCLASS + ':not(.e-breadcrumb-separator)');\n if (!this.enableNavigation) {\n e.preventDefault();\n }\n if (li && (closest(e.target, DOT + ITEMTEXTCLASS) || this.itemTemplate)) {\n var idx = void 0;\n if (this.overflowMode === 'Wrap') {\n idx = [].slice.call(this.element.querySelectorAll(DOT + ITEMCLASS)).indexOf(li);\n }\n else {\n idx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (this.overflowMode === 'Menu') {\n if (closest(e.target, DOT + POPUPCLASS)) {\n idx += this.startIndex;\n this.endIndex = idx;\n if (e.type === 'keydown') {\n this.documentClickHandler(e);\n }\n }\n else if (this.element.querySelector(DOT + MENUCLASS)) {\n if (idx > [].slice.call(this.element.children[0].children).indexOf(this.element.querySelector(DOT + MENUCLASS))) {\n idx += (this.popupUl.childElementCount * 2) - 2;\n idx = Math.floor(idx / 2);\n this.endIndex = idx;\n }\n else {\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n }\n if (this.overflowMode === 'Hidden' && this._maxItems > 0 && this.endIndex !== 0) {\n idx = parseInt(li.getAttribute('item-index'), 10);\n if (this.startIndex > 1) {\n this.startIndex -= (this.endIndex - idx);\n }\n this.endIndex = idx;\n }\n this.trigger('itemClick', { element: li, item: this.items[idx], event: e });\n if (this.items[idx]) {\n this.activeItem = this.items[idx].url || this.items[idx].text;\n }\n this.dataBind();\n }\n if (e.target.classList.contains('e-breadcrumb-collapsed')) {\n this.isExpanded = true;\n this.reRenderItems();\n }\n if (e.target.classList.contains(MENUCLASS) && !this.isPopupCreated) {\n this.renderPopup();\n }\n };\n Breadcrumb.prototype.renderPopup = function () {\n var _this = this;\n var wrapper = this.createElement('div', { className: POPUPCLASS + ' ' + this.cssClass + (this.enableRtl ? ' e-rtl' : '') });\n document.body.appendChild(wrapper);\n this.isPopupCreated = true;\n this.popupObj = new Popup(wrapper, {\n content: this.popupUl,\n relateTo: this.element.querySelector(DOT + MENUCLASS),\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n collision: { X: 'fit', Y: 'flip' },\n open: function () {\n if (_this.popupUl) {\n _this.popupUl.focus();\n }\n }\n });\n this.popupWireEvents();\n this.popupObj.show();\n };\n Breadcrumb.prototype.documentClickHandler = function (e) {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && !closest(e.target, DOT + MENUCLASS)) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n };\n Breadcrumb.prototype.resize = function () {\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n };\n Breadcrumb.prototype.expandHandler = function (e) {\n if (e.key === 'Enter') {\n this.isExpanded = true;\n this.reRenderItems();\n }\n };\n Breadcrumb.prototype.keyDownHandler = function (e) {\n if (e.key === 'Enter') {\n this.clickHandler(e);\n }\n };\n Breadcrumb.prototype.popupKeyDownHandler = function (e) {\n if (e.key === 'Escape') {\n this.documentClickHandler(e);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {BreadcrumbModel} newProp - Specifies the new properties.\n * @param {BreadcrumbModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Breadcrumb.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 'items':\n case 'enableActiveItemNavigation':\n this.reRenderItems();\n break;\n case 'activeItem':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n break;\n case 'overflowMode':\n case 'maxItems':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n if (oldProp.overflowMode === 'Wrap') {\n this.element.classList.remove(WRAPMODECLASS);\n }\n else if (newProp.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n if (oldProp.overflowMode === 'Scroll') {\n this.element.classList.remove(SCROLLMODECLASS);\n }\n else if (newProp.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n break;\n case 'url':\n this.initItems();\n this.reRenderItems();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if ((oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) && !(newProp.cssClass &&\n newProp.cssClass.indexOf(ICONRIGHT) > -1) || !(oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) &&\n (newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1)) {\n this.reRenderItems();\n }\n break;\n case 'enableRtl':\n this.element.classList.toggle('e-rtl');\n break;\n case 'disabled':\n this.element.classList.toggle(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, newProp.disabled + '');\n break;\n }\n }\n };\n Breadcrumb.prototype.wireEvents = function () {\n this.delegateClickHanlder = this.documentClickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHanlder, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resize.bind(this));\n };\n Breadcrumb.prototype.popupWireEvents = function () {\n EventHandler.add(this.popupObj.element, 'click', this.clickHandler, this);\n EventHandler.add(this.popupObj.element, 'keydown', this.popupKeyDownHandler, this);\n };\n Breadcrumb.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'click', this.delegateClickHanlder);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n window.removeEventListener('resize', this.resize.bind(this));\n if (this.popupObj) {\n EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);\n EventHandler.remove(this.popupObj.element, 'keydown', this.popupKeyDownHandler);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Breadcrumb.prototype.getPersistData = function () {\n return this.addOnPersist(['activeItem']);\n };\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Breadcrumb.prototype.getModuleName = function () {\n return 'breadcrumb';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Breadcrumb.prototype.destroy = function () {\n var _this = this;\n var classes = [];\n var attributes = ['aria-label'];\n if (this.cssClass) {\n classes.concat(this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n classes.push('e-rtl');\n }\n if (this.disabled) {\n classes.push(DISABLEDCLASS);\n attributes.push(ARIADISABLED);\n }\n if (this.overflowMode === 'Wrap') {\n classes.push(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n classes.push(SCROLLMODECLASS);\n }\n this.unWireEvents();\n this.element.innerHTML = '';\n removeClass([this.element], classes);\n attributes.forEach(function (attribute) {\n _this.element.removeAttribute(attribute);\n });\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"url\", void 0);\n __decorate([\n Collection([], BreadcrumbItem)\n ], Breadcrumb.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"activeItem\", void 0);\n __decorate([\n Property(-1)\n ], Breadcrumb.prototype, \"maxItems\", void 0);\n __decorate([\n Property('Menu')\n ], Breadcrumb.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], Breadcrumb.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('/')\n ], Breadcrumb.prototype, \"separatorTemplate\", void 0);\n __decorate([\n Property(true)\n ], Breadcrumb.prototype, \"enableNavigation\", void 0);\n __decorate([\n Property(false)\n ], Breadcrumb.prototype, \"enableActiveItemNavigation\", void 0);\n __decorate([\n Property(false)\n ], Breadcrumb.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"created\", void 0);\n Breadcrumb = __decorate([\n NotifyPropertyChanges\n ], Breadcrumb);\n return Breadcrumb;\n}(Component));\nexport { Breadcrumb };\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 { Component, EventHandler, Collection, Property, Event, formatUnit, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { ChildProperty, addClass, removeClass, setStyleAttribute, attributes, getUniqueID, compile, getInstance, L10n } from '@syncfusion/ej2-base';\nimport { append, closest, isNullOrUndefined, remove, classList, Touch, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n// Constant variables\nvar CLS_CAROUSEL = 'e-carousel';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_RTL = 'e-rtl';\nvar CLS_PARTIAL = 'e-partial';\nvar CLS_SWIPE = 'e-swipe';\nvar CLS_SLIDE_CONTAINER = 'e-carousel-slide-container';\nvar CLS_ITEMS = 'e-carousel-items';\nvar CLS_CLONED = 'e-cloned';\nvar CLS_ITEM = 'e-carousel-item';\nvar CLS_PREVIOUS = 'e-previous';\nvar CLS_NEXT = 'e-next';\nvar CLS_PREV_ICON = 'e-previous-icon';\nvar CLS_NEXT_ICON = 'e-next-icon';\nvar CLS_NAVIGATORS = 'e-carousel-navigators';\nvar CLS_INDICATORS = 'e-carousel-indicators';\nvar CLS_INDICATOR_BARS = 'e-indicator-bars';\nvar CLS_INDICATOR_BAR = 'e-indicator-bar';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_ICON = 'e-icons';\nvar CLS_PLAY_PAUSE = 'e-play-pause';\nvar CLS_PLAY_ICON = 'e-play-icon';\nvar CLS_PAUSE_ICON = 'e-pause-icon';\nvar CLS_PREV_BUTTON = 'e-previous-button';\nvar CLS_NEXT_BUTTON = 'e-next-button';\nvar CLS_PLAY_BUTTON = 'e-play-button';\nvar CLS_FLAT = 'e-flat';\nvar CLS_ROUND = 'e-round';\nvar CLS_HOVER_ARROWS = 'e-hover-arrows';\nvar CLS_HOVER = 'e-carousel-hover';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_SLIDE_ANIMATION = 'e-carousel-slide-animation';\nvar CLS_FADE_ANIMATION = 'e-carousel-fade-animation';\nvar CLS_CUSTOM_ANIMATION = 'e-carousel-custom-animation';\nvar CLS_ANIMATION_NONE = 'e-carousel-animation-none';\nvar CLS_PREV_SLIDE = 'e-prev';\nvar CLS_NEXT_SLIDE = 'e-next';\nvar CLS_TRANSITION_START = 'e-transition-start';\nvar CLS_TRANSITION_END = 'e-transition-end';\n/**\n * Specifies the action (touch & mouse) which enables the slide swiping action in carousel.\n * * Touch - Enables or disables the swiping action in touch interaction.\n * * Mouse - Enables or disables the swiping action in mouse interaction.\n *\n * @aspNumberEnum\n */\nexport var CarouselSwipeMode;\n(function (CarouselSwipeMode) {\n /** Enables or disables the swiping action in touch interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Touch\"] = 1] = \"Touch\";\n /** Enables or disables the swiping action in mouse interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Mouse\"] = 2] = \"Mouse\";\n})(CarouselSwipeMode || (CarouselSwipeMode = {}));\n/** Specifies the carousel individual item. */\nvar CarouselItem = /** @class */ (function (_super) {\n __extends(CarouselItem, _super);\n function CarouselItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], CarouselItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"interval\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"htmlAttributes\", void 0);\n return CarouselItem;\n}(ChildProperty));\nexport { CarouselItem };\nvar Carousel = /** @class */ (function (_super) {\n __extends(Carousel, _super);\n /**\n * Constructor for creating the Carousel widget\n *\n * @param {CarouselModel} options Accepts the carousel model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Carousel(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isSwipe = false;\n return _this;\n }\n Carousel.prototype.getModuleName = function () {\n return CLS_CAROUSEL.replace('e-', '');\n };\n Carousel.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedIndex']);\n };\n Carousel.prototype.preRender = function () {\n this.keyConfigs = {\n home: 'home',\n end: 'end',\n space: 'space',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n var defaultLocale = {\n nextSlide: 'Next slide',\n of: 'of',\n pauseSlideTransition: 'Pause slide transition',\n playSlideTransition: 'Play slide transition',\n previousSlide: 'Previous slide',\n slide: 'Slide',\n slideShow: 'Slide show'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n Carousel.prototype.render = function () {\n this.initialize();\n this.renderSlides();\n this.renderNavigators();\n this.renderPlayButton();\n this.renderIndicators();\n this.applyAnimation();\n this.wireEvents();\n };\n Carousel.prototype.onPropertyChanged = function (newProp, oldProp) {\n var target;\n var rtlElement;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'animationEffect':\n this.applyAnimation();\n break;\n case 'cssClass':\n classList(this.element, [newProp.cssClass], [oldProp.cssClass]);\n break;\n case 'selectedIndex':\n this.setActiveSlide(this.selectedIndex, oldProp.selectedIndex > this.selectedIndex ? 'Previous' : 'Next');\n this.autoSlide();\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n break;\n case 'enableTouchSwipe':\n if (!this.enableTouchSwipe && this.touchModule) {\n this.touchModule.destroy();\n }\n if (this.element.querySelector(\".\" + CLS_ITEMS)) {\n this.renderTouchActions();\n }\n break;\n case 'loop':\n if (this.loop && isNullOrUndefined(this.autoSlideInterval)) {\n this.applySlideInterval();\n }\n this.handleNavigatorsActions(this.selectedIndex);\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n this.reRenderSlides();\n }\n break;\n case 'enableRtl':\n rtlElement = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREV_BUTTON + \",\\n .\" + CLS_NEXT_BUTTON + \", .\" + CLS_PLAY_BUTTON));\n rtlElement.push(this.element);\n if (this.enableRtl) {\n addClass(rtlElement, CLS_RTL);\n }\n else {\n removeClass(rtlElement, CLS_RTL);\n }\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n var cloneCount = this.loop ? this.getNumOfItems() : 0;\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n }\n break;\n case 'buttonsVisibility':\n target = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n if (target) {\n switch (this.buttonsVisibility) {\n case 'Hidden':\n this.resetTemplates(['previousButtonTemplate', 'nextButtonTemplate']);\n remove(target);\n break;\n case 'VisibleOnHover':\n addClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n case 'Visible':\n removeClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n }\n }\n else {\n this.renderNavigators();\n this.renderPlayButton();\n }\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(this.height) });\n break;\n case 'autoPlay':\n if (this.showPlayButton && isNullOrUndefined(this.playButtonTemplate)) {\n this.playButtonClickHandler(null, true);\n }\n this.autoSlide();\n break;\n case 'interval':\n this.autoSlide();\n break;\n case 'showIndicators':\n case 'indicatorsType':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n break;\n case 'showPlayButton':\n target = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (!this.showPlayButton && target) {\n remove(target);\n this.resetTemplates(['playButtonTemplate']);\n }\n this.renderPlayButton();\n break;\n case 'items':\n case 'dataSource': {\n var selectedData = prop === 'dataSource' ? this.dataSource : this.items;\n if (!isNullOrUndefined(selectedData) && selectedData.length > 0 && this.selectedIndex >= selectedData.length) {\n this.setActiveSlide(selectedData.length - 1, 'Previous');\n this.autoSlide();\n }\n this.reRenderSlides();\n this.reRenderIndicators();\n break;\n }\n case 'partialVisible':\n if (this.partialVisible) {\n addClass([this.element], CLS_PARTIAL);\n }\n else {\n removeClass([this.element], CLS_PARTIAL);\n }\n this.reRenderSlides();\n break;\n case 'swipeMode':\n EventHandler.remove(this.element, 'mousedown touchstart', this.swipeStart);\n EventHandler.remove(this.element, 'mousemove touchmove', this.swiping);\n EventHandler.remove(this.element, 'mouseup touchend', this.swipStop);\n this.swipeModehandlers();\n this.reRenderSlides();\n break;\n }\n }\n };\n Carousel.prototype.reRenderSlides = function () {\n var target = this.element.querySelector(\".\" + CLS_ITEMS);\n if (target) {\n this.resetTemplates(['itemTemplate']);\n remove(target);\n }\n this.renderSlides();\n };\n Carousel.prototype.reRenderIndicators = function () {\n var target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n };\n Carousel.prototype.initialize = function () {\n var carouselClasses = [];\n carouselClasses.push(CLS_CAROUSEL);\n if (this.cssClass) {\n carouselClasses.push(this.cssClass);\n }\n if (this.enableRtl) {\n carouselClasses.push(CLS_RTL);\n }\n if (this.partialVisible) {\n carouselClasses.push(CLS_PARTIAL);\n }\n if (!(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n carouselClasses.push(CLS_SWIPE);\n }\n addClass([this.element], carouselClasses);\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n attributes(this.element, { 'role': 'group', 'aria-roledescription': 'carousel', 'aria-label': this.localeObj.getConstant('slideShow') });\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n Carousel.prototype.renderSlides = function () {\n var _this = this;\n var slideContainer = this.element.querySelector('.' + CLS_SLIDE_CONTAINER);\n if (!slideContainer) {\n slideContainer = this.createElement('div', { className: CLS_SLIDE_CONTAINER, attrs: { 'tabindex': '0', 'role': 'tabpanel' } });\n this.element.appendChild(slideContainer);\n }\n this.itemsContainer = this.createElement('div', { className: CLS_ITEMS, attrs: { 'aria-live': this.autoPlay ? 'off' : 'polite' } });\n slideContainer.appendChild(this.itemsContainer);\n var numOfItems = this.getNumOfItems();\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n if (this.items.length > 0) {\n this.slideItems = this.items;\n this.items.forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.slideItems = this.dataSource;\n this.dataSource.forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer);\n });\n }\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n this.itemsContainer.style.setProperty('--carousel-items-count', \"\" + this.itemsContainer.children.length);\n var slideWidth = isNullOrUndefined(this.itemsContainer.firstElementChild) ? 0 :\n this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transitionProperty = 'none';\n var cloneCount = this.loop ? numOfItems : 0;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.getTranslateX = function (slideWidth, count) {\n if (count === void 0) { count = 1; }\n return this.enableRtl ? \"translateX(\" + (slideWidth) * (count) + \"px)\" :\n \"translateX(\" + -(slideWidth) * (count) + \"px)\";\n };\n Carousel.prototype.renderSlide = function (item, itemTemplate, index, container, isClone) {\n if (isClone === void 0) { isClone = false; }\n var itemEle = this.createElement('div', {\n id: getUniqueID('carousel_item'),\n className: CLS_ITEM + \" \" + (item.cssClass ? item.cssClass : '') + \" \" + (this.selectedIndex === index && !isClone ? CLS_ACTIVE : ''),\n attrs: {\n 'aria-hidden': this.selectedIndex === index && !isClone ? 'false' : 'true', 'data-index': index.toString(),\n 'role': 'group', 'aria-roledescription': 'slide'\n }\n });\n if (isClone) {\n itemEle.classList.add(CLS_CLONED);\n }\n if (!isNullOrUndefined(item.htmlAttributes)) {\n this.setHtmlAttributes(item.htmlAttributes, itemEle);\n }\n var templateId = this.element.id + '_template';\n var template = this.templateParser(itemTemplate)(item, this, 'itemTemplate', templateId, false);\n append(template, itemEle);\n container.appendChild(itemEle);\n };\n Carousel.prototype.renderNavigators = function () {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n var navigators = this.createElement('div', { className: CLS_NAVIGATORS });\n var itemsContainer = this.element.querySelector(\".\" + CLS_SLIDE_CONTAINER);\n itemsContainer.insertAdjacentElement('afterend', navigators);\n if (!isNullOrUndefined(this.slideItems) && this.slideItems.length > 1) {\n this.renderNavigatorButton('Previous');\n this.renderNavigatorButton('Next');\n }\n this.renderTemplates();\n };\n Carousel.prototype.renderNavigatorButton = function (direction) {\n var buttonContainer = this.createElement('div', {\n className: (direction === 'Previous' ? CLS_PREVIOUS : CLS_NEXT) + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (direction === 'Previous' && this.previousButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_previousButtonTemplate';\n var template = this.templateParser(this.previousButtonTemplate)({ type: 'Previous' }, this, 'previousButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else if (direction === 'Next' && this.nextButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_nextButtonTemplate';\n var template = this.templateParser(this.nextButtonTemplate)({ type: 'Next' }, this, 'nextButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else {\n var button = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(direction === 'Previous' ? 'previousSlide' : 'nextSlide'), 'type': 'button' }\n });\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + (direction === 'Previous' ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON),\n iconCss: CLS_ICON + ' ' + (direction === 'Previous' ? CLS_PREV_ICON : CLS_NEXT_ICON),\n enableRtl: this.enableRtl,\n disabled: !this.loop && this.selectedIndex === (direction === 'Previous' ? 0 : this.slideItems.length - 1)\n });\n buttonObj.appendTo(button);\n buttonContainer.appendChild(button);\n }\n this.element.querySelector('.' + CLS_NAVIGATORS).appendChild(buttonContainer);\n EventHandler.add(buttonContainer, 'click', this.navigatorClickHandler, this);\n };\n Carousel.prototype.renderPlayButton = function () {\n if (isNullOrUndefined(this.slideItems) || this.buttonsVisibility === 'Hidden' || !this.showPlayButton || this.slideItems.length <= 1) {\n return;\n }\n var playPauseWrap = this.createElement('div', {\n className: CLS_PLAY_PAUSE + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (this.playButtonTemplate) {\n addClass([playPauseWrap], CLS_TEMPLATE);\n var templateId = this.element.id + '_playButtonTemplate';\n var template = this.templateParser(this.playButtonTemplate)({}, this, 'playButtonTemplate', templateId, false);\n append(template, playPauseWrap);\n }\n else {\n var playButton = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'), 'type': 'button' }\n });\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + CLS_PLAY_BUTTON,\n iconCss: CLS_ICON + ' ' + (this.autoPlay && !isLastSlide ? CLS_PAUSE_ICON : CLS_PLAY_ICON),\n isToggle: true,\n enableRtl: this.enableRtl\n });\n if (isLastSlide) {\n this.setProperties({ autoPlay: false }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', 'polite');\n }\n buttonObj.appendTo(playButton);\n playPauseWrap.appendChild(playButton);\n }\n var navigators = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n navigators.insertBefore(playPauseWrap, navigators.lastElementChild);\n this.renderTemplates();\n EventHandler.add(playPauseWrap, 'click', this.playButtonClickHandler, this);\n };\n Carousel.prototype.renderIndicators = function () {\n var _this = this;\n if (!this.showIndicators || isNullOrUndefined(this.indicatorsType)) {\n return;\n }\n var indicatorClass = 'e-default';\n if (!this.indicatorsTemplate) {\n indicatorClass = \"e-\" + this.indicatorsType.toLowerCase();\n }\n var indicatorWrap = this.createElement('div', { className: CLS_INDICATORS + \" \" + indicatorClass });\n var indicatorBars = this.createElement('div', { className: CLS_INDICATOR_BARS });\n indicatorWrap.appendChild(indicatorBars);\n var progress;\n if (this.slideItems) {\n switch (this.indicatorsType) {\n case 'Fraction':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n indicatorBars.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n progress = this.createElement('div', { className: CLS_INDICATOR_BAR });\n progress.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n progress.style.setProperty('--carousel-items-count', \"\" + this.slideItems.length);\n indicatorBars.appendChild(progress);\n }\n break;\n case 'Default':\n case 'Dynamic':\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE : _this.selectedIndex - 1 === index ? CLS_PREV_SLIDE : _this.selectedIndex + 1 === index ? CLS_NEXT_SLIDE : ''),\n attrs: { 'data-index': index.toString(), 'aria-current': _this.selectedIndex === index ? 'true' : 'false' }\n });\n indicatorBar.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n if (_this.indicatorsTemplate) {\n _this.renderIndicatorTemplate(indicatorBar, index);\n }\n else if (_this.indicatorsType === 'Default') {\n var indicator = _this.createElement('button', { className: CLS_INDICATOR, attrs: { 'type': 'button', 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length } });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {}));\n var buttonObj = new Button({ cssClass: 'e-flat e-small' });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n if (_this.indicatorsType === 'Default') {\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n }\n });\n break;\n }\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderIndicatorTemplate = function (indicatorBar, index) {\n if (index === void 0) { index = 0; }\n addClass([indicatorBar], CLS_TEMPLATE);\n var templateId = this.element.id + '_indicatorsTemplate';\n var template = this.templateParser(this.indicatorsTemplate)({ index: index, selectedIndex: this.selectedIndex }, this, 'indicatorsTemplate', templateId, false);\n append(template, indicatorBar);\n };\n Carousel.prototype.renderKeyboardActions = function () {\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n };\n Carousel.prototype.renderTouchActions = function () {\n if (!this.enableTouchSwipe) {\n return;\n }\n this.touchModule = new Touch(this.element, { swipe: this.swipeHandler.bind(this) });\n };\n Carousel.prototype.applyAnimation = function () {\n removeClass([this.element], [CLS_CUSTOM_ANIMATION, CLS_FADE_ANIMATION, CLS_SLIDE_ANIMATION, CLS_ANIMATION_NONE]);\n switch (this.animationEffect) {\n case 'Slide':\n addClass([this.element], CLS_SLIDE_ANIMATION);\n break;\n case 'Fade':\n addClass([this.element], CLS_FADE_ANIMATION);\n break;\n case 'None':\n addClass([this.element], CLS_ANIMATION_NONE);\n break;\n case 'Custom':\n addClass([this.element], CLS_CUSTOM_ANIMATION);\n break;\n }\n };\n Carousel.prototype.autoSlide = function () {\n if (isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n this.resetSlideInterval();\n this.applySlideInterval();\n };\n Carousel.prototype.autoSlideChange = function () {\n var activeSlide = this.element.querySelector(\".\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide)) {\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n if (!this.loop && activeIndex === this.slideItems.length - 1) {\n this.resetSlideInterval();\n }\n else {\n var index = (activeIndex + 1) % this.slideItems.length;\n if (!this.element.classList.contains(CLS_HOVER)) {\n this.setActiveSlide(index, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.applySlideInterval = function () {\n var _this = this;\n if (!this.autoPlay || this.element.classList.contains(CLS_HOVER)) {\n return;\n }\n var itemInterval = this.interval;\n if (this.items.length > 0 && !isNullOrUndefined(this.items[this.selectedIndex || 0].interval)) {\n itemInterval = this.items[this.selectedIndex || 0].interval;\n }\n this.autoSlideInterval = setInterval(function () { return _this.autoSlideChange(); }, itemInterval);\n };\n Carousel.prototype.resetSlideInterval = function () {\n clearInterval(this.autoSlideInterval);\n this.autoSlideInterval = null;\n };\n Carousel.prototype.getSlideIndex = function (direction) {\n var currentIndex = this.selectedIndex || 0;\n if (direction === 'Previous') {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = this.slideItems.length - 1;\n }\n }\n else {\n currentIndex++;\n if (currentIndex === this.slideItems.length) {\n currentIndex = 0;\n }\n }\n return currentIndex;\n };\n Carousel.prototype.setActiveSlide = function (currentIndex, direction, isSwiped) {\n var _this = this;\n if (isSwiped === void 0) { isSwiped = false; }\n if (this.element.querySelectorAll(\".\" + CLS_ITEM + \".\" + CLS_PREV_SLIDE + \",.\" + CLS_ITEM + \".\" + CLS_NEXT_SLIDE).length > 0) {\n return;\n }\n currentIndex = isNullOrUndefined(currentIndex) ? 0 : currentIndex;\n var allSlides = [].slice.call(this.element.querySelectorAll(\".\" + CLS_ITEM + \":not(.e-cloned)\"));\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM + \".\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide) && this.showIndicators) {\n var activeIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BAR + \".\" + CLS_ACTIVE);\n var activeIndex_1 = parseInt(activeIndicator.dataset.index, 10);\n addClass([allSlides[parseInt(activeIndex_1.toString(), 10)]], CLS_ACTIVE);\n return;\n }\n else if (isNullOrUndefined(activeSlide)) {\n addClass([allSlides[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n var currentSlide = allSlides[parseInt(currentIndex.toString(), 10)];\n var eventArgs = {\n currentIndex: activeIndex,\n nextIndex: currentIndex,\n currentSlide: activeSlide,\n nextSlide: currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped,\n cancel: false\n };\n this.trigger('slideChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ selectedIndex: currentIndex }, true);\n attributes(args.currentSlide, { 'aria-hidden': 'true' });\n attributes(args.nextSlide, { 'aria-hidden': 'false' });\n _this.refreshIndicators(activeIndex, currentIndex);\n _this.slideChangedEventArgs = {\n currentIndex: args.nextIndex,\n previousIndex: args.currentIndex,\n currentSlide: args.nextSlide,\n previousSlide: args.currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped\n };\n var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n var numOfItems = _this.getNumOfItems();\n if (!_this.isSwipe) {\n _this.itemsContainer.style.transitionDuration = '0.6s';\n }\n _this.isSwipe = false;\n if ((_this.animationEffect === 'Fade')) {\n _this.itemsContainer.classList.add('e-fade-in-out');\n }\n else {\n _this.itemsContainer.style.transitionProperty = 'transform';\n }\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, allSlides.length + numOfItems);\n }\n else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n _this.itemsContainer.style.transform = _this.partialVisible ? _this.getTranslateX(slideWidth) : 'translateX(0px)';\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex + numOfItems);\n }\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex);\n }\n if (_this.animationEffect === 'Slide') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_PREV_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_END);\n }\n else {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_START);\n }\n }\n else if (_this.animationEffect === 'Fade') {\n removeClass([args.currentSlide], CLS_ACTIVE);\n addClass([args.nextSlide], CLS_ACTIVE);\n }\n else if (_this.animationEffect === 'Custom') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n }\n else {\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n }\n }\n else {\n _this.onTransitionEnd();\n }\n _this.handleNavigatorsActions(currentIndex);\n });\n };\n Carousel.prototype.onTransitionEnd = function () {\n var _this = this;\n removeClass(this.element.querySelectorAll(\".\" + CLS_ITEMS), 'e-fade-in-out');\n var numOfItems = this.getNumOfItems();\n if (this.slideChangedEventArgs) {\n this.itemsContainer.style.transitionProperty = 'none';\n if (this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' ||\n this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.slideChangedEventArgs.currentIndex + numOfItems);\n }\n addClass([this.slideChangedEventArgs.currentSlide], CLS_ACTIVE);\n removeClass([this.slideChangedEventArgs.previousSlide], CLS_ACTIVE);\n this.trigger('slideChanged', this.slideChangedEventArgs, function () {\n removeClass(_this.element.querySelectorAll(\".\" + CLS_ITEM), [CLS_PREV_SLIDE, CLS_NEXT_SLIDE, CLS_TRANSITION_START, CLS_TRANSITION_END]);\n _this.slideChangedEventArgs = null;\n });\n }\n };\n Carousel.prototype.refreshIndicators = function (activeIndex, currentIndex) {\n var _this = this;\n var slideIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BARS);\n if (isNullOrUndefined(slideIndicator)) {\n return;\n }\n var indicators = [].slice.call(slideIndicator.childNodes);\n switch (this.indicatorsType) {\n case 'Default':\n case 'Dynamic':\n attributes(indicators[parseInt(activeIndex.toString(), 10)], { 'aria-current': 'false' });\n attributes(indicators[parseInt(currentIndex.toString(), 10)], { 'aria-current': 'true' });\n removeClass(indicators, [CLS_ACTIVE, CLS_PREV_SLIDE, CLS_NEXT_SLIDE]);\n addClass([indicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n if (indicators[currentIndex - 1]) {\n addClass([indicators[currentIndex - 1]], CLS_PREV_SLIDE);\n }\n if (indicators[currentIndex + 1]) {\n addClass([indicators[currentIndex + 1]], CLS_NEXT_SLIDE);\n }\n indicators.forEach(function (item) { return item.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex); });\n break;\n case 'Fraction':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.firstElementChild.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n }\n break;\n }\n };\n Carousel.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n Carousel.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Carousel.prototype.getNavigatorState = function (target, isPrevious) {\n var button = target.querySelector(\".\" + (isPrevious ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON));\n if (button) {\n var buttonObj = getInstance(button, Button);\n return buttonObj.disabled;\n }\n return false;\n };\n Carousel.prototype.navigatorClickHandler = function (e) {\n var target = e.currentTarget;\n var isDisabled = this.getNavigatorState(target, target.classList.contains(CLS_PREVIOUS));\n if (isDisabled) {\n return;\n }\n var direction = target.classList.contains(CLS_PREVIOUS) ? 'Previous' : 'Next';\n this.setActiveSlide(this.getSlideIndex(direction), direction);\n this.autoSlide();\n };\n Carousel.prototype.indicatorClickHandler = function (e) {\n var target = closest(e.target, \".\" + CLS_INDICATOR_BAR);\n var index = parseInt(target.dataset.index, 10);\n if (this.selectedIndex !== index) {\n this.setActiveSlide(index, this.selectedIndex > index ? 'Previous' : 'Next');\n this.autoSlide();\n }\n };\n Carousel.prototype.playButtonClickHandler = function (e, isPropertyChange) {\n if (isPropertyChange === void 0) { isPropertyChange = false; }\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n if (playButton) {\n var buttonObj = getInstance(playButton, Button);\n if (!isPropertyChange) {\n this.setProperties({ autoPlay: !this.autoPlay }, true);\n }\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n if (this.autoPlay && !this.loop && this.selectedIndex === this.slideItems.length - 1) {\n this.setActiveSlide(0, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.keyHandler = function (e) {\n var direction;\n var slideIndex;\n var isSlideTransition = false;\n var target = e.target;\n e.preventDefault();\n switch (e.action) {\n case 'space':\n if (this.showIndicators && target.classList.contains(CLS_INDICATOR)) {\n target.click();\n }\n else if (target.classList.contains(CLS_CAROUSEL) || target.classList.contains(CLS_PLAY_BUTTON)) {\n this.playButtonClickHandler(e);\n }\n else if (target.classList.contains(CLS_NEXT_BUTTON)) {\n this.next();\n }\n else if (target.classList.contains(CLS_PREV_BUTTON)) {\n this.prev();\n }\n break;\n case 'end':\n slideIndex = this.slideItems.length - 1;\n direction = 'Next';\n isSlideTransition = true;\n break;\n case 'home':\n slideIndex = 0;\n direction = 'Previous';\n isSlideTransition = true;\n break;\n case 'moveUp':\n case 'moveLeft':\n case 'moveDown':\n case 'moveRight':\n if (this.showIndicators && isNullOrUndefined(this.indicatorsTemplate)) {\n this.element.focus();\n }\n direction = (e.action === 'moveUp' || e.action === 'moveLeft') ? 'Previous' : 'Next';\n slideIndex = this.getSlideIndex(direction);\n isSlideTransition = !this.isSuspendSlideTransition(slideIndex, direction);\n break;\n }\n if (isSlideTransition) {\n this.setActiveSlide(slideIndex, direction);\n this.autoSlide();\n isSlideTransition = false;\n }\n };\n Carousel.prototype.swipeHandler = function (e) {\n if (this.element.classList.contains(CLS_HOVER) || isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n var direction = (e.swipeDirection === 'Right') ? 'Previous' : 'Next';\n var slideIndex = this.getSlideIndex(direction);\n if (!this.isSuspendSlideTransition(slideIndex, direction)) {\n this.setActiveSlide(slideIndex, direction, true);\n this.autoSlide();\n }\n };\n Carousel.prototype.isSuspendSlideTransition = function (index, direction) {\n return !this.loop && (direction === 'Next' && index === 0 || direction === 'Previous' && index === this.slideItems.length - 1);\n };\n Carousel.prototype.handleNavigatorsActions = function (index) {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n if (this.showPlayButton) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var isButtonUpdate = isNullOrUndefined(this.playButtonTemplate) && playButton && isLastSlide;\n if (isNullOrUndefined(this.playButtonTemplate) && playButton && !isLastSlide) {\n isButtonUpdate = !playButton.classList.contains(CLS_ACTIVE);\n }\n if (isButtonUpdate) {\n this.setProperties({ autoPlay: !isLastSlide }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n var buttonObj = getInstance(playButton, Button);\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n }\n }\n var prevButton = this.element.querySelector(\".\" + CLS_PREV_BUTTON);\n if (prevButton && isNullOrUndefined(this.previousButtonTemplate)) {\n var buttonObj = getInstance(prevButton, Button);\n buttonObj.disabled = !this.loop && index === 0;\n buttonObj.dataBind();\n }\n var nextButton = this.element.querySelector(\".\" + CLS_NEXT_BUTTON);\n if (nextButton && isNullOrUndefined(this.nextButtonTemplate)) {\n var buttonObj = getInstance(nextButton, Button);\n buttonObj.disabled = !this.loop && index === this.slideItems.length - 1;\n buttonObj.dataBind();\n }\n };\n Carousel.prototype.onHoverActions = function (e) {\n var navigator = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n switch (e.type) {\n case 'mouseenter':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n removeClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n if (this.pauseOnHover) {\n addClass([this.element], CLS_HOVER);\n }\n break;\n case 'mouseleave':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n addClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.onFocusActions = function (e) {\n switch (e.type) {\n case 'focusin':\n addClass([this.element], CLS_HOVER);\n break;\n case 'focusout':\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.destroyButtons = function () {\n var buttonCollections = [].slice.call(this.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = getInstance(button, Button);\n if (instance) {\n instance.destroy();\n }\n }\n };\n Carousel.prototype.getNumOfItems = function () {\n return this.partialVisible ? 2 : 1;\n };\n Carousel.prototype.getTranslateValue = function (element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n };\n Carousel.prototype.swipeStart = function (e) {\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n this.isSwipe = false;\n this.itemsContainer.classList.add('e-swipe-start');\n this.prevPageX = e.touches ? e.touches[0].pageX : e.pageX;\n this.initialTranslate = this.getTranslateValue(this.itemsContainer);\n };\n Carousel.prototype.swiping = function (e) {\n if (!this.itemsContainer.classList.contains('e-swipe-start')) {\n return;\n }\n e.preventDefault();\n var pageX = e.touches ? e.touches[0].pageX : e.pageX;\n var positionDiff = this.prevPageX - (pageX);\n if (!this.loop && ((this.enableRtl && ((this.selectedIndex === 0 && positionDiff > 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff < 0))) ||\n (!this.enableRtl && ((this.selectedIndex === 0 && positionDiff < 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff > 0))))) {\n return;\n }\n this.itemsContainer.style.transform = \"translateX(\" + (this.initialTranslate + (this.enableRtl ? positionDiff : -positionDiff)) + \"px)\";\n };\n Carousel.prototype.swipStop = function () {\n this.isSwipe = true;\n var time = Date.now() - this.timeStampStart;\n var distanceX = this.getTranslateValue(this.itemsContainer) - this.initialTranslate;\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX;\n if (this.isSwipe) {\n var offsetDist = distanceX * (Browser.isDevice ? 6 : 1.66);\n this.itemsContainer.style.transitionDuration = (((Browser.isDevice ? distanceX : offsetDist) / time) / 10) + 's';\n }\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n var threshold = slideWidth / 2;\n this.itemsContainer.classList.remove('e-swipe-start');\n var value = this.getTranslateValue(this.itemsContainer);\n if (value - this.initialTranslate < -threshold) {\n this.swipeNavigation(!this.enableRtl);\n }\n else if (value - this.initialTranslate > threshold) {\n this.swipeNavigation(this.enableRtl);\n }\n else {\n this.itemsContainer.style.transform = \"translateX(\" + this.initialTranslate + \"px)\";\n if (this.animationEffect === 'Fade') {\n this.itemsContainer.classList.add('e-fade-in-out');\n }\n }\n };\n Carousel.prototype.swipeNavigation = function (isRtl) {\n if (isRtl) {\n this.next();\n }\n else {\n this.prev();\n }\n };\n Carousel.prototype.swipeModehandlers = function () {\n if ((this.swipeMode & CarouselSwipeMode.Touch) === CarouselSwipeMode.Touch) {\n EventHandler.add(this.itemsContainer, 'touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'touchend', this.swipStop, this);\n }\n if ((this.swipeMode & CarouselSwipeMode.Mouse) === CarouselSwipeMode.Mouse) {\n EventHandler.add(this.itemsContainer, 'mousedown', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup', this.swipStop, this);\n }\n if ((this.swipeMode === 0) && (this.swipeMode & CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch) ===\n (CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch)) {\n EventHandler.add(this.itemsContainer, 'mousedown touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup touchend', this.swipStop, this);\n }\n };\n Carousel.prototype.resizeHandler = function () {\n if (this.itemsContainer && this.itemsContainer.firstElementChild) {\n var numOfItems = this.getNumOfItems();\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n if (this.loop) {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + numOfItems);\n }\n else {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex);\n }\n }\n };\n Carousel.prototype.wireEvents = function () {\n if (!(this.animationEffect === 'Custom')) {\n this.swipeModehandlers();\n }\n EventHandler.add(this.element, 'focusin focusout', this.onFocusActions, this);\n EventHandler.add(this.element, 'mouseenter mouseleave', this.onHoverActions, this);\n EventHandler.add(this.element.firstElementChild, 'animationend', this.onTransitionEnd, this);\n EventHandler.add(this.element.firstElementChild, 'transitionend', this.onTransitionEnd, this);\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Carousel.prototype.unWireEvents = function () {\n var _this = this;\n var indicators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n indicators.forEach(function (indicator) {\n EventHandler.remove(indicator, 'click', _this.indicatorClickHandler);\n });\n var navigators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREVIOUS + \",.\" + CLS_NEXT));\n navigators.forEach(function (navigator) {\n EventHandler.remove(navigator, 'click', _this.navigatorClickHandler);\n });\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (playIcon) {\n EventHandler.remove(playIcon, 'click', this.playButtonClickHandler);\n }\n EventHandler.remove(this.element.firstElementChild, 'animationend', this.onTransitionEnd);\n EventHandler.remove(this.element.firstElementChild, 'transitionend', this.onTransitionEnd);\n EventHandler.clearEvents(this.element);\n EventHandler.clearEvents(this.itemsContainer);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n /**\n * Method to transit from the current slide to the previous slide.\n *\n * @returns {void}\n */\n Carousel.prototype.prev = function () {\n if (!this.loop && this.selectedIndex === 0) {\n return;\n }\n var index = (this.selectedIndex === 0) ? this.slideItems.length - 1 : this.selectedIndex - 1;\n this.setActiveSlide(index, 'Previous');\n this.autoSlide();\n };\n /**\n * Method to transit from the current slide to the next slide.\n *\n * @returns {void}\n */\n Carousel.prototype.next = function () {\n if (!this.loop && this.selectedIndex === this.slideItems.length - 1) {\n return;\n }\n var index = (this.selectedIndex === this.slideItems.length - 1) ? 0 : this.selectedIndex + 1;\n this.setActiveSlide(index, 'Next');\n this.autoSlide();\n };\n /**\n * Method to play the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.play = function () {\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_ICON);\n if (this.showPlayButton && playIcon) {\n classList(playIcon, [CLS_PAUSE_ICON], [CLS_PLAY_ICON]);\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('pauseSlideTransition'));\n }\n this.setProperties({ autoPlay: true }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.applySlideInterval();\n };\n /**\n * Method to pause the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.pause = function () {\n var pauseIcon = this.element.querySelector(\".\" + CLS_PAUSE_ICON);\n if (this.showPlayButton && pauseIcon) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n classList(pauseIcon, [CLS_PLAY_ICON], [CLS_PAUSE_ICON]);\n }\n this.setProperties({ autoPlay: false }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.resetSlideInterval();\n };\n /**\n * Method to render react and angular templates\n *\n * @returns {void}\n * @private\n */\n Carousel.prototype.renderTemplates = function () {\n if (this.isAngular || this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react and angular templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Carousel.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * Method for destroy the carousel component.\n *\n * @returns {void}\n */\n Carousel.prototype.destroy = function () {\n var _this = this;\n this.resetTemplates();\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n this.keyModule.destroy();\n this.keyModule = null;\n this.resetSlideInterval();\n this.destroyButtons();\n this.unWireEvents();\n [].slice.call(this.element.children).forEach(function (ele) { _this.element.removeChild(ele); });\n removeClass([this.element], [CLS_CAROUSEL, this.cssClass, CLS_RTL, CLS_SWIPE]);\n ['role', 'style'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n this.itemsContainer = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Collection([], CarouselItem)\n ], Carousel.prototype, \"items\", void 0);\n __decorate([\n Property('Slide')\n ], Carousel.prototype, \"animationEffect\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"previousButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"nextButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"indicatorsTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"playButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], Carousel.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(0)\n ], Carousel.prototype, \"selectedIndex\", void 0);\n __decorate([\n Property('100%')\n ], Carousel.prototype, \"width\", void 0);\n __decorate([\n Property('100%')\n ], Carousel.prototype, \"height\", void 0);\n __decorate([\n Property(5000)\n ], Carousel.prototype, \"interval\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"autoPlay\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"pauseOnHover\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"loop\", void 0);\n __decorate([\n Property(false)\n ], Carousel.prototype, \"showPlayButton\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"enableTouchSwipe\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"showIndicators\", void 0);\n __decorate([\n Property('Default')\n ], Carousel.prototype, \"indicatorsType\", void 0);\n __decorate([\n Property('Visible')\n ], Carousel.prototype, \"buttonsVisibility\", void 0);\n __decorate([\n Property(false)\n ], Carousel.prototype, \"partialVisible\", void 0);\n __decorate([\n Property(CarouselSwipeMode.Touch)\n ], Carousel.prototype, \"swipeMode\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Carousel.prototype, \"slideChanging\", void 0);\n __decorate([\n Event()\n ], Carousel.prototype, \"slideChanged\", void 0);\n Carousel = __decorate([\n NotifyPropertyChanges\n ], Carousel);\n return Carousel;\n}(Component));\nexport { Carousel };\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 { Component, NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n// Constant variables\nvar CLS_APPBAR = 'e-appbar';\nvar CLS_HORIZONTAL_BOTTOM = 'e-horizontal-bottom';\nvar CLS_STICKY = 'e-sticky';\nvar CLS_PROMINENT = 'e-prominent';\nvar CLS_DENSE = 'e-dense';\nvar CLS_RTL = 'e-rtl';\nvar CLS_LIGHT = 'e-light';\nvar CLS_DARK = 'e-dark';\nvar CLS_PRIMARY = 'e-primary';\nvar CLS_INHERIT = 'e-inherit';\n/**\n * The AppBar displays the information and actions related to the current application screen. It is used to show branding, screen titles, navigation, and actions.\n * Support to inherit colors from AppBar provided to
Button,
DropDownButton,
Menu and
TextBox.\n * Set
CssClass property with
e-inherit
CSS class to inherit the background and color from AppBar.\n */\nvar AppBar = /** @class */ (function (_super) {\n __extends(AppBar, _super);\n /**\n * Constructor for creating the AppBar widget\n *\n * @param {AppBarModel} options Accepts the AppBar model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function AppBar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n AppBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove(CLS_APPBAR);\n this.element.removeAttribute('style');\n this.element.removeAttribute('role');\n };\n AppBar.prototype.getModuleName = function () {\n return 'appbar';\n };\n AppBar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n AppBar.prototype.preRender = function () {\n // pre render code\n };\n AppBar.prototype.render = function () {\n this.element.classList.add(CLS_APPBAR);\n if (this.element.tagName !== 'HEADER') {\n this.element.setAttribute('role', 'banner');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.position === 'Bottom') {\n this.element.classList.add(CLS_HORIZONTAL_BOTTOM);\n }\n if (this.isSticky) {\n this.element.classList.add(CLS_STICKY);\n }\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n this.setHeightMode();\n this.setColorMode();\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n AppBar.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 'mode':\n removeClass([this.element], [CLS_DENSE, CLS_PROMINENT]);\n this.setHeightMode();\n break;\n case 'position':\n if (this.position === 'Bottom') {\n addClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n else {\n removeClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'isSticky':\n if (this.isSticky) {\n addClass([this.element], CLS_STICKY);\n }\n else {\n removeClass([this.element], CLS_STICKY);\n }\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n if (!isNullOrUndefined(oldProp.htmlAttributes)) {\n var keys = Object.keys(oldProp.htmlAttributes);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n if (key === 'class') {\n removeClass([this.element], oldProp.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n }\n this.setHtmlAttributes(newProp.htmlAttributes, this.element);\n }\n break;\n case 'colorMode':\n removeClass([this.element], [CLS_DARK, CLS_PRIMARY, CLS_INHERIT, CLS_LIGHT]);\n this.setColorMode();\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL);\n }\n else {\n removeClass([this.element], CLS_RTL);\n }\n break;\n }\n }\n };\n AppBar.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n AppBar.prototype.setHeightMode = function () {\n if (this.mode === 'Prominent') {\n this.element.classList.add(CLS_PROMINENT);\n }\n else if (this.mode === 'Dense') {\n this.element.classList.add(CLS_DENSE);\n }\n };\n AppBar.prototype.setColorMode = function () {\n switch (this.colorMode) {\n case 'Light':\n this.element.classList.add(CLS_LIGHT);\n break;\n case 'Dark':\n this.element.classList.add(CLS_DARK);\n break;\n case 'Primary':\n this.element.classList.add(CLS_PRIMARY);\n break;\n case 'Inherit':\n this.element.classList.add(CLS_INHERIT);\n break;\n }\n };\n __decorate([\n Property('Regular')\n ], AppBar.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], AppBar.prototype, \"position\", void 0);\n __decorate([\n Property()\n ], AppBar.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], AppBar.prototype, \"isSticky\", void 0);\n __decorate([\n Property()\n ], AppBar.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Light')\n ], AppBar.prototype, \"colorMode\", void 0);\n __decorate([\n Event()\n ], AppBar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], AppBar.prototype, \"destroyed\", void 0);\n AppBar = __decorate([\n NotifyPropertyChanges\n ], AppBar);\n return AppBar;\n}(Component));\nexport { AppBar };\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 { Component, NotifyPropertyChanges, Property, ChildProperty, Collection, Event, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar PROGRESSVALUE = '--progress-value';\n/**\n * Defines the status of the step.\n */\nexport var StepStatus;\n(function (StepStatus) {\n /**\n * Shows the status of the step is not started.\n */\n StepStatus[\"NotStarted\"] = \"NotStarted\";\n /**\n * Shows the step is in progress.\n */\n StepStatus[\"InProgress\"] = \"InProgress\";\n /**\n * Shows the status of the step is completed.\n */\n StepStatus[\"Completed\"] = \"Completed\";\n})(StepStatus || (StepStatus = {}));\n/**\n * Specifies the steps of the Stepper.\n */\nvar Step = /** @class */ (function (_super) {\n __extends(Step, _super);\n function Step() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Step.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"iconCss\", void 0);\n __decorate([\n Property(null)\n ], Step.prototype, \"isValid\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"label\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"optional\", void 0);\n __decorate([\n Property(StepStatus.NotStarted)\n ], Step.prototype, \"status\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"text\", void 0);\n return Step;\n}(ChildProperty));\nexport { Step };\n/**\n * Defines the orientation type of the Stepper.\n */\nexport var StepperOrientation;\n(function (StepperOrientation) {\n /**\n * Steps are displayed horizontally.\n */\n StepperOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Steps are displayed vertically.\n */\n StepperOrientation[\"Vertical\"] = \"Vertical\";\n})(StepperOrientation || (StepperOrientation = {}));\n/**\n * StepperBase component act as base class to the stepper component.\n */\nvar StepperBase = /** @class */ (function (_super) {\n __extends(StepperBase, _super);\n /**\n * * Constructor for Base class\n *\n * @param {StepperBaseModel} options - Specifies the Base model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function StepperBase(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * This method is abstract member of the Component
.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.preRender = function () {\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the current module name.\n */\n StepperBase.prototype.getModuleName = function () {\n return 'stepperBase';\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n StepperBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.render = function () {\n };\n StepperBase.prototype.updateOrientaion = function (wrapper) {\n if (wrapper.classList.contains('e-horizontal') || wrapper.classList.contains('e-vertical')) {\n wrapper.classList.remove('e-horizontal', 'e-vertical');\n }\n if (!(isNullOrUndefined(this.orientation))) {\n wrapper.classList.add('e-' + this.orientation.toLocaleLowerCase());\n }\n };\n StepperBase.prototype.renderProgressBar = function (wrapper) {\n this.progressStep = this.createElement('div', { className: 'e-stepper-progressbar' });\n this.progressbar = this.createElement('div', { className: 'e-progressbar-value' });\n this.progressStep.appendChild(this.progressbar);\n wrapper.prepend(this.progressStep);\n this.progressbar.style.setProperty(PROGRESSVALUE, (0) + '%');\n var beforeLabel = (wrapper.querySelector('li').querySelector('.e-step-label-container'));\n if (wrapper.classList.contains('e-vertical')) {\n if (wrapper.classList.contains('e-label-bottom') || wrapper.classList.contains('e-label-top')) {\n var stepsContainer = (wrapper.querySelector('.e-stepper-steps'));\n this.progressStep.style.setProperty('--progress-position', (stepsContainer.offsetWidth / 2) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-position', ((this.progressBarPosition / 2) - 1) + 'px');\n }\n }\n if (beforeLabel && (beforeLabel.classList.contains('e-label-before'))) {\n this.progressStep.style.setProperty('--progress-position', (((this.progressBarPosition) - 1)) + 5 + 'px');\n }\n if (wrapper.classList.contains('e-horizontal')) {\n this.setProgressPosition(wrapper);\n }\n };\n StepperBase.prototype.setProgressPosition = function (wrapper, isResize) {\n var stepItemContainer = (wrapper.querySelector('.e-step-container'));\n var stepItemEle = stepItemContainer.firstElementChild;\n if (isResize !== true) {\n var topPos = 0;\n if (wrapper.classList.contains('e-label-before')) {\n topPos = (stepItemContainer.offsetParent.offsetHeight - (stepItemEle.offsetHeight / 2) - 1);\n }\n else {\n topPos = (stepItemEle.offsetHeight / 2);\n }\n this.progressStep.style.setProperty('--progress-top-position', topPos + 'px');\n }\n var lastEle = wrapper.querySelector('.e-stepper-steps').lastChild.firstChild;\n if (wrapper.classList.contains('e-rtl')) {\n var leftPost = ((stepItemEle.offsetLeft + stepItemEle.offsetWidth) - wrapper.querySelector('.e-stepper-steps').offsetWidth);\n this.progressStep.style.setProperty('--progress-left-position', Math.abs(leftPost) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', Math.abs(lastEle.offsetLeft - stepItemEle.offsetLeft) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-left-position', (stepItemEle.offsetLeft + 1) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', ((lastEle.offsetWidth + lastEle.offsetLeft - 2) - (stepItemEle.offsetLeft + 2)) + 'px');\n }\n };\n /**\n * This method is abstract member of the Component.\n *\n * @param {StepperBaseModel} newProp - Specifies new properties\n * @param {StepperBaseModel} oldProp - Specifies old properties\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n StepperBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n };\n __decorate([\n Collection([], Step)\n ], StepperBase.prototype, \"steps\", void 0);\n __decorate([\n Property('')\n ], StepperBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], StepperBase.prototype, \"readOnly\", void 0);\n __decorate([\n Property(StepperOrientation.Horizontal)\n ], StepperBase.prototype, \"orientation\", void 0);\n __decorate([\n Event()\n ], StepperBase.prototype, \"created\", void 0);\n StepperBase = __decorate([\n NotifyPropertyChanges\n ], StepperBase);\n return StepperBase;\n}(Component));\nexport { StepperBase };\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-next-line @typescript-eslint/triple-slash-reference\n///\nimport { attributes, NotifyPropertyChanges, L10n, append, isNullOrUndefined, getUniqueID, Complex, KeyboardEvents, ChildProperty, Property, EventHandler, Event, addClass, remove, removeClass, initializeCSPTemplate, select, compile } from '@syncfusion/ej2-base';\nimport { StepperBase, StepStatus } from '../stepper-base/stepper-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nvar ITEMCONTAINER = 'e-step-container';\nvar ITEMLIST = 'e-stepper-steps';\nvar ICONCSS = 'e-indicator';\nvar TEXTCSS = 'e-step-text-container';\nvar STEPLABEL = 'e-step-label-container';\nvar OPTIONAL = 'e-step-label-optional';\nvar SELECTED = 'e-step-selected';\nvar INPROGRESS = 'e-step-inprogress';\nvar NOTSTARTED = 'e-step-notstarted';\nvar FOCUS = 'e-step-focus';\nvar COMPLETED = 'e-step-completed';\nvar DISABLED = 'e-step-disabled';\nvar READONLY = 'e-stepper-readonly';\nvar PROGRESSVALUE = '--progress-value';\nvar RTL = 'e-rtl';\nvar TEMPLATE = 'e-step-template';\nvar LABELAFTER = 'e-label-after';\nvar LABELBEFORE = 'e-label-before';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar STEPICON = 'e-step-item';\nvar STEPTEXT = 'e-step-text';\nvar TEXT = 'e-text';\nvar STEPSLABEL = 'e-step-label';\nvar LABEL = 'e-label';\nvar STEPINDICATOR = 'e-step-type-indicator';\nvar LABELINDICATOR = 'e-step-type-label';\nvar INDICATORICON = 'e-step-indicator';\nvar STEPPERTOOLTIP = 'e-stepper-tooltip';\nvar STEPPERIPROGRESSTIP = 'e-step-inprogress-tip';\n/**\n * Defines the step progress animation of the Stepper.\n */\nvar StepperAnimationSettings = /** @class */ (function (_super) {\n __extends(StepperAnimationSettings, _super);\n function StepperAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StepperAnimationSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(2000)\n ], StepperAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], StepperAnimationSettings.prototype, \"delay\", void 0);\n return StepperAnimationSettings;\n}(ChildProperty));\nexport { StepperAnimationSettings };\n/**\n * Defines the label position in the Stepper.\n */\nexport var StepLabelPosition;\n(function (StepLabelPosition) {\n /**\n * Displays the label on top position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Top\"] = \"Top\";\n /**\n * Displays the label on bottom position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * Displays the label on left side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Start\"] = \"Start\";\n /**\n * Displays the label on right side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"End\"] = \"End\";\n})(StepLabelPosition || (StepLabelPosition = {}));\n/**\n * Defines whether steps are display with only indicator, only labels or combination of both.\n */\nexport var StepType;\n(function (StepType) {\n /**\n * Steps are shown indicator with label defined.\n */\n StepType[\"Default\"] = \"Default\";\n /**\n * Steps are shown with only label.\n */\n StepType[\"Label\"] = \"Label\";\n /**\n * Steps are shown with only indicator.\n */\n StepType[\"Indicator\"] = \"Indicator\";\n})(StepType || (StepType = {}));\n/**\n * The Stepper component visualizes several steps and indicates the current progress by highlighting already completed steps.\n *\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Stepper = /** @class */ (function (_super) {\n __extends(Stepper, _super);\n /**\n * * Constructor for creating the Stepper component.\n *\n * @param {StepperModel} options - Specifies the Stepper model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Stepper(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.stepperItemElements = [];\n return _this;\n }\n Stepper.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n var localeText = { optional: 'Optional' };\n this.l10n = new L10n('stepper', localeText, this.locale);\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space',\n enter: 'enter',\n home: 'home',\n end: 'end',\n tab: 'tab',\n shiftTab: 'shift+tab',\n escape: 'escape'\n };\n this.tooltipOpen = false;\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Stepper.prototype.getModuleName = function () {\n return 'stepper';\n };\n Stepper.prototype.render = function () {\n this.initialize();\n this.navigationHandler(this.activeStep, null, false);\n this.updateStepperStatus(true);\n };\n Stepper.prototype.initialize = function () {\n var _this = this;\n this.element.setAttribute('aria-label', this.element.id);\n this.updatePosition();\n this.stepperItemList = this.createElement('ol', { className: ITEMLIST });\n this.updateOrientaion(this.element);\n this.updateStepType();\n this.element.appendChild(this.stepperItemList);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.trim().split(' '));\n }\n if (this.readOnly) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n this.wireEvents();\n this.updateTemplateFunction();\n this.renderItems();\n if (this.steps.length > 0) {\n if (this.steps.length > 1) {\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.renderProgressBar(_this.element);\n });\n }\n else {\n this.renderProgressBar(this.element);\n }\n }\n this.checkValidStep();\n this.updateAnimation();\n this.updateTooltip();\n this.wireKeyboardEvent();\n }\n };\n Stepper.prototype.updatePosition = function () {\n this.progressBarPosition = this.beforeLabelWidth = this.textEleWidth = 0;\n };\n Stepper.prototype.renderDefault = function (index) {\n return (!this.steps[parseInt((index).toString(), 10)].iconCss && !this.steps[parseInt((index).toString(), 10)].text &&\n !this.steps[parseInt((index).toString(), 10)].label) ? true : false;\n };\n Stepper.prototype.updateAnimation = function () {\n var progressEle = this.element.querySelector('.e-progressbar-value');\n if (this.animation.enable) {\n if (this.animation.duration >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--duration', ((this.animation.duration) + 'ms'));\n }\n }\n if (this.animation.delay >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--delay', ((this.animation.delay) + 'ms'));\n }\n }\n }\n else {\n if (progressEle) {\n progressEle.style.setProperty('--delay', (0 + 'ms'));\n progressEle.style.setProperty('--duration', (0 + 'ms'));\n }\n }\n };\n Stepper.prototype.updateStepType = function () {\n if (!(isNullOrUndefined(this.stepType)) && (this.stepType.toLowerCase() === 'indicator' || this.stepType.toLowerCase() === 'label' || this.stepType.toLowerCase() === 'default')) {\n if (this.stepType.toLowerCase() !== 'default') {\n this.element.classList.add('e-step-type-' + this.stepType.toLowerCase());\n }\n if (((this.stepType.toLowerCase() === 'indicator' || 'label') && (this.labelContainer))) {\n this.clearLabelPosition();\n }\n }\n };\n Stepper.prototype.wireEvents = function () {\n var _this = this;\n EventHandler.add(window, 'resize', function () {\n if (_this.stepperItemList && _this.progressbar && _this.element.classList.contains(HORIZSTEP)) {\n _this.setProgressPosition(_this.element, true);\n }\n }, this);\n EventHandler.add(window, 'click', function () { _this.updateStepFocus(); }, this);\n };\n Stepper.prototype.updateStepFocus = function () {\n if (this.isKeyNavFocus) {\n this.isKeyNavFocus = false;\n var isFocus = this.element.querySelector('.' + FOCUS);\n if (isFocus) {\n isFocus.classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n }\n };\n Stepper.prototype.updateStepperStatus = function (isInitial) {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var status_1 = item.status.toLowerCase();\n if (isInitial && this.activeStep === 0 && index === 0) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.status = StepStatus.InProgress;\n this.isProtectedOnChange = prevOnChange;\n }\n if (item && status_1 !== 'notstarted' && index === this.activeStep) {\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (status_1 === 'completed') {\n this.updateStatusClass(i, index, itemElement);\n }\n else {\n this.updateStatusClass(i, index, itemElement, true);\n }\n this.isProtectedOnChange = prevOnChange;\n }\n }\n else if (item && status_1 !== 'notstarted' && index !== this.activeStep) {\n this.navigationHandler(this.activeStep, null, true);\n }\n }\n };\n Stepper.prototype.updateStatusClass = function (currentStep, index, ele, isInprogress) {\n var stepItem = this.steps[parseInt(currentStep.toString(), 10)];\n if (currentStep < index) {\n ele.classList.add(COMPLETED);\n stepItem.status = StepStatus.Completed;\n }\n else if (currentStep === index) {\n ele.classList.add(isInprogress ? INPROGRESS : COMPLETED, SELECTED);\n }\n else {\n ele.classList.add(NOTSTARTED);\n }\n };\n Stepper.prototype.renderItems = function () {\n var _this = this;\n for (var index = 0; index < this.steps.length; index++) {\n this.stepperItemContainer = this.createElement('li', { className: ITEMCONTAINER });\n this.stepperItemContainer.classList[(index === 0) ? 'add' : 'remove'](SELECTED, INPROGRESS);\n this.stepperItemContainer.classList[(index !== 0) ? 'add' : 'remove'](NOTSTARTED);\n if (this.element.classList.contains(HORIZSTEP)) {\n this.stepperItemContainer.style.setProperty('--max-width', 100 / this.steps.length + '%');\n }\n var stepSpan = this.createElement('span', { className: 'e-step' });\n var item = this.steps[parseInt(index.toString(), 10)];\n if (this.renderDefault(index) && (isNullOrUndefined(this.template) || this.template === '')) {\n var isIndicator = (!this.element.classList.contains('e-step-type-default') && this.stepType.toLowerCase() === 'indicator') ? true : false;\n if (isIndicator) {\n stepSpan.classList.add('e-icons', INDICATORICON);\n }\n if (!isIndicator && item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n stepSpan.innerHTML = (index + 1).toString();\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else if (isNullOrUndefined(this.template) || this.template === '') {\n var isRender = true;\n if ((item.iconCss || (!item.iconCss && item.text && item.label)) && (((!item.text && !item.label) ||\n !this.element.classList.contains(LABELINDICATOR)))) {\n if (item.iconCss) {\n var itemIcon = item.iconCss.trim().split(' ');\n stepSpan.classList.add(ICONCSS);\n for (var i = 0; i < itemIcon.length; i++) {\n stepSpan.classList.add(itemIcon[parseInt(i.toString(), 10)]);\n }\n this.stepperItemContainer.classList.add(STEPICON);\n }\n else if (!item.iconCss && item.text && item.label) {\n stepSpan.classList.add(ICONCSS);\n stepSpan.innerHTML = item.text;\n this.stepperItemContainer.classList.add(STEPICON);\n }\n this.stepperItemContainer.appendChild(stepSpan);\n if ((this.element.classList.contains(HORIZSTEP) && (this.labelPosition.toLowerCase() === 'start' || this.labelPosition.toLowerCase() === 'end') && item.label) ||\n (this.element.classList.contains(VERTICALSTEP) && (this.labelPosition.toLowerCase() === 'top' || this.labelPosition.toLowerCase() === 'bottom') && item.label)) {\n this.element.classList.add('e-label-' + this.labelPosition.toLowerCase());\n var textSpan = this.createElement('span', { className: TEXTCSS + ' ' + TEXT });\n textSpan.innerText = item.label;\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n isRender = false;\n }\n }\n if (item.text && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender &&\n !(item.iconCss && item.label)) {\n if ((!item.iconCss && this.element.classList.contains(STEPINDICATOR)) ||\n ((!item.iconCss || this.element.classList.contains(LABELINDICATOR)) && !item.label)) {\n if (!item.iconCss && !item.label) {\n this.element.classList.add('e-step-type-indicator');\n }\n this.checkValidState(item, stepSpan);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.label = null;\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n var textSpan = this.createElement('span', { className: TEXT });\n if (!item.label) {\n textSpan.innerText = item.text;\n textSpan.classList.add(TEXTCSS);\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n }\n if (item.label && this.element.classList.contains(LABELINDICATOR)) {\n textSpan.innerText = item.label;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.text = item.label ? null : item.text;\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (item.label && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender) {\n if (!item.iconCss && !item.text && this.element.classList.contains(STEPINDICATOR)) {\n this.checkValidState(item, stepSpan, true);\n }\n else if ((!((this.element.classList.contains(LABELINDICATOR)) && item.text)) ||\n (this.element.classList.contains(LABELINDICATOR) && item.label)) {\n this.labelContainer = this.createElement('span', { className: STEPLABEL });\n var labelSpan = this.createElement('span', { className: LABEL });\n labelSpan.innerText = item.label;\n this.labelContainer.appendChild(labelSpan);\n this.stepperItemContainer.classList.add(STEPSLABEL);\n this.updateLabelPosition();\n if ((!item.iconCss && !item.text && !this.stepperItemContainer.classList.contains(STEPICON)) ||\n this.element.classList.contains(LABELINDICATOR)) {\n this.stepperItemContainer.classList.add('e-step-label-only');\n if (item.isValid !== null) {\n var iconSpan = this.createElement('span', { className: 'e-step-validation-icon e-icons' });\n this.labelContainer.appendChild(iconSpan);\n }\n }\n }\n }\n }\n if (item.optional) {\n var optionalSpan = this.createElement('span', { className: OPTIONAL });\n this.l10n.setLocale(this.locale);\n var optionalContent = this.l10n.getConstant('optional');\n optionalSpan.innerText = optionalContent;\n if (item.label && (this.labelContainer && ((this.element.classList.contains(LABELAFTER) && !this.stepperItemContainer.classList.contains('e-step-label-only'))\n || (this.element.classList.contains(HORIZSTEP) && this.element.classList.contains(LABELBEFORE) && !this.stepperItemContainer.classList.contains('e-step-label-only'))))\n || (this.element.classList.contains(VERTICALSTEP) && this.element.classList.contains(LABELBEFORE))) {\n this.labelContainer.appendChild(optionalSpan);\n }\n else {\n this.stepperItemContainer.appendChild(optionalSpan);\n }\n if (item.isValid !== null) {\n this.stepperItemContainer.classList.add(item.isValid ? 'e-step-valid' : 'e-step-error');\n }\n }\n if (item.cssClass) {\n addClass([this.stepperItemContainer], item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n this.stepperItemContainer.classList[item.disabled ? 'add' : 'remove'](DISABLED);\n attributes(this.stepperItemContainer, { 'tabindex': '-1', 'aria-disabled': 'true' });\n }\n if (item.isValid !== null) {\n if (item.isValid) {\n this.stepperItemContainer.classList.add('e-step-valid');\n }\n else {\n this.stepperItemContainer.classList.add('e-step-error');\n }\n }\n this.renderItemContent(index, false);\n if (this.stepperItemContainer.classList.contains(INPROGRESS)) {\n attributes(this.stepperItemContainer, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(this.stepperItemContainer, { 'tabindex': '-1' });\n }\n this.wireItemsEvents(this.stepperItemContainer, index);\n this.stepperItemElements.push(this.stepperItemContainer);\n var eventArgs = { element: this.stepperItemContainer, index: index };\n this.trigger('beforeStepRender', eventArgs, function (args) {\n _this.stepperItemList.appendChild(args.element);\n });\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.calculateProgressBarPosition();\n });\n }\n else {\n this.calculateProgressBarPosition();\n }\n }\n if (this.element.classList.contains(VERTICALSTEP)) {\n if (this.element.classList.contains(LABELBEFORE)) {\n var listItems = this.stepperItemList.querySelectorAll('.' + LABEL);\n for (var i = 0; i < listItems.length; i++) {\n var labelEle = listItems[parseInt((i).toString(), 10)];\n labelEle.style.setProperty('--label-width', (this.beforeLabelWidth) + 5 + 'px');\n }\n }\n }\n };\n Stepper.prototype.calculateProgressBarPosition = function () {\n var isBeforeLabel = (this.element.classList.contains(LABELBEFORE)) ? true : false;\n var isStepVertical = (this.element.classList.contains(VERTICALSTEP)) ? true : false;\n if (isStepVertical) {\n var iconOnly = (this.stepperItemContainer.classList.contains(STEPICON) &&\n !this.stepperItemContainer.classList.contains(STEPTEXT) &&\n !this.stepperItemContainer.classList.contains(STEPSLABEL)) ? true : false;\n var textEle = (this.stepperItemContainer.querySelector('.' + TEXTCSS));\n if (textEle) {\n this.textEleWidth = this.textEleWidth < textEle.offsetWidth ? textEle.offsetWidth : this.textEleWidth;\n }\n if (isBeforeLabel) {\n var itemWidth = void 0;\n var labelWidth = this.stepperItemContainer.querySelector('.' + LABEL).offsetWidth + 15;\n if (this.beforeLabelWidth < labelWidth) {\n this.beforeLabelWidth = labelWidth;\n }\n if (this.element.querySelector('ol').lastChild.querySelector('.' + ICONCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + ICONCSS).offsetWidth / 2));\n }\n else if (this.stepperItemContainer.querySelector('.' + TEXTCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + TEXTCSS).offsetWidth / 2));\n }\n if (this.progressBarPosition < itemWidth) {\n this.progressBarPosition = itemWidth;\n }\n }\n else if (this.progressBarPosition < (iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth)) {\n this.progressBarPosition = iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth;\n }\n }\n };\n Stepper.prototype.checkValidState = function (item, stepSpan, isLabel) {\n if (item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n if (isLabel) {\n stepSpan.innerHTML = item.label;\n }\n else {\n stepSpan.innerHTML = item.label ? item.label : item.text;\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else {\n stepSpan.classList.add(ICONCSS);\n this.stepperItemContainer.appendChild(stepSpan);\n this.stepperItemContainer.classList.add(STEPICON);\n }\n };\n Stepper.prototype.updateCurrentLabel = function () {\n var currentLabelPos;\n if (this.element.classList.contains(HORIZSTEP)) {\n currentLabelPos = this.labelPosition.toLowerCase() === 'top' ? 'before' : this.labelPosition.toLowerCase() === 'bottom' ? 'after' : this.labelPosition.toLowerCase();\n }\n else {\n currentLabelPos = this.labelPosition.toLowerCase() === 'start' ? 'before' : this.labelPosition.toLowerCase() === 'end' ? 'after' : this.labelPosition.toLowerCase();\n }\n return currentLabelPos;\n };\n Stepper.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.labelContainer.classList.add('e-label-' + this.updateCurrentLabel());\n if (this.labelPosition.toLowerCase() === 'start' && this.orientation.toLowerCase() === 'vertical') {\n if (this.stepperItemContainer.firstChild) {\n this.stepperItemContainer.firstChild.before(this.labelContainer);\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n this.element.classList.add('e-label-' + this.updateCurrentLabel());\n };\n Stepper.prototype.clearLabelPosition = function () {\n var removeCss = this.labelContainer.classList.value.match(/(e-label-[after|before]+)/g);\n if (removeCss) {\n removeClass([this.labelContainer], removeCss);\n removeClass([this.element], removeCss);\n }\n };\n Stepper.prototype.checkValidStep = function () {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var itemElement = this.stepperItemElements[parseInt(index.toString(), 10)];\n if (item.isValid !== null) {\n var indicatorEle = void 0;\n var iconEle = void 0;\n if (this.element.classList.contains(STEPINDICATOR) && !item.iconCss) {\n indicatorEle = itemElement.querySelector('.' + ICONCSS);\n }\n else {\n iconEle = itemElement.querySelector('.' + ICONCSS);\n }\n if (!indicatorEle && this.element.classList.contains(STEPINDICATOR) && this.renderDefault(index)) {\n indicatorEle = itemElement.querySelector('.' + INDICATORICON);\n }\n var textLabelIcon = itemElement.querySelector('.e-step-validation-icon');\n var itemIcon = item.iconCss.trim().split(' ');\n var validStep = itemElement.classList.contains('e-step-valid');\n if (indicatorEle) {\n indicatorEle.classList.remove(INDICATORICON);\n if (indicatorEle.innerHTML !== '') {\n indicatorEle.innerHTML = '';\n }\n indicatorEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (this.renderDefault(index) && !this.element.classList.contains(STEPINDICATOR)) {\n var stepSpan = itemElement.querySelector('.e-step');\n stepSpan.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (iconEle) {\n if (iconEle.innerHTML !== '') {\n iconEle.innerHTML = '';\n }\n else if (itemIcon.length > 0) {\n for (var i = 0; i < itemIcon.length; i++) {\n iconEle.classList.remove(itemIcon[parseInt(i.toString(), 10)]);\n }\n }\n iconEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info');\n }\n if (textLabelIcon) {\n textLabelIcon.classList.add(validStep ? 'e-circle-check' : 'e-circle-info');\n if (this.element.classList.contains(VERTICALSTEP)) {\n var labelEle = itemElement.querySelector('.' + LABEL);\n var textEle = itemElement.querySelector('.' + TEXT);\n var itemWidth = textEle ? textEle.offsetWidth + textEle.getBoundingClientRect().left :\n labelEle.offsetWidth + labelEle.getBoundingClientRect().left;\n var validationIcon = itemElement.querySelector('.e-step-validation-icon');\n validationIcon.style.setProperty('--icon-position', (itemWidth + 20) + 'px');\n }\n }\n }\n }\n };\n Stepper.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-step-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP,\n position: 'TopCenter'\n });\n this.tooltipObj.appendTo(this.stepperItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Stepper.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) {\n if (_this.linear) {\n var linearModeValue = index - _this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n _this.stepClickHandler(index, e, itemElement);\n }\n }\n else {\n _this.stepClickHandler(index, e, itemElement);\n }\n }, this);\n EventHandler.add(itemElement, 'mouseover', function () { return _this.openStepperTooltip(index); }, this);\n EventHandler.add(itemElement, 'mouseleave', function () { return _this.closeStepperTooltip(); }, this);\n };\n Stepper.prototype.openStepperTooltip = function (index) {\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.showTooltip && (currentStep.label || currentStep.text)) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(index);\n this.tooltipObj.open(this.stepperItemElements[parseInt((index).toString(), 10)]);\n if (this.stepType.toLocaleLowerCase() !== 'label' && ((this.stepType.toLocaleLowerCase() === 'indicator') ||\n (currentStep.label !== '' && currentStep.iconCss !== '') || (currentStep.label === null && currentStep.iconCss === '' && currentStep.text !== ''))) {\n var tooltipPopupClass = currentStep.status.toLowerCase() === 'inprogress' ?\n STEPPERTOOLTIP + \" \" + STEPPERIPROGRESSTIP + \" \" + (this.cssClass ? this.cssClass : '') : STEPPERTOOLTIP + \" \" + (this.cssClass ? this.cssClass : '');\n this.tooltipObj.setProperties({ cssClass: tooltipPopupClass.trim() });\n }\n this.tooltipOpen = true;\n }\n }\n };\n Stepper.prototype.closeStepperTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Stepper.prototype.updateTooltipContent = function (index) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['stepperTooltipTemplate']);\n }\n var content = void 0;\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.tooltipTemplate) {\n content = this.createElement('span', { className: 'e-stepper-tooltip-content' });\n var templateFunction = this.getTemplateFunction(this.tooltipTemplate);\n append(templateFunction({ value: currentStep }, this, 'stepperTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content);\n this.tooltipObj.setProperties({ content: content }, true);\n }\n else {\n var content_1 = currentStep.label ? currentStep.label : currentStep.text;\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, true);\n }\n this.renderReactTemplates();\n }\n };\n Stepper.prototype.stepClickHandler = function (index, e, itemElement) {\n var clickEventArgs = {\n element: itemElement, event: e, previousStep: this.activeStep,\n activeStep: index\n };\n this.trigger('stepClick', clickEventArgs);\n this.navigateToStep(index, e, itemElement, true);\n };\n Stepper.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template) : null;\n };\n Stepper.prototype.renderItemContent = function (index, isrerender) {\n var listItems = this.stepperItemList.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n this.stepperItemContainer.classList.add(TEMPLATE);\n }\n var item = this.steps[parseInt(index.toString(), 10)];\n append(this.templateFunction({ step: item, currentStep: index }, this, 'stepperTemplate', (this.element.id + '_stepperTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : this.stepperItemContainer);\n }\n this.renderReactTemplates();\n };\n Stepper.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n Stepper.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['stepperTemplate']);\n }\n for (var i = 0; i < this.steps.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Stepper.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Stepper.prototype.navigateToStep = function (index, e, itemElement, isInteracted, isUpdated) {\n var _this = this;\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: this.activeStep, activeStep: index, cancel: false\n };\n if (isUpdated !== false) {\n var previousStep_1 = this.activeStep;\n this.trigger('stepChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.navigationHandler(index);\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: previousStep_1, activeStep: _this.activeStep\n };\n _this.trigger('stepChanged', eventArgs);\n });\n }\n else {\n this.navigationHandler(index);\n }\n };\n Stepper.prototype.navigationHandler = function (index, stepStatus, isUpdated) {\n index = (index >= this.steps.length - 1) ? this.steps.length - 1 : index;\n var Itemslength = this.stepperItemElements.length;\n if (index >= 0 && index < Itemslength - 1) {\n index = this.stepperItemElements[parseInt(index.toString(), 10)].classList.contains(DISABLED) ? this.activeStep : index;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.activeStep = parseInt(index.toString(), 10);\n this.isProtectedOnChange = prevOnChange;\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n var item = this.steps[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n if (i === this.activeStep) {\n itemElement.classList.add(SELECTED);\n }\n if (this.activeStep >= 0 && this.progressbar) {\n if (this.element.classList.contains(HORIZSTEP)) {\n if ((this.element.classList.contains(LABELBEFORE) || this.element.classList.contains(LABELAFTER)) &&\n !this.element.classList.contains(STEPINDICATOR) &&\n this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(STEPICON)) {\n var progressPos = this.element.querySelector('.e-stepper-progressbar');\n var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .firstChild;\n var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n if (this.element.classList.contains(RTL)) {\n value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n }\n else {\n var totalLiWidth = 0;\n var activeLiWidth = 0;\n for (var j = 0; j < this.stepperItemElements.length; j++) {\n totalLiWidth = totalLiWidth + this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n if (j <= this.activeStep) {\n if (j < this.activeStep) {\n activeLiWidth = activeLiWidth +\n this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n }\n else if (j === this.activeStep && j !== 0) {\n activeLiWidth = activeLiWidth +\n (this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth / 2);\n }\n }\n }\n var spaceWidth = (this.stepperItemList.offsetWidth - totalLiWidth) /\n (this.stepperItemElements.length - 1);\n var progressValue = ((activeLiWidth + (spaceWidth * this.activeStep)) /\n this.stepperItemList.offsetWidth) * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (progressValue) + '%');\n }\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, ((100 / (this.steps.length - 1)) * index) + '%');\n }\n }\n else if (this.activeStep < 0 && this.progressbar) {\n this.progressbar.style.setProperty(PROGRESSVALUE, 0 + '%');\n }\n if (i === this.activeStep) {\n itemElement.classList.add(INPROGRESS);\n }\n else if (this.activeStep > 0 && i < this.activeStep) {\n itemElement.classList.add(COMPLETED);\n }\n else {\n itemElement.classList.add(NOTSTARTED);\n }\n if (itemElement.classList.contains(INPROGRESS)) {\n attributes(itemElement, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(itemElement, { 'tabindex': '-1', 'aria-current': 'false' });\n }\n var prevOnChange_1 = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (isUpdated !== false) {\n if (i < this.activeStep || (this.steps.length - 1 === this.activeStep && item.status.toLowerCase() === 'completed')) {\n item.status = StepStatus.Completed;\n }\n else if (i === this.activeStep) {\n item.status = StepStatus.InProgress;\n }\n else if (i > this.activeStep) {\n item.status = StepStatus.NotStarted;\n }\n if (stepStatus && this.activeStep === i) {\n item.status = stepStatus;\n }\n if (item.status.toLowerCase() === 'completed') {\n itemElement.classList.remove(SELECTED, INPROGRESS, NOTSTARTED);\n itemElement.classList.add(COMPLETED);\n }\n if (item.status.toLowerCase() === 'notstarted') {\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED);\n itemElement.classList.add(NOTSTARTED);\n }\n }\n this.isProtectedOnChange = prevOnChange_1;\n if (this.renderDefault(i) && this.element.classList.contains(STEPINDICATOR) && !itemElement.classList.contains('e-step-valid') && !itemElement.classList.contains('e-step-error')) {\n if (itemElement.classList.contains(COMPLETED)) {\n itemElement.firstChild.classList.remove('e-icons', 'e-step-indicator');\n itemElement.firstChild.classList.add(ICONCSS, 'e-icons', 'e-check');\n }\n else if (itemElement.classList.contains(INPROGRESS) || itemElement.classList.contains(NOTSTARTED)) {\n itemElement.firstChild.classList.remove(ICONCSS, 'e-icons', 'e-check');\n itemElement.firstChild.classList.add('e-icons', 'e-step-indicator');\n }\n }\n }\n };\n Stepper.prototype.removeItemElements = function () {\n for (var i = 0; i < this.stepperItemElements.length; i++) {\n remove(this.stepperItemElements[parseInt(i.toString(), 10)]);\n }\n this.stepperItemElements = [];\n };\n Stepper.prototype.nextStep = function () {\n if (this.activeStep !== this.steps.length - 1) {\n this.navigateToStep(this.activeStep + 1, null, null, false);\n }\n };\n Stepper.prototype.previousStep = function () {\n if (this.activeStep > 0) {\n this.navigateToStep(this.activeStep - 1, null, null, false);\n }\n };\n Stepper.prototype.reset = function () {\n if (this.activeStep !== 0) {\n var isDisabled = this.stepperItemElements[0].classList.contains(DISABLED) ? true : false;\n this.navigateToStep(isDisabled ? -1 : 0, null, null, false);\n }\n };\n Stepper.prototype.updateElementClassArray = function () {\n var classArray = [RTL, READONLY, 'e-steps-focus', LABELAFTER, LABELBEFORE, 'e-label-top',\n 'e-label-bottom', 'e-label-start', 'e-label-end', STEPINDICATOR, LABELINDICATOR, VERTICALSTEP, HORIZSTEP];\n removeClass([this.element], classArray);\n };\n Stepper.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n EventHandler.remove(window, 'resize', function () { if (_this.stepperItemList && _this.progressbar) {\n _this.setProgressPosition(_this.element, true);\n } });\n EventHandler.remove(window, 'click', function () { _this.updateStepFocus(); });\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.stepperItemList) {\n remove(this.stepperItemList);\n }\n this.stepperItemList = null;\n if (this.progressStep) {\n remove(this.progressStep);\n }\n this.progressStep = null;\n this.progressbar = null;\n this.progressBarPosition = null;\n this.stepperItemContainer = null;\n this.textContainer = null;\n this.labelContainer = null;\n this.updateElementClassArray();\n this.element.removeAttribute('aria-label');\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n if (this.keyboardModuleStepper) {\n this.keyboardModuleStepper.destroy();\n }\n this.keyboardModuleStepper = null;\n };\n Stepper.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleStepper = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Stepper.prototype.keyActionHandler = function (e) {\n if (this.readOnly) {\n return;\n }\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n case 'leftarrow':\n case 'rightarrow':\n case 'tab':\n case 'shiftTab':\n this.handleNavigation(this.enableRtl && this.element.classList.contains(HORIZSTEP) ? (e.action === 'leftarrow' || e.action === 'tab' || e.action === 'uparrow') : (e.action === 'rightarrow' || e.action === 'tab' || e.action === 'downarrow'), e);\n break;\n case 'space':\n case 'enter':\n case 'escape':\n this.handleNavigation(null, e);\n break;\n case 'home':\n case 'end':\n this.handleNavigation(null, e, this.enableRtl);\n break;\n }\n };\n Stepper.prototype.handleNavigation = function (isNextStep, e, isRTL) {\n this.isKeyNavFocus = true;\n this.element.classList.add('e-steps-focus');\n var focusedEle = this.element.querySelector('.' + FOCUS);\n if (!focusedEle) {\n focusedEle = this.element.querySelector('.' + SELECTED);\n }\n var stepItems = Array.prototype.slice.call(this.stepperItemList.children);\n var index = stepItems.indexOf(focusedEle);\n if (e.action === 'tab' || e.action === 'shiftTab' || e.action === 'downarrow' || e.action === 'uparrow' || e.action === 'space' || e.action === 'home' || e.action === 'end') {\n if ((e.action === 'tab' && index === stepItems.length - 1) || (e.action === 'shiftTab' && index === 0)) {\n if (focusedEle.classList.contains(FOCUS)) {\n this.updateStepFocus();\n return;\n }\n }\n else {\n e.preventDefault();\n }\n }\n if (e.action === 'escape') {\n stepItems[parseInt(index.toString(), 10)].classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n if (!(e.action === 'space' || e.action === 'enter')) {\n var prevIndex = index;\n index = isNextStep ? index + 1 : index - 1;\n while ((index >= 0 && index < stepItems.length) && stepItems[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index = isNextStep ? index + 1 : index - 1;\n }\n index = (index < 0) ? 0 : (index > stepItems.length - 1) ? stepItems.length - 1 : index;\n if (stepItems[parseInt(prevIndex.toString(), 10)].classList.contains(FOCUS)) {\n stepItems[parseInt(prevIndex.toString(), 10)].classList.remove(FOCUS);\n }\n if ((e.action === 'home' || e.action === 'end')) {\n if (e.action === 'home') {\n index = isRTL ? stepItems.length - 1 : 0;\n }\n else {\n index = isRTL ? 0 : stepItems.length - 1;\n }\n }\n if (index >= 0 && index < stepItems.length) {\n stepItems[parseInt(index.toString(), 10)].classList.add(FOCUS);\n }\n }\n else if ((e.action === 'space' || e.action === 'enter')) {\n var isupdateFocus = false;\n if (this.linear) {\n var linearModeValue = this.activeStep - index;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n }\n else {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n if (isupdateFocus) {\n this.updateStepFocus();\n this.stepperItemElements[index].focus();\n }\n }\n };\n Stepper.prototype.renderStepperItems = function (isUpdate, isStepType) {\n this.updateElementClassArray();\n this.removeItemElements();\n this.element.querySelector('.e-stepper-progressbar').remove();\n if (isUpdate) {\n this.updatePosition();\n }\n if (isStepType) {\n this.updateStepType();\n }\n if (this.readOnly && !this.element.classList.contains(READONLY)) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl && !this.element.classList.contains(RTL)) {\n this.element.classList.add(RTL);\n }\n this.updateOrientaion(this.element);\n this.renderItems();\n this.renderProgressBar(this.element);\n this.checkValidStep();\n this.updateAnimation();\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {StepperModel} newProp - Specifies new properties\n * @param {StepperModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Stepper.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 'steps': {\n if (!(newProp.steps instanceof Array && oldProp.steps instanceof Array)) {\n var stepCounts = Object.keys(newProp.steps);\n for (var i = 0; i < stepCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.steps)[i], 10);\n var changedPropsCount = Object.keys(newProp.steps[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.steps[index])[j];\n if (property === 'status') {\n if (this.activeStep === index) {\n this.navigationHandler(index, newProp.steps[index].status);\n }\n else {\n this.steps[index].status = oldProp.steps[index].status;\n }\n }\n else {\n this.removeItemElements();\n this.renderItems();\n this.updateStepperStatus();\n }\n this.checkValidStep();\n }\n }\n }\n else {\n this.renderStepperItems(true, true);\n }\n break;\n }\n case 'orientation':\n this.updateOrientaion(this.element);\n this.renderStepperItems(true);\n break;\n case 'activeStep':\n this.activeStep = (newProp.activeStep > this.steps.length - 1 || newProp.activeStep < -1) ?\n oldProp.activeStep : this.activeStep;\n if (this.activeStep >= 0 && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .classList.contains(DISABLED)) {\n this.activeStep = oldProp.activeStep;\n }\n if (this.linear) {\n var linearModeValue = oldProp.activeStep - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(this.activeStep, null, null, true);\n }\n }\n else {\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n }\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'readOnly':\n this.element.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.trim().split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.trim().split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP });\n }\n break;\n case 'labelPosition':\n this.renderStepperItems(true);\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'stepType':\n this.renderStepperItems(true, true);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'animation':\n this.updateAnimation();\n break;\n }\n }\n };\n __decorate([\n Property(0)\n ], Stepper.prototype, \"activeStep\", void 0);\n __decorate([\n Complex({}, StepperAnimationSettings)\n ], Stepper.prototype, \"animation\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"linear\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"showTooltip\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property(StepLabelPosition.Bottom)\n ], Stepper.prototype, \"labelPosition\", void 0);\n __decorate([\n Property(StepType.Default)\n ], Stepper.prototype, \"stepType\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanged\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanging\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepClick\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"beforeStepRender\", void 0);\n Stepper = __decorate([\n NotifyPropertyChanges\n ], Stepper);\n return Stepper;\n}(StepperBase));\nexport { Stepper };\n"],"names":["addScrolling","createElement","container","content","scrollType","enableRtl","offset","containerOffset","contentOffset","parentElem","parentElement","getBoundingClientRect","height","width","createScrollbar","style","maxWidth","scrollEle","className","appendChild","overflow","maxHeight","VScroll","scrollStep","select","offsetHeight","HScroll","offsetWidth","destroyScroll","scrollObj","element","skipEle","menu","destroy","detach","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","_super","options","call","preRender","browser","Browser","info","name","browserCheck","isDevice","customStep","ieCheck","initialize","id","getUniqueID","uniqueId","display","classList","add","render","touchModule","Touch","scroll","touchHandler","bind","swipe","swipeHandler","EventHandler","scrollHandler","createOverlay","createNavIcon","setScrollState","isNullOrUndefined","scrollDiv","setAttribute","ele","_i","innerEle_1","slice","children","ele_1","overflowX","scrollItems","getPersistData","keyEntity","addOnPersist","getModuleName","remove","nav","selectAll","overlay","forEach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","CLS_OVERLAY","clsRight","rightEle","navItem","CLS_NAVRIGHTARROW","leftEle","insertBefore","firstChild","eventBinding","rightAttributes","role","aria-label","attrs","clsLeft","leftAttributes","navEle","navLeftItem","CLS_NAVLEFTARROW","onKeyPress","e","_this","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","window","setTimeout","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","timeoutFun","setInterval","scrollDis","isContinuous","rootEle","querySelector","frameScrollRequest","distance","swipeEle","velocity","distanceX","start","animate","step","Math","sin","cancelAnimationFrame","swipeDirection","scrollLeft","requestAnimationFrame","scrollUpdating","scrollVal","action","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","onPropertyChanged","newProp","oldProp","keys","Property","NotifyPropertyChanges","Component","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","CLS_NAVDOWNARROW","upEle","clsUp","navElement","navUpItem","CLS_NAVUPARROW","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","FieldSettings","apply","ChildProperty","MenuItem","Collection","MenuAnimationSettings","MenuBase","navIdx","animation","Animation","isTapHold","tempItem","showSubMenuOn","isMenu","ul","tagName","ejInst","getValue","clonedElement","setValue","append","cloneNode","refEle","nextElementSibling","ejInstance","wrapper","idx","len","attributes","nodeName","nodeValue","parentNode","renderItems","wireEvents","renderComplete","getWrapper","template","enableScrolling","isReact","isAngular","document","body","cssClass","addClass","replace","trim","split","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","items","ListBase","createJsonFromElement","fields","child","setProperties","isBlazor","removeChildElement","innerHTML","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","isIos","cmenuHandler","targetElement","getScrollableParent","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","rippleEffect","selector","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","end","tab","KeyboardEvents","keyAction","keyBoardHandler","closest","closeMenu","keyHandler","keyCode","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","focus","index","navIdxLen","popup","popups_1","push","eventArgs","item","getItem","keyType","openMenu","trigger","aEle","url","getAttribute","open","parent","location","href","sli","currentTarget","isCMenu","pageX","changedTouches","pageY","canOpen","ulIndex","isIterated","isMenuVisible","item_1","items_1","wrapper_1","beforeCloseArgs","popups","getPopups","isClose","cnt","ul_1","liElem_1","getLI","parentItem","cancel","isFocused","observedCloseArgs","popupEle","closeArgs","popupObj","popupId","isOpen","minHeight","unWireKeyboardEvent","getInstance","Popup","hide","toggleAnimation","pop","type","showSubMenu","updateReactTemplate","trgtliId","closedLi","trgtLi","trgtpopUp","RegExp","exec","submenus","querySelectorAll","afterCloseMenu","getIndex","isMenusClosed","isCmenuHover","which","sli_1","cliIdx","item_2","removeStateWrapper","portals","splice","clearTemplate","renderReactTemplates","getMenuItemModel","level","getFields","text","separator","iconCss","isVisible","valueOf","filter","li","top","left","lItem","elemId","uList","getField","lastChild","data","toString","ICONS","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","timer","zIndex","getZindexPartial","createEvent","initEvent","targetEvent","copyObject","srcElement","source","destination","prop","liStyle","getComputedStyle","liIndent","parseInt","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","marginRight","actionOnScroll","relateTo","collision","X","Y","position","targetType","triggerOpen","spanElem","tempTitle","SanitizeHtmlHelper","sanitize","title","spanTitle","spanIcon","tabindex","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","x","y","fit","menuType","observedOpenArgs","checkScrollOffset","refreshPosition","indexOf","animationOptions","animationSettings","effect","duration","timingFunction","easing","show","setPosition","eventArgs_1","collide","isCollide","offWidth","calculatePosition","blankIconList","getElementsByClassName","iconLi","icon","cssProp","padding","margin","iconCssProps","iconSize","fontSize","size","offsetEle","offsetLeft","offsetRight","toggleVisiblity","newTop","pageYOffset","documentElement","clientHeight","Number","xCollision","visibility","showIcon","hasField","listBaseOptions","moduleName","itemNavigable","itemCreating","args","curData","htmlAttributes","isIE","assign","itemCreated","span","templateID","createList","liTrgt","hdrWrapper","regex","isDifferentElem","isClosed","propName","fieldName","field","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","cIdx","isHeader","classname","getItemIndex","isUniqueId","isText","setItem","newItem","getItems","setItems","newItems","skipHdr","updateItemsByNavIdx","count","updateItem","removeChild","this_1","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","lastElementChild","ul1","popStr","uls","targetSelctor","parent_2","keyboardModule","isMenuOpen","pUlHeight","pElement","begin","progress","nIndex","isCallBack","unshift","enableItems","enable","skipItem","disabled","i_1","showItems","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","menuitem","removeAttributes","removeProperty","refreshing","getElementById","Event","Complex","itemId","parentId","CLS_ITEMS","CLS_ITEM","CLS_POPUP","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","btnItems","isNOU","ej2_instances","unwireEvents","tempId","destroyItems","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","keyModule","keyActionHandler","docKeyDown","updateTabIndex","tabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","removeEventListener","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","val","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","nodes","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","pos","sib","tbrItems","isPopupElement","clsList","popupNav","popupClickHandler","itemObj","observers","clickedArgs","CLS_RTL","offsetX","getToolbarPopupWidth","dataBind","getElementOffsetY","eleStyles","parseFloat","borderRightWidth","renderControl","refreshOverflow","formatUnit","setStyle","ariaAttr","aria-disabled","aria-orientation","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","toLowerCase","showAlwaysInPopup","notify","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","aria-haspopup","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","direction","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","childNodes","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","getPropertyValue","offsetY","close","appendTo","tbarPopupHandler","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","bottom","popupOffset","right","clientWidth","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","attr","keyVal","isEnable","elements","a","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","regEx","test","tempStr","outerHTML","templateCompiler","tempArray","isStringTemplate","undefined","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","enableHtmlSanitizer","prefixIcon","suffixIcon","btnObj","Button","iconPosition","tempDom","tooltipText","textContent","itemClick","showTextOn","sTxt","visible","curEle","previousEle","tabindexValue","multirowele","updateHideEleTabIndex","isHidden","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","CLS_HEADER","CLS_HEADERCTN","CLS_CONTENT","CLS_CTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isVue","isDestroy","restoreContent","isNested","isRippleEnabled","removeRippleEffect","nested","initializeHeaderTemplate","initializeItemTemplate","initExpand","expandedIndices","initItemExpand","wireFocusEvents","acrdItem_1","headerEle","clearEvents","focusIn","focusOut","eventName","templateParser","error","headerTemplate","headerTemplateFn","itemTemplate","itemTemplateFn","getHeaderTemplate","getItemTemplate","innerEles","header","toggleIconGenerate","tglIcon","hdrColIcon","expandMode","expandItem","innerDataSourceItem","dataSource","renderInnerItem","acrdnItem","acrdnHdr","acrdnCtn","acrdnCtnItem","getIndexByItem","afterContentRender","contentRendering","ariaAttrUpdate","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","collapse","expand","eleMoveFocus","clstItem","headerEleGenerate","aria-expanded","ctnEle","hdrEle","angularnativeCondiCheck","fetchElement","hdr","expanded","enablePersistence","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","JSON","parse","temString","eleVal","templateProps","templateName","itemcnt","aria-hidden","ctn","trgtItemEle","isExpanded","expandArgs","expandedItemsPush","animationMode","expandProgress","expandAnimation","ef","icn","lastActiveItemId","temp","getItemElements","itemCollection","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","addItem","itemIndex","innerItemEle","expandedItemRefresh","clearAccordionTemplate","enableItem","eleHeader","isExpand","itemExpand","expandedItem","ctnElePos","eleStr","setTemplate","toElement","acrdn","isRefresh","changedProp","j","k","oldVal","newVal","activeContent","ContextMenu","VMENU","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","isInteracted","lastIndex","isAdd","isIconAlone","draggableItems","refreshActiveTabBorder","delete","tbObj","expTemplateContent","isTemplate","cntEle","btnCls","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","cloneElement","draggingItems","prevIndex","isPopup","initRender","isSwiped","itemIndexArray","allowDragAndDrop","dragArea","css","setCssClass","updatePopAnimationConfig","CLS_ICONS","tabId","getRandomId","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","renderContent","CLS_INDICATOR","scrCnt","scrCntClass","setContentHeight","selectedItem","setRTL","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","txt","cont","wrap","aria-selected","aria-controls","parseObject","clicked","setCloseButton","showCloseButton","toolbarHeader","hdrItem","contents","aria-labelledby","reRenderItems","maxId","isReplace","idList_1","getIndexFromEle","max","txtWrapEle","tItems","spliceArray","tbId","substring","lastIndexOf","hidden","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","data-tabindex","tItem","data-id","spliceItemIndex","removeActiveClass","tabHeader","node","checkPopupOverflow","isOverflow","popupHandler","ripEle","actEleId","prevEle","trg","prevCtnAnimation","prev","current","previous","next","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","isPrevent","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","selectTab","headers","templateCompile","compileElement","compile","templateFUN","getContent","callType","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","focusItem","curActItem","headerPos","contentPos","list","heightAdjustMode","getHeight","cs","trgHdrEle","reorderActiveTab","bar","top_1","tbWidth","setActive","skipDataBind","isNaN","allowServerDataBinding","serverDataBind","trg_1","enableAnimation","eleTrg","refreshItemVisibility","eventArg","previousItem","previousIndex","selectedIndex","selectedContent","selectingID","preventFocus","selectEventArgs","showPopup","config","tbPopObj","bindDraggable","initializeDrag","hoverHandler","spaceKeyDown","tabKeyModule","openPopup","shiftTab","removeTab","nestedTab","clstHead","actEle","activeElement","nxtSib","nextSibling","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","L10n","closeButtonTitle","locale","getConstant","evalOnPropertyChangeItems","selectElement","properties","cntItem","textVal","clearTabTemplate","arr","isHiddenEle","addTab","hideTab","enableTab","clearTemplates","dragObj","Draggable","dragTarget","clone","helper","dragStart","itemDragStart","drag","dropIndex","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","isEqualNode","cursor","scrollRightNavEle","scrollLeftNavEle","hscrollBar","abs","pointerEvents","scrollContentWidth","isSameNode","dragAction","droppedIndex","dragStop","itemDragStop","tabItemDragArgs","intDestroy","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","itemsCount","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","tabItemId","sortedKeys_1","sort","refreshActiveTab","innerText","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","DROPIN","DROPNEXT","FULLROW","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","isDropIn","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","isAnimate","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","expandCollapse","expandIconClass","ariaAttributes","expandIconPosition","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","initialRender","setDataBinding","setDisabledMode","setExpandOnType","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","setEnableRtl","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","rippleModel","ignore","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","DataManager","isOffline","offline","ready","then","treeData","result","isNumberTypeId","getType","setRootData","finalize","catch","executeQuery","getQuery","rootData","stringify","mapper","query","columns","Query","getActualProperties","col","from","tableName","addSorting","sortOrder","parentID","where","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isChildObject","isSorted","sortedData","getSortedData","ulElement","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","hasChildren","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","parentEle","changeState","preElement","childCheckedElement","indeterminate","nodeId","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","createCheckBox","touchClass","checkValue","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","textEle","dataId","renderNodeTemplate","nodeData","selectable","rippleSpan","rippleMouseHandler","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","isUndefined","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","checkbox","currLi","getNodeData","updateIndeterminate","check","subChild","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","state","nodeCheckAction","getCheckEvent","observedArgs","ariaState","frameSpan","removeCheck","ensureStateChange","checked","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","elementFromPoint","clientX","clientY","preventContextMenu","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","loaded","hideSpinner","start_1","end_1","liEle_1","setHeight","activeElement_1","HTMLElement","animateHeight","expandedNode","addExpand","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","currentHeight","timeStamp","parentLi","expandChild","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","obj","isRoot","getChildGroup","findIndex","objlen","childIndex","tempField","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","metaKey","removeSelectAll","shiftKey","startNode","startIndex","endIndex","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","blur","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","getScrollParent","parentPos","isVisibleInViewport","scrollIntoView","innerWidth","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","length_1","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","fNode","previousSibling","prevNode","endNode","preNode","focusedElement","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","pid","checkboxElement","nodeFields","tempArr","destroyTemplate","reRenderNodes","oldClass","newClass","editingHandler","oldInpEle","updateOldText","getEditEvent","style_1","renderTextBox","innerHtml","inputObj","Input","createInput","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","isInput","updateText","triggerEvent","getNode","newData","getChildNodeObject","newList","toBind","destroyDrag","virtualEle","enableTailMode","enableAutoScroll","enableTapHold","sender","dragRoot","dragWrap","dragLi","cloneEle","DRAGITEM","nLen","cNode","dragData","listItem","getDragEvent","draggedNode","dragCancelAction","cursorAt","targetTouches","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","Droppable","out","default","over","drop","dropAction","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","liArray","dragInstance","draggable","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconClass","dropTar","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","dropIcon1","createListItemFromJson","offsetParent","refNode","toUpperCase","navigateUrl","updated","childObj","nodeType","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","getMapperProp","touchEditObj","tap","isDoubleTapped","tapCount","wireClickEvent","touchClickObj","wireExpandOnEvent","touchExpandObj","matched","matches","secondTap","firstTap","createSpinner","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","updatePosition","isRefreshChild","childValue","updateChildPosition","currID","found","dynamicState","operation","newNode","prevent","crud","matchedArr","changes","addedRecords","deletedRecords","changedRecords","nodesID","fromTable","saveChanges","deleteSuccess","dmFailure","update","editSucess","insert","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","collapseAll","onLoaded","addNodes","beginEdit","disableNodes","enableNodes","ensureVisible","parentsId","expandAll","reverse","behavior","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","refreshData","newNodeData","parentData","extend","newliEle","newTextEle","newIcon","fullEle","tooltip","merge","class","removeNodes","updateNode","CLOSE","OPEN","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","setWidth","setTarget","setZindex","enableDock","setDock","firstRender","setMediaQuery","checkType","setType","setCloseOnDocumentClick","setEnableRTL","windowWidth","targetEle","sidebarEleCopy","getTargetElement","siblingElement","closeOnDocumentClick","documentclickHandler","setDimension","dockSize","match","z-index","classELement","transitionEnd","triggerChange","destroyBackDrop","sibling","showBackdrop","defaultBackdropDiv","modal","closeArguments","model","observedcloseArgs","transform","setAnimation","setTimeOut","elementWidth","openArguments","observedopenArgs","createBackDrop","changeArguments","getState","targetString","toggle","mediaQuery","matchMedia","enableGestureHandler","startX","setEnableGestures","enableGestures","mainContentEle","sidebarEle","isRendered","isServerRendered","margin-left","margin-right","insertAdjacentElement","ICONRIGHT","MENUCLASS","WRAPMODECLASS","SCROLLMODECLASS","BreadcrumbOverflowMode","BreadcrumbItem","Breadcrumb","isPopupCreated","_maxItems","maxItems","initItems","initPvtProps","getEndIndex","popupUl","TABINDEX","activeItem","baseUri","uri","URL","origin","isSingleLevel","isIconRight","itemsLength","isLastItemInPopup_1","isActiveItem","isLastItem","j_1","wrapDiv","isItemCancelled_1","ol","firstOl","isCollasped","isDefaultOverflowMode_1","enableActiveItemNavigation","containsRightIcon","DOT","isEmptyUrl","keyDownHandler","beforeItemRenderChanges","separatorTemplate","initializeCSPTemplate","itemClass","nextItem","lastPopupItemIdx","li_1","getMenuElement","calculateMaxItems","liElems","liWidth","menuEle","paddingLeft","currItem","isRightIcon","wrapElem","Node","TEXT_NODE","iconElem","iconElem_1","ICONCLASS","enableNavigation","anchor","documentClickHandler","floor","renderPopup","POPUPCLASS","popupWireEvents","popupKeyDownHandler","delegateClickHanlder","classes","attribute","CLS_NAVIGATORS","CLS_HOVER","CarouselSwipeMode","CarouselItem","Carousel","isSwipe","defaultLocale","nextSlide","of","pauseSlideTransition","playSlideTransition","previousSlide","slide","slideShow","localeObj","renderSlides","renderNavigators","renderPlayButton","renderIndicators","applyAnimation","rtlElement","setActiveSlide","autoSlide","setHtmlAttributes","enableTouchSwipe","renderTouchActions","loop","autoSlideInterval","applySlideInterval","handleNavigatorsActions","partialVisible","swipeMode","Mouse","reRenderSlides","cloneCount","getNumOfItems","slideWidth","itemsContainer","getTranslateX","buttonsVisibility","resetTemplates","setStyleAttribute","showPlayButton","playButtonTemplate","playButtonClickHandler","selectedData","reRenderIndicators","swipeStart","swiping","swipStop","swipeModehandlers","carouselClasses","aria-roledescription","slideContainer","aria-live","autoPlay","numOfItems","renderSlide","slideItems","renderTemplates","setProperty","transitionProperty","renderKeyboardActions","isClone","data-index","templateId","navigators","renderNavigatorButton","buttonContainer","previousButtonTemplate","nextButtonTemplate","button","CLS_FLAT","CLS_ICON","navigatorClickHandler","playPauseWrap","CLS_PLAY_PAUSE","playButton","isLastSlide","buttonObj","isToggle","showIndicators","indicatorsType","indicatorClass","indicatorsTemplate","indicatorWrap","CLS_INDICATORS","indicatorBars","renderIndicatorTemplate","indicatorBar","CLS_INDICATOR_BAR","aria-current","indicator","indicatorClickHandler","animationEffect","resetSlideInterval","autoSlideChange","activeSlide","activeIndex","dataset","itemInterval","interval","getSlideIndex","currentIndex","allSlides","activeIndicator","activeIndex_1","currentSlide","nextIndex","slideDirection","refreshIndicators","slideChangedEventArgs","transitionDuration","onTransitionEnd","slideIndicator","indicators","keys_1","getNavigatorState","isPrevious","isPropertyChange","slideIndex","isSlideTransition","isSuspendSlideTransition","isButtonUpdate","prevButton","nextButton","onHoverActions","navigator","pauseOnHover","onFocusActions","destroyButtons","buttonCollections_1","instance","getTranslateValue","WebKitCSSMatrix","webkitTransform","m41","timeStampStart","Date","now","prevPageX","touches","initialTranslate","positionDiff","time","offsetDist","threshold","swipeNavigation","isRtl","resizeHandler","playIcon","play","pause","pauseIcon","templates","AppBar","isSticky","setHeightMode","setColorMode","_b","keys_2","mode","colorMode","StepStatus","Step","NotStarted","StepperOrientation","StepperBase","updateOrientaion","toLocaleLowerCase","renderProgressBar","progressStep","progressbar","prepend","beforeLabel","stepsContainer","progressBarPosition","setProgressPosition","isResize","stepItemContainer","stepItemEle","topPos","leftPost","Horizontal","ICONCSS","TEXTCSS","INPROGRESS","NOTSTARTED","COMPLETED","DISABLED","READONLY","LABELBEFORE","HORIZSTEP","STEPICON","STEPINDICATOR","StepperAnimationSettings","StepLabelPosition","StepType","Stepper","stepperItemElements","localeText","optional","l10n","tooltipOpen","navigationHandler","activeStep","updateStepperStatus","stepperItemList","updateStepType","readOnly","updateTemplateFunction","steps","checkValidStep","updateAnimation","updateTooltip","beforeLabelWidth","textEleWidth","renderDefault","label","progressEle","delay","stepType","clearLabelPosition","updateStepFocus","isKeyNavFocus","isFocus","isInitial","status_1","status","prevOnChange","isProtectedOnChange","InProgress","updateStatusClass","currentStep","isInprogress","stepItem","Completed","stepperItemContainer","stepSpan","isIndicator","isValid","isRender","itemIcon","labelPosition","textSpan","checkValidState","labelContainer","labelSpan","updateLabelPosition","iconSpan","optionalSpan","setLocale","optionalContent","renderItemContent","wireItemsEvents","calculateProgressBarPosition","listItems","isBeforeLabel","iconOnly","labelWidth","isLabel","updateCurrentLabel","before","removeCss","indicatorEle","iconEle","textLabelIcon","validStep","labelEle","showTooltip","tooltipObj","Tooltip","windowCollision","opensOn","STEPPERTOOLTIP","linear","linearModeValue","stepClickHandler","openStepperTooltip","closeStepperTooltip","updateTooltipContent","tooltipPopupClass","tooltipTemplate","templateFunction","getTemplateFunction","content_1","clickEventArgs","previousStep","navigateToStep","isrerender","removeItemContent","updateContent","isUpdated","previousStep_1","stepStatus","Itemslength","progressPos","selectedEle","totalLiWidth","activeLiWidth","progressValue","prevOnChange_1","removeItemElements","nextStep","reset","isDisabled","updateElementClassArray","classArray","textContainer","keyboardModuleStepper","handleNavigation","isNextStep","isRTL","focusedEle","stepItems","isupdateFocus","renderStepperItems","isUpdate","isStepType","stepCounts","changedPropsCount","Bottom","Default"],"mappings":"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"}