@syncfusion/ej2-ribbon 24.1.46 → 24.2.8
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 +8 -0
- package/README.md +1 -1
- 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 +36 -19
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +36 -19
- 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.js +23 -15
- package/src/ribbon/items/ribbon-groupbutton.js +4 -4
- package/src/ribbon/models/ribbon-group-button-item.d.ts +7 -0
- package/src/ribbon/models/ribbon-group-button-item.js +9 -0
- package/styles/bootstrap-dark.css +16 -0
- package/styles/bootstrap.css +16 -0
- package/styles/bootstrap4.css +16 -0
- package/styles/bootstrap5-dark.css +16 -0
- package/styles/bootstrap5.css +16 -0
- package/styles/fabric-dark.css +16 -0
- package/styles/fabric.css +16 -0
- package/styles/fluent-dark.css +16 -0
- package/styles/fluent.css +16 -0
- package/styles/highcontrast-light.css +16 -0
- package/styles/highcontrast.css +16 -0
- package/styles/material-dark.css +16 -0
- package/styles/material.css +16 -0
- package/styles/material3-dark.css +16 -0
- package/styles/material3.css +16 -0
- package/styles/ribbon/_bootstrap-dark-definition.scss +2 -0
- package/styles/ribbon/_bootstrap-definition.scss +2 -0
- package/styles/ribbon/_bootstrap4-definition.scss +2 -0
- package/styles/ribbon/_bootstrap5-definition.scss +2 -0
- package/styles/ribbon/_fabric-dark-definition.scss +2 -0
- package/styles/ribbon/_fabric-definition.scss +2 -0
- package/styles/ribbon/_fluent-definition.scss +2 -0
- package/styles/ribbon/_fusionnew-definition.scss +2 -0
- package/styles/ribbon/_highcontrast-definition.scss +2 -0
- package/styles/ribbon/_highcontrast-light-definition.scss +2 -0
- package/styles/ribbon/_layout.scss +8 -0
- package/styles/ribbon/_material-dark-definition.scss +2 -0
- package/styles/ribbon/_material-definition.scss +2 -0
- package/styles/ribbon/_material3-definition.scss +2 -0
- package/styles/ribbon/_tailwind-definition.scss +2 -0
- package/styles/ribbon/bootstrap-dark.css +16 -0
- package/styles/ribbon/bootstrap.css +16 -0
- package/styles/ribbon/bootstrap4.css +16 -0
- package/styles/ribbon/bootstrap5-dark.css +16 -0
- package/styles/ribbon/bootstrap5.css +16 -0
- package/styles/ribbon/fabric-dark.css +16 -0
- package/styles/ribbon/fabric.css +16 -0
- package/styles/ribbon/fluent-dark.css +16 -0
- package/styles/ribbon/fluent.css +16 -0
- package/styles/ribbon/highcontrast-light.css +16 -0
- package/styles/ribbon/highcontrast.css +16 -0
- package/styles/ribbon/material-dark.css +16 -0
- package/styles/ribbon/material.css +16 -0
- package/styles/ribbon/material3-dark.css +16 -0
- package/styles/ribbon/material3.css +16 -0
- package/styles/ribbon/tailwind-dark.css +16 -0
- package/styles/ribbon/tailwind.css +16 -0
- package/styles/tailwind-dark.css +16 -0
- package/styles/tailwind.css +16 -0
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -60
- package/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -37
|
@@ -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-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/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/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.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 * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(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 for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\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 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 __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", 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, 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';\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(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 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 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, \"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 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, \"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(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","/**\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 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_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_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_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: colorPickerSettings.change,\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 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)].selected = false;\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].selected = 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)].selected = true;\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].selected = false;\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","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 } 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 { 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.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\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] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\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.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 createTooltip(this.element, this);\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 };\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 ribbonControls = controlElements.concat(templateElements);\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')) {\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-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 };\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 });\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 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 eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\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.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 };\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)) {\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.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)) {\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 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);\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 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);\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 }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\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 '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 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 }\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.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 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\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 for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\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.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 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 };\n Ribbon.prototype.addOverflowButton = function (btnId) {\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 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 '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 };\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_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.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_3, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_3, 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_4 = 0; i_4 < shrinkColumns.length; i_4++) {\n shrinkColumns[parseInt(i_4.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)) {\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 }\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_5 = 0; i_5 < groupList.length; i_5++) {\n var group = groupList[parseInt(i_5.toString(), 10)];\n var alignType = groupList[parseInt(i_5.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)) {\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 }\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) {\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 };\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);\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 }\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 var size = item.activeSize;\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 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)) {\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_6 = 0; i_6 < item.groupButtonSettings.items.length; i_6++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_6);\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_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_7);\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 }\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 // 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_3 = 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_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\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 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 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) {\n this.showHideTab(tabId, false);\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) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = 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.hideTab(index, value);\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_4 = function (i) {\n var contentEle = this_4.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_4.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_4.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_4.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_4.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_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_4.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_4 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_4(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_8 = 0; i_8 < overflowItems.length; i_8++) {\n if (overflowItems[parseInt(i_8.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_8.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_9 = 0; i_9 < overflowItems.length; i_9++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_9.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_9.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);\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)) {\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 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 Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\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 itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\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 else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\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 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 this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\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 '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 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 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 };\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.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.addFileMenuTooltip(fileMenuOptions);\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 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 /**\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 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.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.addBackStageMenuTooltip(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 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 /**\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"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","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","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","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","HORIZONTAL_SCROLLBAR","HIDE_CSS","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_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_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","type","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","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","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","initialPropsData","hiddenElements","hiddenGroups","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","ribbonBackstageModule","createBackStage","backStageMenu","createHelpPaneTemplate","refreshOverflow","wireEvents","wireKeyboardEvent","currentControlIndex","window","resizeHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","activeContent","selectedTab","constants.CONTENT_ID","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","activePopup","getInstance","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","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","selectedTabId","selectedIndex","previousIndex","calculateHiddenElementsWidth","selectedContent","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","constants.CONTAINER_ID","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","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","Math","abs","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","attrs","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","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","tabindex","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","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","forEach","groupList","i_3","alignType","i_4","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_5","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","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","hiddenItems","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_6","i_7","removeLauncherIcon","containerId","_loop_3","groupButtonID_1","this_3","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","headerEle","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","_loop_4","hiddenEle","this_4","keys","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_8","previousWidth","hiddenItem","i_9","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","toggleAttribute","unwireEvents","refreshing","undefined","onPropertyChanged","newProp","oldProp","animation","tabAnimation","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","itemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","onClickEvent","hideBackstage","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","Popup","height","relateTo","updatePopupPositionOnRtl","code","popupStyle","right","left","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","addBackstageItems","backstageItems","item1","removeBackstageItems","show","hide"],"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-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/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/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.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 * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(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 for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\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 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 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, 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';\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(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 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 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, \"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 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, \"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(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","/**\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 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_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_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_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: colorPickerSettings.change,\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 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","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 } 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 { 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.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\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] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\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.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 createTooltip(this.element, this);\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 };\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 ribbonControls = controlElements.concat(templateElements);\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')) {\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-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 };\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 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 eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\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.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 };\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)) {\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.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)) {\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 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);\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 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);\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 }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\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 '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 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 }\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.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 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\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 for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\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.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 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 };\n Ribbon.prototype.addOverflowButton = function (btnId) {\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 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 '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 };\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_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.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_3, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_3, 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_4 = 0; i_4 < shrinkColumns.length; i_4++) {\n shrinkColumns[parseInt(i_4.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)) {\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 }\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_5 = 0; i_5 < groupList.length; i_5++) {\n var group = groupList[parseInt(i_5.toString(), 10)];\n var alignType = groupList[parseInt(i_5.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)) {\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 }\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) {\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 };\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);\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 }\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 var size = item.activeSize;\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 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)) {\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_6 = 0; i_6 < item.groupButtonSettings.items.length; i_6++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_6);\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_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_7);\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 }\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 // 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_3 = 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_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\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 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 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) {\n this.showHideTab(tabId, false);\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) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = 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.hideTab(index, value);\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_4 = function (i) {\n var contentEle = this_4.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_4.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_4.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_4.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_4.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_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_4.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_4 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_4(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_8 = 0; i_8 < overflowItems.length; i_8++) {\n if (overflowItems[parseInt(i_8.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_8.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_9 = 0; i_9 < overflowItems.length; i_9++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_9.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_9.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);\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)) {\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 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 };\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 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 this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\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 '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 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 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 };\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.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.addFileMenuTooltip(fileMenuOptions);\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 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 /**\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 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.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.addBackStageMenuTooltip(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 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 /**\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"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","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","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","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","HORIZONTAL_SCROLLBAR","HIDE_CSS","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_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_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","type","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","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","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","initialPropsData","hiddenElements","hiddenGroups","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","ribbonBackstageModule","createBackStage","backStageMenu","createHelpPaneTemplate","refreshOverflow","wireEvents","wireKeyboardEvent","currentControlIndex","window","resizeHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","activeContent","selectedTab","constants.CONTENT_ID","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","activePopup","getInstance","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","selectedTabId","selectedIndex","previousIndex","calculateHiddenElementsWidth","selectedContent","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","constants.CONTAINER_ID","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","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","Math","abs","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","attrs","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","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","tabindex","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","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","forEach","groupList","i_3","alignType","i_4","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_5","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","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","hiddenItems","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_6","i_7","removeLauncherIcon","containerId","_loop_3","groupButtonID_1","this_3","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","headerEle","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","_loop_4","hiddenEle","this_4","keys","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_8","previousWidth","hiddenItem","i_9","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","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","itemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","onClickEvent","hideBackstage","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","Popup","height","relateTo","updatePopupPositionOnRtl","code","popupStyle","right","left","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","addBackstageItems","backstageItems","item1","removeBackstageItems","show","hide"],"mappings":"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"}
|