@syncfusion/ej2-ribbon 25.1.35 → 25.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/README.md +3 -3
- package/dist/ej2-ribbon.umd.min.js +2 -2
- package/dist/ej2-ribbon.umd.min.js.map +1 -1
- package/dist/es6/ej2-ribbon.es2015.js +114 -81
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +114 -81
- package/dist/es6/ej2-ribbon.es5.js.map +1 -1
- package/dist/global/ej2-ribbon.min.js +2 -2
- package/dist/global/ej2-ribbon.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/ribbon/base/ribbon.d.ts +3 -0
- package/src/ribbon/base/ribbon.js +115 -82
- package/styles/bootstrap-dark.css +1 -1
- package/styles/bootstrap.css +1 -1
- package/styles/bootstrap4.css +1 -1
- package/styles/bootstrap5-dark.css +1 -1
- package/styles/bootstrap5.css +1 -1
- package/styles/fabric-dark.css +4 -4
- package/styles/fabric.css +1 -1
- package/styles/fluent-dark.css +1 -1
- package/styles/fluent.css +1 -1
- package/styles/highcontrast-light.css +1 -1
- package/styles/highcontrast.css +1 -1
- package/styles/material-dark.css +1 -1
- package/styles/material.css +1 -1
- package/styles/material3-dark.css +2 -2
- package/styles/material3.css +2 -2
- package/styles/ribbon/_fabric-dark-definition.scss +1 -1
- package/styles/ribbon/_layout.scss +1 -1
- package/styles/ribbon/_material3-definition.scss +2 -2
- package/styles/ribbon/bootstrap-dark.css +1 -1
- package/styles/ribbon/bootstrap.css +1 -1
- package/styles/ribbon/bootstrap4.css +1 -1
- package/styles/ribbon/bootstrap5-dark.css +1 -1
- package/styles/ribbon/bootstrap5.css +1 -1
- package/styles/ribbon/fabric-dark.css +4 -4
- package/styles/ribbon/fabric.css +1 -1
- package/styles/ribbon/fluent-dark.css +1 -1
- package/styles/ribbon/fluent.css +1 -1
- package/styles/ribbon/highcontrast-light.css +1 -1
- package/styles/ribbon/highcontrast.css +1 -1
- package/styles/ribbon/material-dark.css +1 -1
- package/styles/ribbon/material.css +1 -1
- package/styles/ribbon/material3-dark.css +2 -2
- package/styles/ribbon/material3.css +2 -2
- package/styles/ribbon/tailwind-dark.css +1 -1
- package/styles/ribbon/tailwind.css +1 -1
- package/styles/tailwind-dark.css +1 -1
- package/styles/tailwind.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\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 { ChildProperty, Property } from \"@syncfusion/ej2-base\";\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\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 { ChildProperty, Collection, Property } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryItem } from \"./ribbon-gallery-item\";\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\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 { ChildProperty, Collection, Property, Event } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryGroup } from \"./ribbon-gallery-group\";\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\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 { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\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 { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\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 { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\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 { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\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 { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.parent = parent;\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n popupEle.classList.contains('e-popup-close') ? _this.showPopup(popup, popupEle, args, gallerySettings, item.id) : _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) || ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) || ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n !isPopup ? galleryWrapper.appendChild(galleryContainerEle) : itemEle.appendChild(galleryContainerEle);\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsWidth += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0)\n galleryWrapper.style.width = itemsWidth + 'px';\n };\n /**\n * Checks the gallery items height.\n *\n * @param {number} selectedTab - Gets the current selected tab.\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (selectedTab, activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var isHeight = false;\n var itemsCount = 0;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsCount++;\n if (!isHeight) {\n if (itemsCount === 1) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingTop) + parseFloat(itemStyles.paddingBottom);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsValues += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth)))\n itemsValues += marginWidth;\n }\n if (galleryWrapperHeight > (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n if (itemsCount === itemProp.item.gallerySettings.itemCount) {\n itemsCount = 0;\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n }\n }\n }\n }\n }\n };\n RibbonGallery.prototype.checkCollision = function (popup, popupEle) {\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var screenWidth = window.innerWidth;\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n screenWidth = screenWidth - paddingWidth;\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var marginStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (marginStyles) {\n marginWidth = parseFloat(marginStyles.marginLeft) + parseFloat(marginStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n itemsWidth += popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth;\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n }\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var count = 0;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryWrapper = itemEle.querySelector('.e-ribbon-gallery-wrapper');\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n activeLayout === 'Simplified' ? galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden') : galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n activeLayout === 'Simplified' ? galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap' : galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n if (galleryWrapper) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].items.length; i++) {\n count++;\n if (count > itemProp.item.gallerySettings.itemCount) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + n + '_gallery' + i);\n if (galleryItemEle) {\n activeLayout === 'Simplified' ? galleryItemEle.classList.add('e-hidden') : galleryItemEle.classList.remove('e-hidden');\n }\n }\n }\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id,\n });\n itemEle.appendChild(buttonEle);\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton)\n popupButton.classList.add('e-hidden');\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n _this.checkCollision(dropdown_1.dropDown, dropdown_1.dropDown.element);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup.height);\n dropdown_1.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.querySelectorAll('#' + galleryEle.id);\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n for (var i = 0; i < galleryItem.length; i++) {\n galleryItem[parseInt(i.toString(), 10)].classList.add('e-ribbon-gallery-selected');\n }\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'Enter' || e.code === 'Space') {\n galleryPopupEle[this.galleryItemsIndex].click();\n }\n else if (e.key === 'Escape' && !isDropdown) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\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 { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function (e) {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n /* eslint-disable */\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][type] = [];\n }\n if (Object.keys(this.keyTipElements[tabIndex][type]).length) {\n var keytipData = this.keyTipElements[tabIndex][type];\n for (var i = 0; i < Object.keys(this.keyTipElements[tabIndex][type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n /* eslint-enable */\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(selectedIndex, e.selectedContent.firstChild);\n }\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle, overflowButton);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule)\n this.ribbonGalleryModule.checkAvailableHeight(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = \"\";\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n key === 'hiddenGroups' ? groupEle.classList.add('e-hidden') : groupEle.classList.add('e-disabled');\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] && item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) { return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id; });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n /* eslint-disable */\n if (!hiddenProps[key]) {\n hiddenProps[key] = [];\n }\n if (hiddenProps[key].length) {\n var index = hiddenProps[key].indexOf(id);\n if (index === -1) {\n hiddenProps[key].push(id);\n }\n }\n else {\n hiddenProps[key].push(id);\n }\n /* eslint-enable */\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n /* eslint-disable */\n if (hiddenProps && hiddenProps[key] && hiddenProps[key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[tabIndex].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[key].indexOf(hiddenProps[key][i]);\n if (index !== -1) {\n hiddenProps[key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n /* eslint-disable */\n if (!initialProps[key])\n initialProps[key] = [];\n var itemIndex = initialProps[key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1)\n initialProps[key].push(id);\n }\n else {\n if (itemIndex !== -1)\n initialProps[key].splice(itemIndex, 1);\n initialProps[key].length === 0 && delete initialProps[key];\n /* eslint-enable */\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel}\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) : itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\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})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) { return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id; })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var key in newProp.tabs) {\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n keytipData = this.parent.keyTipElements[i][key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData;\n /* eslint-disable */\n keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key]).length; i++) {\n /* eslint-enable */\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.includes(\"_grpbtn\")) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n key === 'item' ? this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset) : this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset, (isTab && isPopUpItem));\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset, isTabOverflow) {\n if (isTabOverflow === void 0) { isTabOverflow = false; }\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) && !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < keytipData.length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow)\n tabOverflow.click();\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).includes(\"_popupButton\")) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.includes(\"_launcher\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_sim_grp_overflow\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_overflow_dropdown\")) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' ? this.createKeytip('grpoverflowpopup') : this.createKeytip('popupitem');\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox':\n var itemEle_1 = document.querySelector('#' + itemID);\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n case 'gallery':\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n case 'template':\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n case 'group-btn':\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n /* eslint-disable */\n if (this.parent.keyTipElements[key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[key]).length; i++) {\n /* eslint-enable */\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n /* eslint-disable */\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]))[j];\n if (this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText]) {\n var index = getIndex(this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n /* eslint-enable */\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < keytipData.length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist)\n this.parent.isKeytipOpen = false;\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","_loop_1","isHeightDefined","this_1","itemHeight","_loop_2","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","selectedTab","activeContent","galleryWrapperItems","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","screenWidth","innerWidth","paddingStyles","popupContainerItems","forEach","isCollideOccurs","marginStyles","Math","abs","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","popupButton","groupIconCss","popupContainerEle_1","dropdown_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItem","selectingEventArgs","beforeSelect","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","offsetX","left","top","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","constants.CONTENT_ID","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","selectedContent","ribbonGalleryModule","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","splice","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","removeDropdown","state_1","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","_loop_3","ribbonTab","this_3","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","templateEle","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","_loop_4","groupButtonID_1","this_4","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","_loop_5","index_1","this_5","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","_loop_6","hiddenEle","this_6","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","isUpdated","toggleAttribute","unwireEvents","refreshing","undefined","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","popupStyle","right","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtnEle","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","ulFooterElem","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","includes","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isTabOverflow","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\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 { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\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 { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\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 { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\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 { ChildProperty, Property } from \"@syncfusion/ej2-base\";\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\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 { ChildProperty, Collection, Property } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryItem } from \"./ribbon-gallery-item\";\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\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 { ChildProperty, Collection, Property, Event } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryGroup } from \"./ribbon-gallery-group\";\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\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 { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\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 { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\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 { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\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 { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\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 { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\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 { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.parent = parent;\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n popupEle.classList.contains('e-popup-close') ? _this.showPopup(popup, popupEle, args, gallerySettings, item.id) : _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) || ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) || ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n !isPopup ? galleryWrapper.appendChild(galleryContainerEle) : itemEle.appendChild(galleryContainerEle);\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsWidth += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0)\n galleryWrapper.style.width = itemsWidth + 'px';\n };\n /**\n * Checks the gallery items height.\n *\n * @param {number} selectedTab - Gets the current selected tab.\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (selectedTab, activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var isHeight = false;\n var itemsCount = 0;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsCount++;\n if (!isHeight) {\n if (itemsCount === 1) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingTop) + parseFloat(itemStyles.paddingBottom);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsValues += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth)))\n itemsValues += marginWidth;\n }\n if (galleryWrapperHeight > (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n if (itemsCount === itemProp.item.gallerySettings.itemCount) {\n itemsCount = 0;\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n }\n }\n }\n }\n }\n };\n RibbonGallery.prototype.checkCollision = function (popup, popupEle) {\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var screenWidth = window.innerWidth;\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n screenWidth = screenWidth - paddingWidth;\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var marginStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (marginStyles) {\n marginWidth = parseFloat(marginStyles.marginLeft) + parseFloat(marginStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n itemsWidth += popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth;\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n }\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var count = 0;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryWrapper = itemEle.querySelector('.e-ribbon-gallery-wrapper');\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n activeLayout === 'Simplified' ? galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden') : galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n activeLayout === 'Simplified' ? galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap' : galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n if (galleryWrapper) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].items.length; i++) {\n count++;\n if (count > itemProp.item.gallerySettings.itemCount) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + n + '_gallery' + i);\n if (galleryItemEle) {\n activeLayout === 'Simplified' ? galleryItemEle.classList.add('e-hidden') : galleryItemEle.classList.remove('e-hidden');\n }\n }\n }\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id,\n });\n itemEle.appendChild(buttonEle);\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton)\n popupButton.classList.add('e-hidden');\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n _this.checkCollision(dropdown_1.dropDown, dropdown_1.dropDown.element);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup.height);\n dropdown_1.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.querySelectorAll('#' + galleryEle.id);\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n for (var i = 0; i < galleryItem.length; i++) {\n galleryItem[parseInt(i.toString(), 10)].classList.add('e-ribbon-gallery-selected');\n }\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'Enter' || e.code === 'Space') {\n galleryPopupEle[this.galleryItemsIndex].click();\n }\n else if (e.key === 'Escape' && !isDropdown) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\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 { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function (e) {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n /* eslint-disable */\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][type] = [];\n }\n if (Object.keys(this.keyTipElements[tabIndex][type]).length) {\n var keytipData = this.keyTipElements[tabIndex][type];\n for (var i = 0; i < Object.keys(this.keyTipElements[tabIndex][type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n /* eslint-enable */\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(selectedIndex, e.selectedContent.firstChild);\n }\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle, overflowButton);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule)\n this.ribbonGalleryModule.checkAvailableHeight(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = \"\";\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n key === 'hiddenGroups' ? groupEle.classList.add('e-hidden') : groupEle.classList.add('e-disabled');\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] && item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) { return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id; });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n /* eslint-disable */\n if (!hiddenProps[key]) {\n hiddenProps[key] = [];\n }\n if (hiddenProps[key].length) {\n var index = hiddenProps[key].indexOf(id);\n if (index === -1) {\n hiddenProps[key].push(id);\n }\n }\n else {\n hiddenProps[key].push(id);\n }\n /* eslint-enable */\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n /* eslint-disable */\n if (hiddenProps && hiddenProps[key] && hiddenProps[key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[tabIndex].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[key].indexOf(hiddenProps[key][i]);\n if (index !== -1) {\n hiddenProps[key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n /* eslint-disable */\n if (!initialProps[key])\n initialProps[key] = [];\n var itemIndex = initialProps[key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1)\n initialProps[key].push(id);\n }\n else {\n if (itemIndex !== -1)\n initialProps[key].splice(itemIndex, 1);\n initialProps[key].length === 0 && delete initialProps[key];\n /* eslint-enable */\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel}\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) : itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\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})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) { return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id; })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var key in newProp.tabs) {\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n keytipData = this.parent.keyTipElements[i][key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData;\n /* eslint-disable */\n keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key]).length; i++) {\n /* eslint-enable */\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.includes(\"_grpbtn\")) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n key === 'item' ? this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset) : this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset, (isTab && isPopUpItem));\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset, isTabOverflow) {\n if (isTabOverflow === void 0) { isTabOverflow = false; }\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) && !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < keytipData.length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow)\n tabOverflow.click();\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).includes(\"_popupButton\")) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.includes(\"_launcher\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_sim_grp_overflow\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_overflow_dropdown\")) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' ? this.createKeytip('grpoverflowpopup') : this.createKeytip('popupitem');\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox':\n var itemEle_1 = document.querySelector('#' + itemID);\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n case 'gallery':\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n case 'template':\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n case 'group-btn':\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n /* eslint-disable */\n if (this.parent.keyTipElements[key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[key]).length; i++) {\n /* eslint-enable */\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n /* eslint-disable */\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]))[j];\n if (this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText]) {\n var index = getIndex(this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n /* eslint-enable */\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < keytipData.length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist)\n this.parent.isKeytipOpen = false;\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","_loop_1","isHeightDefined","this_1","itemHeight","_loop_2","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","selectedTab","activeContent","galleryWrapperItems","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","screenWidth","innerWidth","paddingStyles","popupContainerItems","forEach","isCollideOccurs","marginStyles","Math","abs","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","popupButton","groupIconCss","popupContainerEle_1","dropdown_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItem","selectingEventArgs","beforeSelect","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","offsetX","left","top","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","constants.CONTENT_ID","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","selectedContent","ribbonGalleryModule","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","removeDropdown","state_1","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","_loop_3","ribbonTab","this_3","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","templateEle","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","_loop_4","groupButtonID_1","this_4","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","_loop_5","index_1","this_5","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","_loop_6","hiddenEle","this_6","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","getElementById","enableItem","disableItem","isUpdated","toggleAttribute","unwireEvents","refreshing","undefined","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","popupStyle","right","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtnEle","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","ulFooterElem","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","includes","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isTabOverflow","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}
|