{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","CLS_ROOT","CLS_DISABLE","CLS_HSCROLLBAR","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","_super","HScroll","options","element","call","preRender","browser","info","name","browserCheck","isDevice","customStep","ieCheck","initialize","id","uniqueId","style","display","enableRtl","classList","add","render","touchModule","scroll","touchHandler","bind","swipe","swipeHandler","scrollEle","scrollHandler","createOverlay","createNavIcon","setScrollState","scrollStep","offsetWidth","createElement","className","scrollDiv","setAttribute","ele","innerEle","slice","children","_i","innerEle_1","ele_1","appendChild","overflowX","scrollItems","getPersistData","keyEntity","addOnPersist","getModuleName","destroy","remove","nav","overlay","forEach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","clsRight","rightEle","navItem","leftEle","insertBefore","firstChild","eventBinding","rightAttributes","attrs","clsLeft","leftAttributes","navEle","navLeftItem","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","scrollDis","timeoutFun","setInterval","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","arrowEle","arrowIcon","width","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","onPropertyChanged","newProp","oldProp","keys","prop","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","scrollBar","overflow","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","height","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","apply","Toolbar","resizeContext","resize","keyConfigs","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","tab","home","end","isReact","isAngular","clearTemplate","btnItems","querySelectorAll","ej2_instances","unwireEvents","tempId","document","body","destroyItems","lastElementChild","removeChild","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","cssClass","split","attrb","eventArgs","enableCollision","trigger","scrollModule","items","isVertical","isExtendedOpen","popupPriCount","wireEvents","clickHandler","allowKeyboard","wireKeyboardEvent","keyModule","keyAction","keyActionHandler","docKeyDown","updateTabIndex","tabIndex","dataTabIndex","getAttribute","tagName","unwireKeyboardEvent","popCheck","overflowMode","keyCode","hide","duration","keyCheck","destroyScroll","removeEventListener","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","val","elementFocus","fChild","focus","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","nodes","popAnimate","eleFocus","popupCheck","extendedPopup","popFrstEle","activeEleRemove","top","show","tbarScrollChk","eleContains","closest","pos","sib","skipEle","parentElement","tbrItems","itemObj","isPopupElement","clsList","popupNav","popupClickHandler","tempItem","indexOf","item","cancel","clickedArgs","type","CLS_RTL","position","X","Y","offsetX","dataBind","refreshPosition","getElementOffsetY","minHeight","renderControl","renderComplete","ariaAttr","renderItems","renderLayout","renderOverflowMode","itemPositioning","childElementCount","checkPopupRefresh","separator","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","parseInt","toString","push","tbarItemAlign","align","toLowerCase","showAlwaysInPopup","portals","notify","renderReactTemplates","changeOrientation","refreshOverflow","initScroll","innerItems","checkOverflow","itemWidthCal","getComputedStyle","parseFloat","marginTop","marginRight","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","getElementsByClassName","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","offsetLeft","innerNav","vertical","createPopupIcon","innerNavDom","direction","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","index","tbResize","childNodes","tbarElement","sepItem","extendEle","popupEle","popupInit","getPropertyValue","clientHeight","maxHeight","eleStyles","popup","relateTo","offsetY","open","close","collision","borderRightWidth","appendTo","visibility","tbarPopupHandler","isOpen","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","getBoundingClientRect","bottom","popupOffset","right","documentElement","clientWidth","inEle","pre","eleOffset","checkoffset","popPriority","len","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","query","priEleCnt","eleSep","ignoreCheck","sepDisplay","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","count","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","_loop_1","this_1","sepBeforePri_1","state_1","refreshPositioning","margin","tbarWid","popWid","left","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","cloneNode","setAttr","attr","keyVal","enableItems","isEnable","elements","enable","a","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","splice","parentNode","template","removeItems","args","removeItemByIndex","eleIdx","indexAgn","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","regEx","RegExp","trim","test","innerHTML","tempStr","outerHTML","tempArray","toolbarTemplateID","isStringTemplate","buttonRendering","dom","iconCss","iconPos","textStr","text","btnTxt","enableHtmlSanitizer","sanitize","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","htmlAttributes","textContent","itemClick","showTextOn","sTxt","disabled","visible","getDataTabindex","currentTarget","curEle","multirowele","updateHideEleTabIndex","isHidden","isElement","eleIndex","nextEle","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","innerItems_1"],"mappings":"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","file":"js/chunk-vendors~7e3686a5.0d49d1a7.4.2.0.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(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 HScroll.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 element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.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.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.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 scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.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 HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).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 ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = 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(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / 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 === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + 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 {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.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 newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\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 { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\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};\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 /**\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 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 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 = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\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.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 if (itemObj && !isNOU(itemObj.click)) {\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 popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\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 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 + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : 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 eleStyles = window.getComputedStyle(this.element);\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 = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\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 popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\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 {\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 setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\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 setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\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 if (itemCount === itemPopCount) {\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 }\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 Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\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 var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\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 if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\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 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);\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.clearTemplate();\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);\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 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 ? 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 if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(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 this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\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 var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\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.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 /**\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 var wid = tEle.offsetWidth;\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 (typeof newProperty !== 'function') {\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.clearTemplate();\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 }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\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"],"sourceRoot":""}