@syncfusion/ej2-ribbon 33.2.5 → 33.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-ribbon.umd.min.js +2 -2
- package/dist/ej2-ribbon.umd.min.js.map +1 -1
- package/dist/es6/ej2-ribbon.es2015.js +1 -1
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +1 -1
- package/dist/es6/ej2-ribbon.es5.js.map +1 -1
- package/dist/global/ej2-ribbon.min.js +2 -2
- package/dist/global/ej2-ribbon.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +5 -5
- package/src/ribbon/base/ribbon.js +1 -1
|
@@ -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: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n 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 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: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n 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 (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 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 windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","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 = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle = 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 = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n }\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 document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var 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 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n 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.dropDown.width = formatUnit(popup_1.width);\n }\n if (popup_1.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup_1.height);\n dropdown.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 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, NotifyPropertyChanges, Property, remove, removeClass, L10n } 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, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\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.l10n = null;\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 var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n }\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","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","splitBtn","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","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","ddb","getAppendToElement","dropDown","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","popupEle","document","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","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","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","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","body","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","getElementById","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","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: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n 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 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: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n 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 (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 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 windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","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 = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle = 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 = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n }\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 document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var 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 = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n 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.dropDown.width = formatUnit(popup_1.width);\n }\n if (popup_1.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup_1.height);\n dropdown.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 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, NotifyPropertyChanges, Property, remove, removeClass, L10n } 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.l10n = null;\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 var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n }\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","beforeTileRender","open","select","wrapper","EventHandler","toggleWrapperHover","bind","isAdd","colorPickerEle","activeLayout","className","innerHTML","insertBefore","firstChild","colorPickerObj","splitBtn","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","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","DropDownButton","closeActionEvents","items","createPopupOnClick","beforeItemRender","ddb","getAppendToElement","dropDown","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","popupEle","document","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","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","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","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","body","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","getElementById","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","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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"}
|