@syncfusion/ej2-ribbon 25.1.35 → 25.1.41

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 (51) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +3 -3
  3. package/dist/ej2-ribbon.umd.min.js +2 -2
  4. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-ribbon.es2015.js +114 -81
  6. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  7. package/dist/es6/ej2-ribbon.es5.js +114 -81
  8. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  9. package/dist/global/ej2-ribbon.min.js +2 -2
  10. package/dist/global/ej2-ribbon.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +11 -11
  13. package/src/ribbon/base/ribbon.d.ts +3 -0
  14. package/src/ribbon/base/ribbon.js +115 -82
  15. package/styles/bootstrap-dark.css +1 -1
  16. package/styles/bootstrap.css +1 -1
  17. package/styles/bootstrap4.css +1 -1
  18. package/styles/bootstrap5-dark.css +1 -1
  19. package/styles/bootstrap5.css +1 -1
  20. package/styles/fabric-dark.css +4 -4
  21. package/styles/fabric.css +1 -1
  22. package/styles/fluent-dark.css +1 -1
  23. package/styles/fluent.css +1 -1
  24. package/styles/highcontrast-light.css +1 -1
  25. package/styles/highcontrast.css +1 -1
  26. package/styles/material-dark.css +1 -1
  27. package/styles/material.css +1 -1
  28. package/styles/material3-dark.css +2 -2
  29. package/styles/material3.css +2 -2
  30. package/styles/ribbon/_fabric-dark-definition.scss +1 -1
  31. package/styles/ribbon/_layout.scss +1 -1
  32. package/styles/ribbon/_material3-definition.scss +2 -2
  33. package/styles/ribbon/bootstrap-dark.css +1 -1
  34. package/styles/ribbon/bootstrap.css +1 -1
  35. package/styles/ribbon/bootstrap4.css +1 -1
  36. package/styles/ribbon/bootstrap5-dark.css +1 -1
  37. package/styles/ribbon/bootstrap5.css +1 -1
  38. package/styles/ribbon/fabric-dark.css +4 -4
  39. package/styles/ribbon/fabric.css +1 -1
  40. package/styles/ribbon/fluent-dark.css +1 -1
  41. package/styles/ribbon/fluent.css +1 -1
  42. package/styles/ribbon/highcontrast-light.css +1 -1
  43. package/styles/ribbon/highcontrast.css +1 -1
  44. package/styles/ribbon/material-dark.css +1 -1
  45. package/styles/ribbon/material.css +1 -1
  46. package/styles/ribbon/material3-dark.css +2 -2
  47. package/styles/ribbon/material3.css +2 -2
  48. package/styles/ribbon/tailwind-dark.css +1 -1
  49. package/styles/ribbon/tailwind.css +1 -1
  50. package/styles/tailwind-dark.css +1 -1
  51. package/styles/tailwind.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.min.js","sources":["../../src/ribbon/base/utils.js","../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-gallery-item.js","../../src/ribbon/models/ribbon-gallery-group.js","../../src/ribbon/models/ribbon-gallery-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/ribbon-contextual-tab-settings.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/items/ribbon-gallery.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/modules/ribbon-contextualtab.js","../../src/ribbon/modules/ribbon-keytip.js","../../src/global.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from \"@syncfusion/ej2-base\";\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryItem } from \"./ribbon-gallery-item\";\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryGroup } from \"./ribbon-gallery-group\";\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.parent = parent;\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n popupEle.classList.contains('e-popup-close') ? _this.showPopup(popup, popupEle, args, gallerySettings, item.id) : _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) || ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) || ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n !isPopup ? galleryWrapper.appendChild(galleryContainerEle) : itemEle.appendChild(galleryContainerEle);\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsWidth += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0)\n galleryWrapper.style.width = itemsWidth + 'px';\n };\n /**\n * Checks the gallery items height.\n *\n * @param {number} selectedTab - Gets the current selected tab.\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (selectedTab, activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var isHeight = false;\n var itemsCount = 0;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsCount++;\n if (!isHeight) {\n if (itemsCount === 1) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingTop) + parseFloat(itemStyles.paddingBottom);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsValues += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth)))\n itemsValues += marginWidth;\n }\n if (galleryWrapperHeight > (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n if (itemsCount === itemProp.item.gallerySettings.itemCount) {\n itemsCount = 0;\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n }\n }\n }\n }\n }\n };\n RibbonGallery.prototype.checkCollision = function (popup, popupEle) {\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var screenWidth = window.innerWidth;\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n screenWidth = screenWidth - paddingWidth;\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var marginStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (marginStyles) {\n marginWidth = parseFloat(marginStyles.marginLeft) + parseFloat(marginStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n itemsWidth += popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth;\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n }\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var count = 0;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryWrapper = itemEle.querySelector('.e-ribbon-gallery-wrapper');\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n activeLayout === 'Simplified' ? galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden') : galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n activeLayout === 'Simplified' ? galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap' : galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n if (galleryWrapper) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].items.length; i++) {\n count++;\n if (count > itemProp.item.gallerySettings.itemCount) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + n + '_gallery' + i);\n if (galleryItemEle) {\n activeLayout === 'Simplified' ? galleryItemEle.classList.add('e-hidden') : galleryItemEle.classList.remove('e-hidden');\n }\n }\n }\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id,\n });\n itemEle.appendChild(buttonEle);\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton)\n popupButton.classList.add('e-hidden');\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n _this.checkCollision(dropdown_1.dropDown, dropdown_1.dropDown.element);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup.height);\n dropdown_1.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.querySelectorAll('#' + galleryEle.id);\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n for (var i = 0; i < galleryItem.length; i++) {\n galleryItem[parseInt(i.toString(), 10)].classList.add('e-ribbon-gallery-selected');\n }\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'Enter' || e.code === 'Space') {\n galleryPopupEle[this.galleryItemsIndex].click();\n }\n else if (e.key === 'Escape' && !isDropdown) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function (e) {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n /* eslint-disable */\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][type] = [];\n }\n if (Object.keys(this.keyTipElements[tabIndex][type]).length) {\n var keytipData = this.keyTipElements[tabIndex][type];\n for (var i = 0; i < Object.keys(this.keyTipElements[tabIndex][type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n /* eslint-enable */\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(selectedIndex, e.selectedContent.firstChild);\n }\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle, overflowButton);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule)\n this.ribbonGalleryModule.checkAvailableHeight(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = \"\";\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n key === 'hiddenGroups' ? groupEle.classList.add('e-hidden') : groupEle.classList.add('e-disabled');\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] && item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) { return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id; });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n /* eslint-disable */\n if (!hiddenProps[key]) {\n hiddenProps[key] = [];\n }\n if (hiddenProps[key].length) {\n var index = hiddenProps[key].indexOf(id);\n if (index === -1) {\n hiddenProps[key].push(id);\n }\n }\n else {\n hiddenProps[key].push(id);\n }\n /* eslint-enable */\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n /* eslint-disable */\n if (hiddenProps && hiddenProps[key] && hiddenProps[key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[tabIndex].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[key].indexOf(hiddenProps[key][i]);\n if (index !== -1) {\n hiddenProps[key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n /* eslint-disable */\n if (!initialProps[key])\n initialProps[key] = [];\n var itemIndex = initialProps[key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1)\n initialProps[key].push(id);\n }\n else {\n if (itemIndex !== -1)\n initialProps[key].splice(itemIndex, 1);\n initialProps[key].length === 0 && delete initialProps[key];\n /* eslint-enable */\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel}\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) : itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) { return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id; })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var key in newProp.tabs) {\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n keytipData = this.parent.keyTipElements[i][key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData;\n /* eslint-disable */\n keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key]).length; i++) {\n /* eslint-enable */\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.includes(\"_grpbtn\")) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n key === 'item' ? this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset) : this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset, (isTab && isPopUpItem));\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset, isTabOverflow) {\n if (isTabOverflow === void 0) { isTabOverflow = false; }\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) && !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < keytipData.length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow)\n tabOverflow.click();\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).includes(\"_popupButton\")) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.includes(\"_launcher\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_sim_grp_overflow\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_overflow_dropdown\")) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' ? this.createKeytip('grpoverflowpopup') : this.createKeytip('popupitem');\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox':\n var itemEle_1 = document.querySelector('#' + itemID);\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n case 'gallery':\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n case 'template':\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n case 'group-btn':\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n /* eslint-disable */\n if (this.parent.keyTipElements[key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[key]).length; i++) {\n /* eslint-enable */\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n /* eslint-disable */\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]))[j];\n if (this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText]) {\n var index = getIndex(this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n /* eslint-enable */\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < keytipData.length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist)\n this.parent.isKeytipOpen = false;\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonGroupButton, index.RibbonFileMenu, index.RibbonBackstage, index.RibbonKeyTip, index.RibbonContextualTab, index.RibbonGallery);\nexport * from './index';\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","beforeTooltipRender","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","VERTICAL_DDB","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","groupButtonEle","selection","Single","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","targetEle","isOverflowPopup","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","this_1","isHeightDefined","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","selectedTab","activeContent","galleryWrapperItems","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","screenWidth","innerWidth","paddingStyles","popupContainerItems","forEach","isCollideOccurs","marginStyles","Math","abs","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","galleryIcons","galleryContainer","popupButton","groupIconCss","popupContainerEle_1","dropdown_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItem","selectingEventArgs","beforeSelect","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","offsetX","left","top","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","elem","checkOverflow","scrollModule","scrollEle","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","selectedContent","ribbonGalleryModule","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","splice","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","overflowBtnTarget","overflowHeader","groupHeader_1","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","Template","createTemplateContent","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","elements","createGroups","this_3","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","ribbonArgs","constants.RIBBON_POPUP_CONTROL","isGroupOf","upDownKeyHandler","templateEle","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","aria-label","role","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","groupList","i_4","alignType","i_5","groupContent","groupCollection","itemList","itemEle_1","size","createItems","i_6","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","createRibbonItem","itemElements","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","index_1","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","isUpdated","toggleAttribute","unwireEvents","refreshing","undefined","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","HTMLElement","updatePopupPositionOnRtl","popupStyle","right","backButton","closeBtnEle","closeBtn","isBackButtonClicked","itemsWrapperEle","ulFooterElem","ulMenuElem","cloneFooterMenuItem","backstageContentEle","backstageTempEle","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","includes","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","calculateKeyTipPosition","isTabOverflow","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips","index.Ribbon","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonGroupButton","index.RibbonFileMenu","index.RibbonBackstage","index.RibbonKeyTip","index.RibbonContextualTab","index.RibbonGallery"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.min.js","sources":["../../src/ribbon/base/utils.js","../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-gallery-item.js","../../src/ribbon/models/ribbon-gallery-group.js","../../src/ribbon/models/ribbon-gallery-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/ribbon-contextual-tab-settings.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/items/ribbon-gallery.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/modules/ribbon-contextualtab.js","../../src/ribbon/modules/ribbon-keytip.js","../../src/global.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from \"@syncfusion/ej2-base\";\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryItem } from \"./ribbon-gallery-item\";\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from \"@syncfusion/ej2-base\";\nimport { RibbonGalleryGroup } from \"./ribbon-gallery-group\";\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.parent = parent;\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n popupEle.classList.contains('e-popup-close') ? _this.showPopup(popup, popupEle, args, gallerySettings, item.id) : _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) || ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) || ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n !isPopup ? galleryWrapper.appendChild(galleryContainerEle) : itemEle.appendChild(galleryContainerEle);\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsWidth += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0)\n galleryWrapper.style.width = itemsWidth + 'px';\n };\n /**\n * Checks the gallery items height.\n *\n * @param {number} selectedTab - Gets the current selected tab.\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (selectedTab, activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var isHeight = false;\n var itemsCount = 0;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsCount++;\n if (!isHeight) {\n if (itemsCount === 1) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingTop) + parseFloat(itemStyles.paddingBottom);\n if (!(isNullOrUndefined(paddingWidth)))\n itemsValues += paddingWidth;\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth)))\n itemsValues += marginWidth;\n }\n if (galleryWrapperHeight > (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n if (itemsCount === itemProp.item.gallerySettings.itemCount) {\n itemsCount = 0;\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n }\n }\n }\n }\n }\n };\n RibbonGallery.prototype.checkCollision = function (popup, popupEle) {\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var screenWidth = window.innerWidth;\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth)))\n screenWidth = screenWidth - paddingWidth;\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var marginStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (marginStyles) {\n marginWidth = parseFloat(marginStyles.marginLeft) + parseFloat(marginStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth)))\n itemsWidth += marginWidth;\n }\n itemsWidth += popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth;\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)].offsetWidth) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n }\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var count = 0;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryWrapper = itemEle.querySelector('.e-ribbon-gallery-wrapper');\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n activeLayout === 'Simplified' ? galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden') : galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n activeLayout === 'Simplified' ? galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap' : galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n if (galleryWrapper) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].items.length; i++) {\n count++;\n if (count > itemProp.item.gallerySettings.itemCount) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + n + '_gallery' + i);\n if (galleryItemEle) {\n activeLayout === 'Simplified' ? galleryItemEle.classList.add('e-hidden') : galleryItemEle.classList.remove('e-hidden');\n }\n }\n }\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id,\n });\n itemEle.appendChild(buttonEle);\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton)\n popupButton.classList.add('e-hidden');\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n _this.checkCollision(dropdown_1.dropDown, dropdown_1.dropDown.element);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup.height);\n dropdown_1.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.querySelectorAll('#' + galleryEle.id);\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n for (var i = 0; i < galleryItem.length; i++) {\n galleryItem[parseInt(i.toString(), 10)].classList.add('e-ribbon-gallery-selected');\n }\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'Enter' || e.code === 'Space') {\n galleryPopupEle[this.galleryItemsIndex].click();\n }\n else if (e.key === 'Escape' && !isDropdown) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate), galleryItemEle);\n this.parent['renderReactTemplates']();\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function (e) {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n /* eslint-disable */\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][type] = [];\n }\n if (Object.keys(this.keyTipElements[tabIndex][type]).length) {\n var keytipData = this.keyTipElements[tabIndex][type];\n for (var i = 0; i < Object.keys(this.keyTipElements[tabIndex][type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[tabIndex][type].push({ id: id, type: type, keyTip: keyTip });\n }\n /* eslint-enable */\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(selectedIndex, e.selectedContent.firstChild);\n }\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle, overflowButton);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n item.type !== RibbonItemType.GroupButton ? setWidth(item.id) : setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n (isRemoveOverflow ? (itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT)) : (itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT)));\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.activeLayout === 'Classic' && this.ribbonGalleryModule)\n this.ribbonGalleryModule.checkAvailableHeight(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = \"\";\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n key === 'hiddenGroups' ? groupEle.classList.add('e-hidden') : groupEle.classList.add('e-disabled');\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] && item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) { return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id; });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n /* eslint-disable */\n if (!hiddenProps[key]) {\n hiddenProps[key] = [];\n }\n if (hiddenProps[key].length) {\n var index = hiddenProps[key].indexOf(id);\n if (index === -1) {\n hiddenProps[key].push(id);\n }\n }\n else {\n hiddenProps[key].push(id);\n }\n /* eslint-enable */\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n /* eslint-disable */\n if (hiddenProps && hiddenProps[key] && hiddenProps[key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[tabIndex].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[key].indexOf(hiddenProps[key][i]);\n if (index !== -1) {\n hiddenProps[key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n /* eslint-disable */\n if (!initialProps[key])\n initialProps[key] = [];\n var itemIndex = initialProps[key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1)\n initialProps[key].push(id);\n }\n else {\n if (itemIndex !== -1)\n initialProps[key].splice(itemIndex, 1);\n initialProps[key].length === 0 && delete initialProps[key];\n /* eslint-enable */\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel}\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) : itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) { return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id; })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var key in newProp.tabs) {\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n keytipData = this.parent.keyTipElements[i][key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData;\n /* eslint-disable */\n keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][key]).length; i++) {\n /* eslint-enable */\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.includes(\"_grpbtn\")) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n key === 'item' ? this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset) : this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset, (isTab && isPopUpItem));\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset, isTabOverflow) {\n if (isTabOverflow === void 0) { isTabOverflow = false; }\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) && !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < keytipData.length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow)\n tabOverflow.click();\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).includes(\"_popupButton\")) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.includes(\"_launcher\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_sim_grp_overflow\") || keytipData[parseInt(k.toString(), 10)].id.includes(\"_overflow_dropdown\")) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' ? this.createKeytip('grpoverflowpopup') : this.createKeytip('popupitem');\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox':\n var itemEle_1 = document.querySelector('#' + itemID);\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n case 'gallery':\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n case 'template':\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n case 'group-btn':\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n /* eslint-disable */\n if (this.parent.keyTipElements[key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[key]).length; i++) {\n /* eslint-enable */\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n /* eslint-disable */\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]))[j];\n if (this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText]) {\n var index = getIndex(this_1.parent.keyTipElements[this_1.parent.selectedTab][keyText], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n /* eslint-enable */\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < keytipData.length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist)\n this.parent.isKeytipOpen = false;\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonGroupButton, index.RibbonFileMenu, index.RibbonBackstage, index.RibbonKeyTip, index.RibbonContextualTab, index.RibbonGallery);\nexport * from './index';\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","beforeTooltipRender","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","VERTICAL_DDB","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","groupButtonEle","selection","Single","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","targetEle","isOverflowPopup","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","this_1","isHeightDefined","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","selectedTab","activeContent","galleryWrapperItems","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","screenWidth","innerWidth","paddingStyles","popupContainerItems","forEach","isCollideOccurs","marginStyles","Math","abs","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","galleryIcons","galleryContainer","popupButton","groupIconCss","popupContainerEle_1","dropdown_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItem","selectingEventArgs","beforeSelect","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","offsetX","left","top","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","elem","checkOverflow","scrollModule","scrollEle","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","selectedContent","ribbonGalleryModule","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","overflowBtnTarget","overflowHeader","groupHeader_1","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","Template","createTemplateContent","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","elements","createGroups","this_3","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","ribbonArgs","constants.RIBBON_POPUP_CONTROL","isGroupOf","upDownKeyHandler","templateEle","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","aria-label","role","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","groupList","i_4","alignType","i_5","groupContent","groupCollection","itemList","itemEle_1","size","createItems","i_6","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","createRibbonItem","itemElements","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","index_1","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","getElementById","enableItem","disableItem","isUpdated","toggleAttribute","unwireEvents","refreshing","undefined","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","HTMLElement","updatePopupPositionOnRtl","popupStyle","right","backButton","closeBtnEle","closeBtn","isBackButtonClicked","itemsWrapperEle","ulFooterElem","ulMenuElem","cloneFooterMenuItem","backstageContentEle","backstageTempEle","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","includes","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","calculateKeyTipPosition","isTabOverflow","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips","index.Ribbon","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonGroupButton","index.RibbonFileMenu","index.RibbonBackstage","index.RibbonKeyTip","index.RibbonContextualTab","index.RibbonGallery"],"mappings":"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"}