@syncfusion/ej2-ribbon 23.1.44 → 23.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/ej2-ribbon.umd.min.js +2 -2
  3. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-ribbon.es2015.js +181 -8
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +181 -8
  7. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  8. package/dist/global/ej2-ribbon.min.js +2 -2
  9. package/dist/global/ej2-ribbon.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +12 -12
  12. package/src/ribbon/base/ribbon.d.ts +4 -0
  13. package/src/ribbon/base/ribbon.js +181 -8
  14. package/styles/bootstrap-dark.css +7 -3
  15. package/styles/bootstrap.css +7 -3
  16. package/styles/bootstrap4.css +7 -3
  17. package/styles/bootstrap5-dark.css +7 -3
  18. package/styles/bootstrap5.css +7 -3
  19. package/styles/fabric-dark.css +7 -3
  20. package/styles/fabric.css +7 -3
  21. package/styles/fluent-dark.css +7 -3
  22. package/styles/fluent.css +7 -3
  23. package/styles/highcontrast-light.css +7 -3
  24. package/styles/highcontrast.css +7 -3
  25. package/styles/material-dark.css +7 -3
  26. package/styles/material.css +7 -3
  27. package/styles/material3-dark.css +7 -3
  28. package/styles/material3.css +7 -3
  29. package/styles/ribbon/_layout.scss +10 -3
  30. package/styles/ribbon/bootstrap-dark.css +7 -3
  31. package/styles/ribbon/bootstrap.css +7 -3
  32. package/styles/ribbon/bootstrap4.css +7 -3
  33. package/styles/ribbon/bootstrap5-dark.css +7 -3
  34. package/styles/ribbon/bootstrap5.css +7 -3
  35. package/styles/ribbon/fabric-dark.css +7 -3
  36. package/styles/ribbon/fabric.css +7 -3
  37. package/styles/ribbon/fluent-dark.css +7 -3
  38. package/styles/ribbon/fluent.css +7 -3
  39. package/styles/ribbon/highcontrast-light.css +7 -3
  40. package/styles/ribbon/highcontrast.css +7 -3
  41. package/styles/ribbon/material-dark.css +7 -3
  42. package/styles/ribbon/material.css +7 -3
  43. package/styles/ribbon/material3-dark.css +7 -3
  44. package/styles/ribbon/material3.css +7 -3
  45. package/styles/ribbon/tailwind-dark.css +7 -3
  46. package/styles/ribbon/tailwind.css +7 -3
  47. package/styles/tailwind-dark.css +7 -3
  48. package/styles/tailwind.css +7 -3
@@ -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(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\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, \"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('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(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 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 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 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 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 items = target.querySelectorAll('.e-control');\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-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')) {\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 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 buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\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 = [], selectingItems = [], 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 }\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') && 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 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 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 buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\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.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) {\n var _this = this;\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 });\n var targetEle = dropdown.target;\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.element.focus();\n dropdown.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 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) });\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.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 ribbonControls = activeContent.querySelectorAll('.e-control');\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')) {\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-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 items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\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 };\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.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 }\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 for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\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 itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\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 }\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 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 if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = 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_1.append(itemContainer);\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 }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\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 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.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\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 if (groupEle && groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle && groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\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 = this.createGroupContainer(groupId, groupHeader);\n if (groupEle && groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\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);\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 ofGroupContainer = 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 }\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 beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\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 comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\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 items[this.itemIndex].querySelector('.e-control').focus();\n }\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 }\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 items[this.itemIndex].querySelector('.e-control').focus();\n }\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 }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\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 items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\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_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.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_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, 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_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.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_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 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) {\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 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 });\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_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\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_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\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) {\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 /**\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 isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\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 this.refreshLayout();\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 isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n this.refreshLayout();\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 /**\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) {\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) {\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 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 }\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 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 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 }\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","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","querySelectorAll","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","insertBefore","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","grpBtnIndex","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","destroyDropDown","updateGroupButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","initialPropsData","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","concat","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","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","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","selectedContent","firstChild","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","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","collectionEle","Overflow","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","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","constants.HEADER_ID","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","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","forEach","groupList","i_1","alignType","i_2","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_3","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","initialProps","hiddenGroups","updateGroupProps","disabledGroups","indexOf","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_4","i_5","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","hideGroup","groupID","showHideGroup","showGroup","isHidden","updateInitialProps","grpContainer","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","keys","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","overflowHeader","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","toggleAttribute","unwireEvents","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(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\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, \"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('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(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 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 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 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 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 items = target.querySelectorAll('.e-control');\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-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')) {\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 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 buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\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 = [], selectingItems = [], 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 }\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') && 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 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 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 buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\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.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) {\n var _this = this;\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 });\n var targetEle = dropdown.target;\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.element.focus();\n dropdown.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 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) });\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.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 ribbonControls = activeContent.querySelectorAll('.e-control');\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')) {\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-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 items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\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 };\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.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 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 itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\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 if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = 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_1.append(itemContainer);\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 }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\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 this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.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 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 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 = 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);\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 ofGroupContainer = 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 beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\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 comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\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 items[this.itemIndex].querySelector('.e-control').focus();\n }\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 }\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 items[this.itemIndex].querySelector('.e-control').focus();\n }\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 }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\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 items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\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_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.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_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, 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_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.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_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 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) {\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 });\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_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\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_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\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) {\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 /**\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 isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\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 this.refreshLayout();\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 isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n this.checkHiddenItems(itemProp.group, isHidden, itemProp.tabIndex);\n this.refreshLayout();\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) {\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) {\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 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 }\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 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 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 }\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","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","querySelectorAll","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","insertBefore","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","grpBtnIndex","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","destroyDropDown","updateGroupButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","initialPropsData","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","concat","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","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","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","selectedContent","firstChild","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","collectionEle","Overflow","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","childElementCount","removeOverflowButton","ofGroupContainer","groupId","isHidden","isGroupHidden","isItemHidden","children","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","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","constants.HEADER_ID","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","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","forEach","groupList","i_1","alignType","i_2","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_3","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","hiddenGroups","updateGroupProps","disabledGroups","indexOf","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_4","i_5","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","hideGroup","groupID","showHideGroup","showGroup","updateInitialProps","grpContainer","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","checkHiddenItems","isInsert","keys","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","overflowHeader","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","toggleAttribute","unwireEvents","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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"}