@syncfusion/ej2-ribbon 23.1.36 → 23.1.38

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n 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 Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n 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 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 Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } 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 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 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 } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } 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 };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var items = target.querySelectorAll('.e-control');\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } 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 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 } 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 var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [], selectingItems = [], selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });\n var targetEle = dropdown.target;\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.element.focus();\n dropdown.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE) });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n createTooltip(this.element, this);\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var ribbonControls = activeContent.querySelectorAll('.e-control');\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n 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 Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer) {\n var overflowButton;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var isDisabledGroup = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n overflowButton.target.classList.add('e-disabled');\n }\n overflowButton.target.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n ofTabContainer.append(ofGroupContainer);\n }\n ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\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 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 Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function () {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\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 var contentEle = this.tabObj.items[this.selectedTab].content;\n if (contentEle.innerHTML === '') {\n this.renderInitialTab(this.selectedTab);\n }\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_3 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId) {\n this.showHideTab(tabId, false);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_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 (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n this.refreshLayout();\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n }\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_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 var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs();\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.addBackStageMenuTooltip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","trim","isPrimary","isToggle","created","onclick","clicked","setAttribute","addOverFlowEvents","overflowButton","type","buttonObj","toggle","removeOverFlowEvents","split","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","querySelectorAll","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","grpBtnIndex","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","destroyDropDown","updateGroupButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","ribbonBackstageModule","createBackStage","backStageMenu","createHelpPaneTemplate","refreshOverflow","wireEvents","wireKeyboardEvent","currentControlIndex","window","resizeHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","activeContent","selectedTab","constants.CONTENT_ID","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","previousIndex","selectedContent","firstChild","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","constants.CONTAINER_ID","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","isDisabledGroup","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","tabindex","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","alignType","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","destroyFunction","size","createItems","i_3","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","groupElements","showLauncherIcon","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","_a","itemElements","constants.DISABLED_CSS","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_i","_b","_c","_d","_e","getItemModuleName","i_4","i_5","removeLauncherIcon","containerId","_loop_3","groupButtonID_1","this_3","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_1","addGroup","ribbonGroups","removeGroup","removeItemElement","hideGroup","groupID","showHideGroup","showGroup","isHidden","grpContainer","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","updateTab","groups_2","forEach","innerText","updateGroup","removeCss","match","removeClass","ribbongroup","overflowHeader","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","toggleAttribute","unwireEvents","undefined","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","itemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","onClickEvent","hideBackstage","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","Popup","height","relateTo","updatePopupPositionOnRtl","code","popupStyle","right","left","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtnEle","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","ulFooterElem","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","addBackstageItems","backstageItems","item1","removeBackstageItems","show","hide"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n 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 Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n 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 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 Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } 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 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 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 } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } 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 };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var items = target.querySelectorAll('.e-control');\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } 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 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 } 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 var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [], selectingItems = [], selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n buttonEle.onclick = buttonEle.onkeydown = function () {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n _this.grpBtnIndex = 0;\n }\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });\n var targetEle = dropdown.target;\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.element.focus();\n dropdown.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE) });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonGroupButton', args: [this] }, { member: 'ribbonFileMenu', args: [this] }, { member: 'ribbonBackstage', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n createTooltip(this.element, this);\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var ribbonControls = activeContent.querySelectorAll('.e-control');\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n 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 Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var isDisabledGroup = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n var overflowBtnTarget = overflowButton.target;\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM))\n : overflowBtnTarget.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n if (isDisabledGroup && isDisabledGroup.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n ofTabContainer.append(ofGroupContainer);\n }\n isResize ? ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM)) : ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\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 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 Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var key in tabs) {\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_3 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_3.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_3.tooltipData.splice(index, 1);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_3(i);\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId) {\n this.showHideTab(tabId, false);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId) {\n this.showHideTab(tabId, true);\n };\n Ribbon.prototype.showHideTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isHidden ? overflowtarget.classList.add('e-hidden') : overflowtarget.classList.remove('e-hidden');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isHidden ? grpContainer.classList.add('e-hidden') : grpContainer.classList.remove('e-hidden');\n }\n }\n }\n this.refreshLayout();\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n isDisabled ? groupEle.classList.add('e-disabled') : groupEle.classList.remove('e-disabled');\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n isDisabled ? overflowtarget.classList.add('e-disabled') : overflowtarget.classList.remove('e-disabled');\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n isDisabled ? grpContainer.classList.add('e-disabled') : grpContainer.classList.remove('e-disabled');\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id + constants.RIBBON_GROUP_BUTTON_ID) :\n contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'backStageMenu':\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n case 'hideLayoutSwitcher':\n this.hideLayoutSwitcher ? this.removeExpandCollapse() : this.addExpandCollapse();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {\n _this.hideBackstage();\n } };\n this.hideBackstage();\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement)\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element,\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.addBackStageMenuTooltip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n else {\n isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","RIBBON_BACKSTAGE_POPUP","RIBBON_BACKSTAGE_OPEN","RIBBON_BACKSTAGE_CONTENT","RIBBON_BACKSTAGE","RIBBON_BACKSTAGE_MENU","RIBBON_BACKSTAGE_TEMPLATE","RIBBON_BACKSTAGE_MENU_WRAPPER","RIBBON_BACKSTAGE_ITEMS_WRAPPER","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","trim","isPrimary","isToggle","created","onclick","clicked","setAttribute","addOverFlowEvents","overflowButton","type","buttonObj","toggle","removeOverFlowEvents","split","join","click","controlId","updateButton","merge","classList","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","querySelectorAll","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","grpBtnIndex","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","destroyDropDown","updateGroupButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","ribbonBackstageModule","createBackStage","backStageMenu","createHelpPaneTemplate","refreshOverflow","wireEvents","wireKeyboardEvent","currentControlIndex","window","resizeHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","activeContent","selectedTab","constants.CONTENT_ID","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","previousIndex","selectedContent","firstChild","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","constants.CONTAINER_ID","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","isResize","isDisabledGroup","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","tabindex","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","isNewTab","destroyTabItems","innerText","_i","groups_1","_a","_b","_c","_d","destroyFunction","forEach","groupList","i_1","alignType","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_3","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","groupElements","showLauncherIcon","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_e","getItemModuleName","i_4","i_5","removeLauncherIcon","containerId","_loop_3","groupButtonID_1","this_3","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","enableTab","enableDisableTab","disableTab","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","hideGroup","groupID","showHideGroup","showGroup","isHidden","grpContainer","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","overflowHeader","updateCollection","ribboncollection","updateItem","enableDisableItem","getElementById","enableItem","disableItem","toggleAttribute","unwireEvents","undefined","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","itemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","createBackStageContent","addBackStageMenuTooltip","onClickEvent","hideBackstage","backStageItems","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","Popup","height","relateTo","updatePopupPositionOnRtl","code","popupStyle","right","left","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtnEle","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","ulFooterElem","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","addBackstageItems","backstageItems","item1","removeBackstageItems","show","hide"],"mappings":"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"}