@syncfusion/ej2-ribbon 26.2.8 → 27.1.48
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 +18 -26
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +18 -92
- 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 +14 -13
- package/src/ribbon/items/ribbon-button.js +3 -15
- package/src/ribbon/items/ribbon-checkbox.js +3 -16
- package/src/ribbon/items/ribbon-colorpicker.js +3 -15
- package/src/ribbon/items/ribbon-combobox.js +3 -16
- package/src/ribbon/items/ribbon-dropdown.js +3 -15
- package/src/ribbon/items/ribbon-splitbutton.js +3 -15
- package/styles/bootstrap-dark-lite.css +2136 -0
- package/styles/bootstrap-dark-lite.scss +18 -0
- package/styles/bootstrap-dark.css +1174 -1244
- package/styles/bootstrap-dark.scss +1 -0
- package/styles/bootstrap-lite.css +2138 -0
- package/styles/bootstrap-lite.scss +18 -0
- package/styles/bootstrap.css +1179 -1249
- package/styles/bootstrap.scss +1 -0
- package/styles/bootstrap4-lite.css +2180 -0
- package/styles/bootstrap4-lite.scss +18 -0
- package/styles/bootstrap4.css +1181 -1273
- package/styles/bootstrap4.scss +1 -0
- package/styles/bootstrap5-dark-lite.css +2211 -0
- package/styles/bootstrap5-dark-lite.scss +18 -0
- package/styles/bootstrap5-dark.css +1175 -1263
- package/styles/bootstrap5-dark.scss +1 -0
- package/styles/bootstrap5-lite.css +2211 -0
- package/styles/bootstrap5-lite.scss +18 -0
- package/styles/bootstrap5.3-lite.css +2215 -0
- package/styles/bootstrap5.3-lite.scss +18 -0
- package/styles/bootstrap5.3.css +2841 -0
- package/styles/bootstrap5.3.scss +19 -0
- package/styles/bootstrap5.css +1173 -1261
- package/styles/bootstrap5.scss +1 -0
- package/styles/fabric-dark-lite.css +2112 -0
- package/styles/fabric-dark-lite.scss +18 -0
- package/styles/fabric-dark.css +1176 -1245
- package/styles/fabric-dark.scss +1 -0
- package/styles/fabric-lite.css +2113 -0
- package/styles/fabric-lite.scss +18 -0
- package/styles/fabric.css +1176 -1238
- package/styles/fabric.scss +1 -0
- package/styles/fluent-dark-lite.css +2203 -0
- package/styles/fluent-dark-lite.scss +18 -0
- package/styles/fluent-dark.css +1179 -1254
- package/styles/fluent-dark.scss +1 -0
- package/styles/fluent-lite.css +2203 -0
- package/styles/fluent-lite.scss +18 -0
- package/styles/fluent.css +1177 -1252
- package/styles/fluent.scss +1 -0
- package/styles/fluent2-lite.css +2301 -0
- package/styles/fluent2-lite.scss +18 -0
- package/styles/fluent2.css +1264 -1250
- package/styles/fluent2.scss +1 -0
- package/styles/highcontrast-light-lite.css +2129 -0
- package/styles/highcontrast-light-lite.scss +17 -0
- package/styles/highcontrast-light.css +1163 -1222
- package/styles/highcontrast-light.scss +1 -0
- package/styles/highcontrast-lite.css +2134 -0
- package/styles/highcontrast-lite.scss +18 -0
- package/styles/highcontrast.css +1162 -1221
- package/styles/highcontrast.scss +1 -0
- package/styles/material-dark-lite.css +2272 -0
- package/styles/material-dark-lite.scss +18 -0
- package/styles/material-dark.css +1176 -1229
- package/styles/material-dark.scss +1 -0
- package/styles/material-lite.css +2278 -0
- package/styles/material-lite.scss +18 -0
- package/styles/material.css +1176 -1250
- package/styles/material.scss +1 -0
- package/styles/material3-dark-lite.css +2214 -0
- package/styles/material3-dark-lite.scss +18 -0
- package/styles/material3-dark.css +1199 -1278
- package/styles/material3-dark.scss +1 -0
- package/styles/material3-lite.css +2216 -0
- package/styles/material3-lite.scss +18 -0
- package/styles/material3.css +1199 -1278
- package/styles/material3.scss +1 -0
- package/styles/ribbon/_bds-definition.scss +2 -0
- package/styles/ribbon/_bigger.scss +530 -0
- package/styles/ribbon/_bootstrap-dark-definition.scss +2 -0
- package/styles/ribbon/_bootstrap-definition.scss +2 -0
- package/styles/ribbon/_bootstrap4-definition.scss +2 -0
- package/styles/ribbon/_bootstrap5-definition.scss +2 -0
- package/styles/ribbon/_bootstrap5.3-definition.scss +130 -129
- package/styles/ribbon/_fabric-dark-definition.scss +2 -0
- package/styles/ribbon/_fabric-definition.scss +2 -0
- package/styles/ribbon/_fluent-definition.scss +2 -0
- package/styles/ribbon/_fluent2-definition.scss +11 -9
- package/styles/ribbon/_fusionnew-definition.scss +2 -0
- package/styles/ribbon/_highcontrast-definition.scss +2 -0
- package/styles/ribbon/_highcontrast-light-definition.scss +2 -0
- package/styles/ribbon/_layout.scss +75 -493
- package/styles/ribbon/_material-dark-definition.scss +2 -0
- package/styles/ribbon/_material-definition.scss +2 -0
- package/styles/ribbon/_material3-definition.scss +2 -0
- package/styles/ribbon/_tailwind-definition.scss +2 -0
- package/styles/ribbon/_theme.scss +15 -22
- package/styles/ribbon/bootstrap-dark.css +1174 -1244
- package/styles/ribbon/bootstrap-dark.scss +1 -0
- package/styles/ribbon/bootstrap.css +1179 -1249
- package/styles/ribbon/bootstrap.scss +1 -0
- package/styles/ribbon/bootstrap4.css +1181 -1273
- package/styles/ribbon/bootstrap4.scss +1 -0
- package/styles/ribbon/bootstrap5-dark.css +1175 -1263
- package/styles/ribbon/bootstrap5-dark.scss +1 -0
- package/styles/ribbon/bootstrap5.3.css +2841 -0
- package/styles/ribbon/bootstrap5.3.scss +19 -0
- package/styles/ribbon/bootstrap5.css +1173 -1261
- package/styles/ribbon/bootstrap5.scss +1 -0
- package/styles/ribbon/fabric-dark.css +1176 -1245
- package/styles/ribbon/fabric-dark.scss +1 -0
- package/styles/ribbon/fabric.css +1176 -1238
- package/styles/ribbon/fabric.scss +1 -0
- package/styles/ribbon/fluent-dark.css +1179 -1254
- package/styles/ribbon/fluent-dark.scss +1 -0
- package/styles/ribbon/fluent.css +1177 -1252
- package/styles/ribbon/fluent.scss +1 -0
- package/styles/ribbon/fluent2.css +1264 -1250
- package/styles/ribbon/fluent2.scss +1 -0
- package/styles/ribbon/highcontrast-light.css +1163 -1222
- package/styles/ribbon/highcontrast-light.scss +1 -0
- package/styles/ribbon/highcontrast.css +1162 -1221
- package/styles/ribbon/highcontrast.scss +1 -0
- package/styles/ribbon/material-dark.css +1176 -1229
- package/styles/ribbon/material-dark.scss +1 -0
- package/styles/ribbon/material.css +1176 -1250
- package/styles/ribbon/material.scss +1 -0
- package/styles/ribbon/material3-dark.css +1199 -1278
- package/styles/ribbon/material3-dark.scss +1 -0
- package/styles/ribbon/material3.css +1199 -1278
- package/styles/ribbon/material3.scss +1 -0
- package/styles/ribbon/tailwind-dark.css +1177 -1249
- package/styles/ribbon/tailwind-dark.scss +1 -0
- package/styles/ribbon/tailwind.css +1179 -1251
- package/styles/ribbon/tailwind.scss +1 -0
- package/styles/tailwind-dark-lite.css +2234 -0
- package/styles/tailwind-dark-lite.scss +18 -0
- package/styles/tailwind-dark.css +1177 -1249
- package/styles/tailwind-dark.scss +1 -0
- package/styles/tailwind-lite.css +2234 -0
- package/styles/tailwind-lite.scss +18 -0
- package/styles/tailwind.css +1179 -1251
- package/styles/tailwind.scss +1 -0
- package/hotfix/26.1.35_Vol2.txt +0 -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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { 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 var htmlAttr = __assign({}, btnSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.id;\n }\n setCustomAttributes(buttonEle, htmlAttr);\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 buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { 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 var htmlAttr = {};\n if (checkBoxSettings.htmlAttributes) {\n htmlAttr = __assign({}, checkBoxSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.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: htmlAttr,\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 checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { 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 var htmlAttr = __assign({}, colorPickerSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.id;\n }\n setCustomAttributes(inputEle, htmlAttr);\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 colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { 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 var htmlAttr = {};\n if (comboBoxSettings.htmlAttributes) {\n htmlAttr = __assign({}, comboBoxSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.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: htmlAttr,\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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n var htmlAttr = __assign({}, dropDownSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.id;\n }\n setCustomAttributes(buttonEle, htmlAttr);\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 beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n var htmlAttr = __assign({}, splitButtonSettings.htmlAttributes);\n if (htmlAttr.id) {\n delete htmlAttr.id;\n }\n setCustomAttributes(buttonEle, htmlAttr);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n 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.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { 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.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 }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\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 groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\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 groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @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 var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n 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 galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\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 /**\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 if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var 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 = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.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 = 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 _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup.height);\n dropdown.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, 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.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 } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\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 () {\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 };\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 if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\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 var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\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 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 = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @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 = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\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) {\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.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\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 if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _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 });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\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 setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\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","__assign","assign","t","s","n","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","htmlAttr","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","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","dropDown","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","popupEle","document","getSplitButtonObj","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","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","itemsCount","eventArgs_1","switchGroupButton","containerEle","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","constants.SPACE","children","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","paddingTop","paddingBottom","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","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","popupContainerItems","isCollideOccurs","forEach","ele","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","popupButton","groupIconCss","popupContainerEle_1","setFoucsToFirstItem","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","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","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","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","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","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","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","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","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 buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n 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 checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n 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 colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n 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: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n 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 beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n 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.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.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { 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.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 }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\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 groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\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 groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @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 var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n 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 galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\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 /**\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 if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var 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 = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.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 = 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 _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup.height);\n dropdown.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, 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.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 } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\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 () {\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 };\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 if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\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 var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\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 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 = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @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 = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\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) {\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.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\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 if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _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 });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\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 setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\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","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","dropDown","getOverflowDropDownPopup","contentEle","tabIndex","groups","groupIndex","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","getAttribute","popupEle","document","getSplitButtonObj","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","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","isSelected","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","itemID","groupButtonHeader","constants.HEADER_ID","targetEle","isOverflowPopup","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","isIconOnly","constants.SPACE","children","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","paddingTop","paddingBottom","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","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","popupContainerItems","isCollideOccurs","forEach","ele","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","popupButton","groupIconCss","popupContainerEle_1","setFoucsToFirstItem","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","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","getUniqueID","constants.RTL_CSS","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","elem","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","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","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","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","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","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","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips"],"mappings":"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"}
|