@syncfusion/ej2-ribbon 34.1.30 → 34.1.31

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/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/utils.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\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 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 if (overflowButton.element.classList.contains('e-active')) {\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 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 if (!buttonObj.disabled) {\n buttonObj.click();\n }\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 if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\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 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 if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: function (e) {\n var target = _this.parent.getAppendToElement();\n var splitBtn = colorPicker['splitBtn'];\n if (splitBtn && splitBtn.dropDown && !target.contains(splitBtn.dropDown.element)) {\n target.appendChild(splitBtn.dropDown.element);\n }\n if (colorPickerSettings.beforeOpen) {\n colorPickerSettings.beforeOpen.call(_this, e);\n }\n },\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n colorPickerObj.beforeOpen = function (e) {\n var target = _this.parent.getAppendToElement();\n var splitBtn = colorPickerObj['splitBtn'];\n if (splitBtn && splitBtn.dropDown && !target.contains(splitBtn.dropDown.element)) {\n target.appendChild(splitBtn.dropDown.element);\n }\n if (item.colorPickerSettings.beforeOpen) {\n item.colorPickerSettings.beforeOpen.call(_this, e);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\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 if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\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: function (e) {\n requestAnimationFrame(function () {\n if (!_this.parent) {\n return;\n }\n var target = _this.parent.getAppendToElement();\n var popupEle = document.getElementById(inputEle.id + '_popup');\n if (popupEle && !target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n });\n if (comboBoxSettings.beforeOpen) {\n comboBoxSettings.beforeOpen.call(_this, e);\n }\n },\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.beforeOpen = function (e) {\n requestAnimationFrame(function () {\n if (!_this.parent) {\n return;\n }\n var target = _this.parent.getAppendToElement();\n var popupEle = document.getElementById(item.id + '_popup');\n if (popupEle && !target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n });\n if (item.comboBoxSettings.beforeOpen) {\n item.comboBoxSettings.beforeOpen.call(_this, e);\n }\n };\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 if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: function (e) {\n var ddb = getComponent(buttonEle, DropDownButton);\n var target = _this.parent.getAppendToElement();\n if (ddb && ddb.dropDown && !target.contains(ddb.dropDown.element)) {\n target.appendChild(ddb.dropDown.element);\n }\n if (dropDownSettings.beforeOpen) {\n dropDownSettings.beforeOpen.call(_this, e);\n }\n },\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown && dropdown.dropDown && !target.contains(dropdown.dropDown.element)) {\n target.appendChild(dropdown.dropDown.element);\n }\n },\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n var dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: function () {\n var popupEl = splitbutton.dropDown.element;\n var target = _this.parent.getAppendToElement();\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\n if (splitButtonSettings.beforeOpen) {\n splitButtonSettings.beforeOpen.call(_this);\n }\n },\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeOpen = function () {\n var splitBtn = getComponent(splitButtonEle, SplitButton);\n var popupEl = splitBtn && splitBtn.dropDown ? splitBtn.dropDown.element : null;\n var target = _this.parent.getAppendToElement();\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\n if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this);\n }\n };\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 if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\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 if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\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.beforeOpen = function (e) {\n if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this, e);\n }\n };\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 var splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\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.beforeOpen;\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 { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n beforeOpen: beforeTooltipOpen.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 function beforeTooltipOpen(args) {\n var target = ribbon.getAppendToElement();\n var tooltipPopup = args.element;\n if (tooltipPopup && !target.contains(tooltipPopup)) {\n target.appendChild(tooltipPopup);\n }\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.grpBtnIndex = 0;\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n this.grpBtnIndex = i;\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown_1 = 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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown_1 && dropdown_1.dropDown && !target.contains(dropdown_1.dropDown.element)) {\n target.appendChild(dropdown_1.dropDown.element);\n }\n }\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown_1.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n 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 if (this.parent.activeLayout === 'Simplified' && groupButtonEle) {\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.toggle();\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown_2 = 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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown_2 && dropdown_2.dropDown && !target.contains(dropdown_2.dropDown.element)) {\n target.appendChild(dropdown_2.dropDown.element);\n }\n }\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown_2.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle_1 = dropdown.target;\n if (targetEle_1.children.length) {\n for (var i = 0; i < targetEle_1.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle_1.classList.add('e-icon-btn');\n }\n }\n targetEle_1.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle_1.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n }\n var overflowGroupButtonEle = itemEle.querySelector('#' + item.id + '_grpbtn');\n if (this.parent.activeLayout === 'Classic' && overflowGroupButtonEle) {\n overflowGroupButtonEle.onclick = function () {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n RibbonGallery.prototype.setWrapperStyle = function (popup, popupContainerItems) {\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'column wrap';\n });\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n this.setWrapperStyle(popup, popupContainerItems);\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n var appendTarget = this.parent.getAppendToElement();\n appendTarget.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\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 RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle_1 = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle_1);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle_1.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup_1 = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n var dropDownPopup = dropdown_1 && dropdown_1.dropDown ? dropdown_1.dropDown.element : null;\n if (dropDownPopup && !target.contains(dropDownPopup)) {\n target.appendChild(dropDownPopup);\n }\n },\n open: function () {\n var popupContainerItems = popupContainerEle_1.querySelectorAll('.e-ribbon-gallery-container');\n _this.setWrapperStyle(popup_1, popupContainerItems);\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n if (popup_1.width !== 'auto') {\n _this.alignGalleryPopupLeft(popupContainerEle_1, buttonEle_1);\n }\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle_1);\n if (popup_1.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup_1.width);\n }\n if (popup_1.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup_1.height);\n dropdown_1.dropDown.element.style.height = (popup_1.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n var target = this.parent.getAppendToElement();\n if (!target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.alignGalleryPopupLeft = function (popup, buttonEle) {\n var popupEl = popup.parentElement;\n if (!popupEl) {\n return;\n }\n var currentLeft = parseFloat(popupEl.style.left);\n var buttonRect = buttonEle.getBoundingClientRect();\n var popupWidth = popupEl.offsetWidth;\n var targetLeft = buttonRect.left - popupWidth - 1;\n if (targetLeft < 0) {\n targetLeft = 1;\n }\n if (Math.abs(currentLeft - targetLeft) > 1) {\n popupEl.style.left = targetLeft + \"px\";\n }\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, L10n, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.getAppendToElement = function () {\n if (this.isAngular) {\n var cdkPane = this.element.closest('.cdk-overlay-pane');\n var popoverEl = this.element.closest('[popover]');\n if (cdkPane && popoverEl) {\n return cdkPane;\n }\n }\n return document.body;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n this.initializeLocale();\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.initializeLocale = function () {\n this.l10n = new L10n('ribbon', {\n groupOverflow: 'More Group Options',\n overflow: 'More Options'\n }, this.locale);\n this.l10n.setLocale(this.locale);\n };\n Ribbon.prototype.wireEvents = function () {\n this.resizeListener = this.resizeHandler.bind(this);\n EventHandler.add(window, 'resize', this.resizeListener);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (!isNullOrUndefined(activeContent)) {\n this.checkOverflow(this.selectedTab, activeContent);\n }\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopups = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active[aria-expanded=\"true\"], .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active[aria-expanded=\"true\"]');\n var colorPickerPopups = document.querySelectorAll('.e-ribbon .e-colorpicker-wrapper.e-ribbon-control.e-ribbon-open .e-colorpicker, .e-ribbon-group-overflow-ddb .e-colorpicker-wrapper.e-ribbon-control.e-ribbon-open .e-colorpicker');\n activePopups.forEach(function (popup) {\n var dropDownBtn = getInstance(popup, DropDownButton);\n if (dropDownBtn) {\n dropDownBtn.toggle();\n }\n });\n colorPickerPopups.forEach(function (picker) {\n var colorPickerObj = getInstance(picker, ColorPicker);\n if (colorPickerObj) {\n colorPickerObj.toggle();\n colorPickerObj.refresh();\n }\n });\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function (e) {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\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 if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this, e);\n }\n if (item.dropDownSettings.beforeOpen) {\n item.dropDownSettings.beforeOpen.call(_this, e);\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\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 if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n overflowButton.setAttribute('title', isGroupOF ? this.l10n.getConstant('groupOverflow') : this.l10n.getConstant('overflow'));\n var overFlowCss = this.cssClass ? constants.SPACE + this.cssClass : '';\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB + overFlowCss,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var target = _this.getAppendToElement();\n if (overflowDDB && overflowDDB.dropDown && !target.contains(overflowDDB.dropDown.element)) {\n target.appendChild(overflowDDB.dropDown.element);\n }\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.element = null;\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\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 _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\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 if (this.tabsInternal !== this.tabs) {\n this.tabsInternal = this.tabs;\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 }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : 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.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = this.tabObj.getItemIndex(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 * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = this.tabObj.getItemIndex(tabId);\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\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 +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow && dropdown) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeListener);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\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 }\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 }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n if (isOpen && this.fileMenuDDB && this.fileMenuDDB.dropDown) {\n var target = this.parent.getAppendToElement();\n var popupEl = this.fileMenuDDB.dropDown.element;\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\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 if (isOpen) {\n var target = this.parent.getAppendToElement();\n var popup = args.element && args.element.closest('.e-popup');\n if (popup && !target.contains(popup)) {\n target.appendChild(popup);\n }\n }\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 }\n var menuOpen = !!args.element.closest('.e-ribbon-menu.e-popup-open');\n var fileTriggerOpen = !!args.element.closest('.e-ribbon-file-menu.e-popup-open');\n var fileMenuOpen = !!document.querySelector('.e-ribbon-file-menu.e-popup-open');\n // True if the file trigger was clicked open, or if the ribbon menu is open and the file menu popup is actually present\n var isMenuOpen = fileTriggerOpen || (menuOpen && fileMenuOpen);\n if (!args.element.classList.contains('e-menu-caret-icon') && isMenuOpen) {\n this.fileMenuDDB.toggle();\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n 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.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\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 this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n 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 }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle_1)) {\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.isInteractableElement = function (element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["RibbonLayout","ItemOrientation","RibbonItemSize","DisplayMode","RibbonItemType","RibbonGroupButtonSelection","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","RibbonButtonSettings","ChildProperty","setProperties","prop","muteOnChange","call","Property","Event","apply","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","iconCss","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","SPACE","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","DROPDOWNBUTTON_HIDE","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","RIBBON_BACKSTAGE_TEXT_MENU","TAB_ID","COLLECTION_ID","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","destroy","parent","createButton","item","itemEle","_this","buttonEle","createElement","id","btnSettings","appendChild","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","disabled","cssClass","trim","content","isPrimary","isToggle","created","htmlAttributes","setCustomAttributes","onclick","e","clicked","setAttribute","addOverFlowEvents","overflowButton","querySelector","buttonObj","type","toString","getComponent","element","classList","contains","toggle","removeOverFlowEvents","split","filter","join","click","controlId","getItemElement","updateButton","itemProp","getItem","tabs","merge","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","getAppendToElement","splitBtn","dropDown","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","enabled","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","requestAnimationFrame","popupEle","document","getElementById","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","ddb","appendTo","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","args","cancel","isNullOrUndefined","createTooltip","onkeydown","itemIndex","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","parseInt","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","Tooltip","getDDBItemElement","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","dropdownObj","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","popupEl","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","getSplitButtonObj","splitBtnObj","updateSplitButton","updateSplitButtonSize","getIndex","arr","condition","getTemplateFunction","template","compile","tempEle","tagName","outerHTML","tab","j","group","k","collections","collection","l","collectionIndex","getCollection","getGroup","destroyControl","moduleName","updateCommonProperty","commonProp","updateControlDisabled","disable","tabObj","Classic","displayOptions","ribbonDropDownModule","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","overflowDDB","isTooltipPresent","tooltip","title","setToolTipContent","tooltipData","tooltipContent","targetId","data","constants.RIBBON_TOOLTIP_CONTAINER","textContainer","append","header","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","ribbon","ribbonTooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","tooltipPopup","windowCollision","destroyTooltip","updateTooltipProp","attributes","elementClass","replace","addClass","RibbonGroupButton","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","btnContainerEle","count","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","grpBtnIndex","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","dropdown_1","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","dropdown_2","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","targetEle_1","constants.SPACE","children","overflowGroupButtonEle","destroyDropDown","updateGroupButtonSize","RibbonGallery","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","galleryWrapper","isCollapsible","_loop_1","headerEle","isHeightDefined","this_1","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","isAdded","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","marginWidth","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","setWrapperStyle","popupContainerItems","forEach","ele","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","isCollideOccurs","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","selectedTab","constants.CONTENT_ID","buttonEle_1","popupButton","groupIconCss","popup_1","popupContainerEle_1","setFoucsToFirstItem","alignGalleryPopupLeft","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","offsetX","show","buttonPosition","getBoundingClientRect","left","showGalleryPopup","hideGalleryPopup","isDropdown","galleryItemsIndex","handleGalleryPopupNavigation","currentLeft","buttonRect","targetLeft","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","registeredTemplate","ref","setValue","Ribbon_1","Ribbon","Component","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","canInjectColorPickerModule","member","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","isAngular","cdkPane","popoverEl","body","getUniqueID","initializeLocale","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","l10n","L10n","groupOverflow","overflow","setLocale","resizeListener","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","colorPickerPopups","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopups","dropDownBtn","getInstance","picker","refresh","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","activePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","constants.TAB_ID","tabItems","validateItemSize","createTabItems","toolbarEle","Tab","constants.RIBBON_TAB","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","isContextual","constants.RIBBON_GROUP","elements","createGroups","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","ofTabContainer","overflowTarget","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","isBreak","tabContent","constants.TAB_CONTENT","isOverFlow","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","itemContainer","allowedSizes","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","ofGroupContainer","groupItemEle","groupElement","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","childElementCount","isHeaderVisible","removeOverflowButton","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","_loop_3","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","isGroupOf","constants.RIBBON_OVERFLOW_TARGET","overFlowCss","getConstant","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","upDownKeyHandler","getElementsByClassName","currentItemIndex","findDisabledItem","templateEle","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","constants.COLLECTION_ID","htmlAttrID","listitem","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","_loop_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","getItemIndex","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","_loop_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","grpContainer","updateHiddenElements","updateInitialProps","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","_loop_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isOverflow","isUpdated","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","options","Inject","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","constants.RIBBON_FILE_MENU_ID","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","menuOpen","fileTriggerOpen","fileMenuOpen","isMenuOpen","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","ulFooterElem","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeytipPopupOpen","isInteractableElement","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-group-button-item.js","../src/ribbon/models/ribbon-group-button-settings.js","../src/ribbon/models/ribbon-gallery-item.js","../src/ribbon/models/ribbon-gallery-group.js","../src/ribbon/models/ribbon-gallery-settings.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/models/ribbon-back-button.js","../src/ribbon/models/ribbon-backstage-item.js","../src/ribbon/models/ribbon-back-stage-settings.js","../src/ribbon/models/ribbon-contextual-tab-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/utils.js","../src/ribbon/items/ribbon-groupbutton.js","../src/ribbon/items/ribbon-gallery.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js","../src/ribbon/modules/ribbon-backstage.js","../src/ribbon/modules/ribbon-contextualtab.js","../src/ribbon/modules/ribbon-keytip.js"],"sourcesContent":["/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\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 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 if (overflowButton.element.classList.contains('e-active')) {\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 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 if (!buttonObj.disabled) {\n buttonObj.click();\n }\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 if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\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 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 if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: function (e) {\n var target = _this.parent.getAppendToElement();\n var splitBtn = colorPicker['splitBtn'];\n if (splitBtn && splitBtn.dropDown && !target.contains(splitBtn.dropDown.element)) {\n target.appendChild(splitBtn.dropDown.element);\n }\n if (colorPickerSettings.beforeOpen) {\n colorPickerSettings.beforeOpen.call(_this, e);\n }\n },\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n colorPickerObj.beforeOpen = function (e) {\n var target = _this.parent.getAppendToElement();\n var splitBtn = colorPickerObj['splitBtn'];\n if (splitBtn && splitBtn.dropDown && !target.contains(splitBtn.dropDown.element)) {\n target.appendChild(splitBtn.dropDown.element);\n }\n if (item.colorPickerSettings.beforeOpen) {\n item.colorPickerSettings.beforeOpen.call(_this, e);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\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 if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\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: function (e) {\n requestAnimationFrame(function () {\n if (!_this.parent) {\n return;\n }\n var target = _this.parent.getAppendToElement();\n var popupEle = document.getElementById(inputEle.id + '_popup');\n if (popupEle && !target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n });\n if (comboBoxSettings.beforeOpen) {\n comboBoxSettings.beforeOpen.call(_this, e);\n }\n },\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.beforeOpen = function (e) {\n requestAnimationFrame(function () {\n if (!_this.parent) {\n return;\n }\n var target = _this.parent.getAppendToElement();\n var popupEle = document.getElementById(item.id + '_popup');\n if (popupEle && !target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n });\n if (item.comboBoxSettings.beforeOpen) {\n item.comboBoxSettings.beforeOpen.call(_this, e);\n }\n };\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 if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: function (e) {\n var ddb = getComponent(buttonEle, DropDownButton);\n var target = _this.parent.getAppendToElement();\n if (ddb && ddb.dropDown && !target.contains(ddb.dropDown.element)) {\n target.appendChild(ddb.dropDown.element);\n }\n if (dropDownSettings.beforeOpen) {\n dropDownSettings.beforeOpen.call(_this, e);\n }\n },\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown && dropdown.dropDown && !target.contains(dropdown.dropDown.element)) {\n target.appendChild(dropdown.dropDown.element);\n }\n },\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n var dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: function () {\n var popupEl = splitbutton.dropDown.element;\n var target = _this.parent.getAppendToElement();\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\n if (splitButtonSettings.beforeOpen) {\n splitButtonSettings.beforeOpen.call(_this);\n }\n },\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeOpen = function () {\n var splitBtn = getComponent(splitButtonEle, SplitButton);\n var popupEl = splitBtn && splitBtn.dropDown ? splitBtn.dropDown.element : null;\n var target = _this.parent.getAppendToElement();\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\n if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this);\n }\n };\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 if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\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 if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\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.beforeOpen = function (e) {\n if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this, e);\n }\n };\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 var splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\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.beforeOpen;\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 { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n beforeOpen: beforeTooltipOpen.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 function beforeTooltipOpen(args) {\n var target = ribbon.getAppendToElement();\n var tooltipPopup = args.element;\n if (tooltipPopup && !target.contains(tooltipPopup)) {\n target.appendChild(tooltipPopup);\n }\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.grpBtnIndex = 0;\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n this.grpBtnIndex = i;\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown_1 = 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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown_1 && dropdown_1.dropDown && !target.contains(dropdown_1.dropDown.element)) {\n target.appendChild(dropdown_1.dropDown.element);\n }\n }\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown_1.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n 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 if (this.parent.activeLayout === 'Simplified' && groupButtonEle) {\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.toggle();\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown_2 = 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 beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n if (dropdown_2 && dropdown_2.dropDown && !target.contains(dropdown_2.dropDown.element)) {\n target.appendChild(dropdown_2.dropDown.element);\n }\n }\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown_2.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle_1 = dropdown.target;\n if (targetEle_1.children.length) {\n for (var i = 0; i < targetEle_1.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle_1.classList.add('e-icon-btn');\n }\n }\n targetEle_1.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle_1.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n }\n var overflowGroupButtonEle = itemEle.querySelector('#' + item.id + '_grpbtn');\n if (this.parent.activeLayout === 'Classic' && overflowGroupButtonEle) {\n overflowGroupButtonEle.onclick = function () {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n RibbonGallery.prototype.setWrapperStyle = function (popup, popupContainerItems, isOverflow) {\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n if (isOverflow) {\n ele.style.flexFlow = 'column wrap';\n }\n else {\n ele.style.flexFlow = 'wrap';\n }\n });\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n this.setWrapperStyle(popup, popupContainerItems);\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n var appendTarget = this.parent.getAppendToElement();\n appendTarget.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\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 RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle_1 = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle_1);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle_1.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var isGroupOF_1 = itemProp && itemProp.group ? itemProp.group.enableGroupOverflow : false;\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup_1 = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown_1 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n beforeOpen: function () {\n var target = _this.parent.getAppendToElement();\n var dropDownPopup = dropdown_1 && dropdown_1.dropDown ? dropdown_1.dropDown.element : null;\n if (dropDownPopup && !target.contains(dropDownPopup)) {\n target.appendChild(dropDownPopup);\n }\n },\n open: function () {\n var popupContainerItems = popupContainerEle_1.querySelectorAll('.e-ribbon-gallery-container');\n _this.setWrapperStyle(popup_1, popupContainerItems, isGroupOF_1);\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n if (popup_1.width !== 'auto') {\n _this.alignGalleryPopupLeft(popupContainerEle_1, buttonEle_1);\n }\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle_1);\n if (popup_1.width !== 'auto') {\n dropdown_1.dropDown.width = formatUnit(popup_1.width);\n }\n if (popup_1.height !== 'auto') {\n dropdown_1.dropDown.height = formatUnit(popup_1.height);\n dropdown_1.dropDown.element.style.height = (popup_1.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n var target = this.parent.getAppendToElement();\n if (!target.contains(popupEle)) {\n target.appendChild(popupEle);\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.alignGalleryPopupLeft = function (popup, buttonEle) {\n var popupEl = popup.parentElement;\n if (!popupEl) {\n return;\n }\n var currentLeft = parseFloat(popupEl.style.left);\n var buttonRect = buttonEle.getBoundingClientRect();\n var popupWidth = popupEl.offsetWidth;\n var targetLeft = buttonRect.left - popupWidth - 1;\n if (targetLeft < 0) {\n targetLeft = 1;\n }\n if (Math.abs(currentLeft - targetLeft) > 1) {\n popupEl.style.left = targetLeft + \"px\";\n }\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, L10n, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.getAppendToElement = function () {\n if (this.isAngular) {\n var cdkPane = this.element.closest('.cdk-overlay-pane');\n var popoverEl = this.element.closest('[popover]');\n if (cdkPane && popoverEl) {\n return cdkPane;\n }\n }\n return document.body;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n this.initializeLocale();\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.initializeLocale = function () {\n this.l10n = new L10n('ribbon', {\n groupOverflow: 'More Group Options',\n overflow: 'More Options'\n }, this.locale);\n this.l10n.setLocale(this.locale);\n };\n Ribbon.prototype.wireEvents = function () {\n this.resizeListener = this.resizeHandler.bind(this);\n EventHandler.add(window, 'resize', this.resizeListener);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (!isNullOrUndefined(activeContent)) {\n this.checkOverflow(this.selectedTab, activeContent);\n }\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopups = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active[aria-expanded=\"true\"], .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active[aria-expanded=\"true\"]');\n var colorPickerPopups = document.querySelectorAll('.e-ribbon .e-colorpicker-wrapper.e-ribbon-control.e-ribbon-open .e-colorpicker, .e-ribbon-group-overflow-ddb .e-colorpicker-wrapper.e-ribbon-control.e-ribbon-open .e-colorpicker');\n activePopups.forEach(function (popup) {\n var dropDownBtn = getInstance(popup, DropDownButton);\n if (dropDownBtn) {\n dropDownBtn.toggle();\n }\n });\n colorPickerPopups.forEach(function (picker) {\n var colorPickerObj = getInstance(picker, ColorPicker);\n if (colorPickerObj) {\n colorPickerObj.toggle();\n colorPickerObj.refresh();\n }\n });\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n var target = this.getAppendToElement();\n if (dropdown && dropdown.dropDown && !target.contains(dropdown.dropDown.element)) {\n target.appendChild(dropdown.dropDown.element);\n }\n dropdown.beforeOpen = function (e) {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\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 if (item.splitButtonSettings.beforeOpen) {\n item.splitButtonSettings.beforeOpen.call(_this, e);\n }\n if (item.dropDownSettings.beforeOpen) {\n item.dropDownSettings.beforeOpen.call(_this, e);\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\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 if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n overflowButton.setAttribute('title', isGroupOF ? this.l10n.getConstant('groupOverflow') : this.l10n.getConstant('overflow'));\n var overFlowCss = this.cssClass ? constants.SPACE + this.cssClass : '';\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB + overFlowCss,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var target = _this.getAppendToElement();\n if (overflowDDB && overflowDDB.dropDown && !target.contains(overflowDDB.dropDown.element)) {\n target.appendChild(overflowDDB.dropDown.element);\n }\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.element = null;\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\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 _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\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 if (this.tabsInternal !== this.tabs) {\n this.tabsInternal = this.tabs;\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 }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : 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.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = this.tabObj.getItemIndex(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 * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = this.tabObj.getItemIndex(tabId);\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\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 +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow && dropdown) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeListener);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\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 }\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 }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n if (isOpen && this.fileMenuDDB && this.fileMenuDDB.dropDown) {\n var target = this.parent.getAppendToElement();\n var popupEl = this.fileMenuDDB.dropDown.element;\n if (popupEl && !target.contains(popupEl)) {\n target.appendChild(popupEl);\n }\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 if (isOpen) {\n var target = this.parent.getAppendToElement();\n var popup = args.element && args.element.closest('.e-popup');\n if (popup && !target.contains(popup)) {\n target.appendChild(popup);\n }\n }\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 }\n var menuOpen = !!args.element.closest('.e-ribbon-menu.e-popup-open');\n var fileTriggerOpen = !!args.element.closest('.e-ribbon-file-menu.e-popup-open');\n var fileMenuOpen = !!document.querySelector('.e-ribbon-file-menu.e-popup-open');\n // True if the file trigger was clicked open, or if the ribbon menu is open and the file menu popup is actually present\n var isMenuOpen = fileTriggerOpen || (menuOpen && fileMenuOpen);\n if (!args.element.classList.contains('e-menu-caret-icon') && isMenuOpen) {\n this.fileMenuDDB.toggle();\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n 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.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\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 this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n 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 }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle_1)) {\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.isInteractableElement = function (element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n"],"names":["RibbonLayout","ItemOrientation","RibbonItemSize","DisplayMode","RibbonItemType","RibbonGroupButtonSelection","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","RibbonButtonSettings","ChildProperty","setProperties","prop","muteOnChange","call","Property","Event","apply","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","iconCss","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","BACKSTAGE_CLOSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","RIBBON_KEYTIP","SPACE","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB","RIBBON_CONTEXTUAL_TAB","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_SINGLE_BUTTON_SELECTION","RIBBON_MULTIPLE_BUTTON_SELECTION","RIBBON_GROUP_BUTTON","RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","RIBBON_GROUP_BUTTON_CONTENT","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","DROPDOWNBUTTON_HIDE","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","RIBBON_BACKSTAGE_TEXT_MENU","TAB_ID","COLLECTION_ID","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_ID","RIBBON_BACKSTAGE_MENU_ID","RIBBON_BACKSTAGE_POPUP_ID","RIBBON_FILE_MENU_LIST","RIBBON_MENU_LIST","RIBBON_FOOTER_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_GROUP_BUTTON_ID","RIBBON_KEYTIP_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","destroy","parent","createButton","item","itemEle","_this","buttonEle","createElement","id","btnSettings","appendChild","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","disabled","cssClass","trim","content","isPrimary","isToggle","created","htmlAttributes","setCustomAttributes","onclick","e","clicked","setAttribute","addOverFlowEvents","overflowButton","querySelector","buttonObj","type","toString","getComponent","element","classList","contains","toggle","removeOverFlowEvents","split","filter","join","click","controlId","getItemElement","updateButton","itemProp","getItem","tabs","merge","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","getAppendToElement","splitBtn","dropDown","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","enabled","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","requestAnimationFrame","popupEle","document","getElementById","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","ddb","appendTo","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","args","cancel","isNullOrUndefined","createTooltip","onkeydown","itemIndex","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","parseInt","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","Tooltip","getDDBItemElement","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","dropdownObj","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","popupEl","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","getSplitButtonObj","splitBtnObj","updateSplitButton","updateSplitButtonSize","getIndex","arr","condition","getTemplateFunction","template","compile","tempEle","tagName","outerHTML","tab","j","group","k","collections","collection","l","collectionIndex","getCollection","getGroup","destroyControl","moduleName","updateCommonProperty","commonProp","updateControlDisabled","disable","tabObj","Classic","displayOptions","ribbonDropDownModule","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","overflowDDB","isTooltipPresent","tooltip","title","setToolTipContent","tooltipData","tooltipContent","targetId","data","constants.RIBBON_TOOLTIP_CONTAINER","textContainer","append","header","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","ribbon","ribbonTooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","tooltipPopup","windowCollision","destroyTooltip","updateTooltipProp","attributes","elementClass","replace","addClass","RibbonGroupButton","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","btnContainerEle","count","constants.RIBBON_GROUP_BUTTON_ID","groupButtonEle","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","selection","Single","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","selected","Multiple","grpBtnIndex","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","dropdown_1","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","dropdown_2","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","targetEle_1","constants.SPACE","children","overflowGroupButtonEle","destroyDropDown","updateGroupButtonSize","RibbonGallery","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","galleryWrapper","isCollapsible","_loop_1","headerEle","isHeightDefined","this_1","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","isAdded","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","marginWidth","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","setWrapperStyle","popupContainerItems","isOverflow","forEach","ele","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","isCollideOccurs","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","constants.CONTAINER_ID","galleryIcons","galleryContainer","selectedTab","constants.CONTENT_ID","buttonEle_1","popupButton","isGroupOF_1","groupIconCss","popup_1","popupContainerEle_1","setFoucsToFirstItem","alignGalleryPopupLeft","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","offsetX","show","buttonPosition","getBoundingClientRect","left","showGalleryPopup","hideGalleryPopup","isDropdown","galleryItemsIndex","handleGalleryPopupNavigation","currentLeft","buttonRect","targetLeft","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","registeredTemplate","ref","setValue","Ribbon_1","Ribbon","Component","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","canInjectColorPickerModule","member","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","isAngular","cdkPane","popoverEl","body","getUniqueID","initializeLocale","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","l10n","L10n","groupOverflow","overflow","setLocale","resizeListener","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","colorPickerPopups","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopups","dropDownBtn","getInstance","picker","refresh","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","activePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","constants.TAB_ID","tabItems","validateItemSize","createTabItems","toolbarEle","Tab","constants.RIBBON_TAB","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","isContextual","constants.RIBBON_GROUP","elements","createGroups","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","ofTabContainer","overflowTarget","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","isBreak","tabContent","constants.TAB_CONTENT","isOverFlow","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","itemContainer","allowedSizes","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","ofGroupContainer","groupItemEle","groupElement","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","childElementCount","isHeaderVisible","removeOverflowButton","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","overflowBtnTarget","overflowHeader","groupHeader_1","constants.RIBBON_OVERFLOW_HEADER","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","Template","createTemplateContent","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","_loop_3","ribbonTab","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","isGroupOf","constants.RIBBON_OVERFLOW_TARGET","overFlowCss","getConstant","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","ribbonArgs","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","upDownKeyHandler","getElementsByClassName","currentItemIndex","findDisabledItem","templateEle","itemType","controlItem","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","size","createItems","i_6","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","itemElements","constants.DISABLED_CSS","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","constants.COLLECTION_ID","htmlAttrID","listitem","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","_loop_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","getItemIndex","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","_loop_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","grpContainer","updateHiddenElements","updateInitialProps","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","_loop_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isUpdated","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","options","Inject","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","constants.RIBBON_FILE_MENU_ID","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","menuOpen","fileTriggerOpen","fileMenuOpen","isMenuOpen","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","constants.RIBBON_BACKSTAGE_OPEN","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","ulFooterElem","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","backButton","closeBtn","constants.BACKSTAGE_CLOSE_ICON","isBackButtonClicked","itemsWrapperEle","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","ulMenuElem","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","cloneFooterMenuItem","backstageContentEle","constants.RIBBON_BACKSTAGE_CONTENT","backstageTempEle","constants.RIBBON_BACKSTAGE_TEMPLATE","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","constants.RIBBON_CONTEXTUAL_TAB","contextualTab","RibbonKeyTip","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeytipPopupOpen","isInteractableElement","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}