@syncfusion/ej2-ribbon 28.2.3 → 29.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +1 -1
  2. package/dist/ej2-ribbon.umd.min.js +2 -2
  3. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-ribbon.es2015.js +42 -13
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +42 -13
  7. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  8. package/dist/global/ej2-ribbon.min.js +2 -2
  9. package/dist/global/ej2-ribbon.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +21 -23
  12. package/src/ribbon/items/ribbon-button.js +3 -1
  13. package/src/ribbon/items/ribbon-checkbox.js +3 -1
  14. package/src/ribbon/items/ribbon-colorpicker.js +3 -1
  15. package/src/ribbon/items/ribbon-dropdown.js +7 -1
  16. package/src/ribbon/items/ribbon-splitbutton.js +7 -1
  17. package/src/ribbon/modules/ribbon-keytip.d.ts +1 -0
  18. package/src/ribbon/modules/ribbon-keytip.js +19 -8
  19. package/styles/bds-lite.css +546 -451
  20. package/styles/bds.css +709 -590
  21. package/styles/bootstrap-dark-lite.css +531 -472
  22. package/styles/bootstrap-dark.css +694 -611
  23. package/styles/bootstrap-lite.css +511 -452
  24. package/styles/bootstrap.css +674 -591
  25. package/styles/bootstrap4-lite.css +517 -458
  26. package/styles/bootstrap4.css +680 -597
  27. package/styles/bootstrap5-dark-lite.css +559 -500
  28. package/styles/bootstrap5-dark.css +722 -639
  29. package/styles/bootstrap5-lite.css +539 -480
  30. package/styles/bootstrap5.3-lite.css +518 -459
  31. package/styles/bootstrap5.3.css +683 -600
  32. package/styles/bootstrap5.css +702 -619
  33. package/styles/fabric-dark-lite.css +527 -468
  34. package/styles/fabric-dark.css +690 -607
  35. package/styles/fabric-lite.css +518 -459
  36. package/styles/fabric.css +681 -598
  37. package/styles/fluent-dark-lite.css +517 -458
  38. package/styles/fluent-dark.css +680 -597
  39. package/styles/fluent-lite.css +517 -458
  40. package/styles/fluent.css +680 -597
  41. package/styles/fluent2-lite.css +530 -469
  42. package/styles/fluent2.css +721 -636
  43. package/styles/highcontrast-light-lite.css +514 -451
  44. package/styles/highcontrast-light.css +677 -590
  45. package/styles/highcontrast-lite.css +514 -451
  46. package/styles/highcontrast.css +677 -590
  47. package/styles/material-dark-lite.css +512 -453
  48. package/styles/material-dark.css +676 -593
  49. package/styles/material-lite.css +511 -452
  50. package/styles/material.css +674 -591
  51. package/styles/material3-dark-lite.css +511 -452
  52. package/styles/material3-dark.css +674 -591
  53. package/styles/material3-lite.css +511 -452
  54. package/styles/material3.css +674 -591
  55. package/styles/ribbon/_bds-definition.scss +6 -1
  56. package/styles/ribbon/_bigger.scss +79 -56
  57. package/styles/ribbon/_bootstrap-dark-definition.scss +10 -3
  58. package/styles/ribbon/_bootstrap-definition.scss +7 -2
  59. package/styles/ribbon/_bootstrap4-definition.scss +12 -5
  60. package/styles/ribbon/_bootstrap5-definition.scss +7 -2
  61. package/styles/ribbon/_bootstrap5.3-definition.scss +10 -5
  62. package/styles/ribbon/_fabric-dark-definition.scss +7 -2
  63. package/styles/ribbon/_fabric-definition.scss +7 -2
  64. package/styles/ribbon/_fluent-definition.scss +7 -2
  65. package/styles/ribbon/_fluent2-definition.scss +8 -3
  66. package/styles/ribbon/_fusionnew-definition.scss +6 -1
  67. package/styles/ribbon/_highcontrast-definition.scss +7 -2
  68. package/styles/ribbon/_highcontrast-light-definition.scss +7 -2
  69. package/styles/ribbon/_layout.scss +100 -58
  70. package/styles/ribbon/_material-dark-definition.scss +9 -4
  71. package/styles/ribbon/_material-definition.scss +7 -2
  72. package/styles/ribbon/_material3-definition.scss +7 -2
  73. package/styles/ribbon/_tailwind-definition.scss +7 -2
  74. package/styles/ribbon/_tailwind3-definition.scss +13 -8
  75. package/styles/ribbon/_theme.scss +108 -51
  76. package/styles/ribbon/bds.css +709 -590
  77. package/styles/ribbon/bootstrap-dark.css +694 -611
  78. package/styles/ribbon/bootstrap.css +674 -591
  79. package/styles/ribbon/bootstrap4.css +680 -597
  80. package/styles/ribbon/bootstrap5-dark.css +722 -639
  81. package/styles/ribbon/bootstrap5.3.css +683 -600
  82. package/styles/ribbon/bootstrap5.css +702 -619
  83. package/styles/ribbon/fabric-dark.css +690 -607
  84. package/styles/ribbon/fabric.css +681 -598
  85. package/styles/ribbon/fluent-dark.css +680 -597
  86. package/styles/ribbon/fluent.css +680 -597
  87. package/styles/ribbon/fluent2.css +721 -636
  88. package/styles/ribbon/highcontrast-light.css +677 -590
  89. package/styles/ribbon/highcontrast.css +677 -590
  90. package/styles/ribbon/material-dark.css +676 -593
  91. package/styles/ribbon/material.css +674 -591
  92. package/styles/ribbon/material3-dark.css +674 -591
  93. package/styles/ribbon/material3.css +674 -591
  94. package/styles/ribbon/tailwind-dark.css +710 -591
  95. package/styles/ribbon/tailwind.css +710 -591
  96. package/styles/ribbon/tailwind3.css +716 -597
  97. package/styles/tailwind-dark-lite.css +547 -452
  98. package/styles/tailwind-dark.css +710 -591
  99. package/styles/tailwind-lite.css +547 -452
  100. package/styles/tailwind.css +710 -591
  101. package/styles/tailwind3-lite.css +553 -458
  102. package/styles/tailwind3.css +716 -597
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.es2015.js","sources":["../src/es6/ribbon/base/interface.js","../src/es6/ribbon/models/ribbon-button-settings.js","../src/es6/ribbon/models/ribbon-checkbox-settings.js","../src/es6/ribbon/models/ribbon-colorpicker-settings.js","../src/es6/ribbon/models/ribbon-combobox-settings.js","../src/es6/ribbon/models/ribbon-dropdown-settings.js","../src/es6/ribbon/models/ribbon-splitbutton-settings.js","../src/es6/ribbon/models/ribbon-tooltip.js","../src/es6/ribbon/models/ribbon-group-button-item.js","../src/es6/ribbon/models/ribbon-group-button-settings.js","../src/es6/ribbon/models/ribbon-gallery-item.js","../src/es6/ribbon/models/ribbon-gallery-group.js","../src/es6/ribbon/models/ribbon-gallery-settings.js","../src/es6/ribbon/models/ribbon-item.js","../src/es6/ribbon/models/ribbon-collection.js","../src/es6/ribbon/models/ribbon-group.js","../src/es6/ribbon/models/ribbon-tab.js","../src/es6/ribbon/models/ribbon-file-menu-settings.js","../src/es6/ribbon/models/ribbon-back-button.js","../src/es6/ribbon/models/ribbon-backstage-item.js","../src/es6/ribbon/models/ribbon-back-stage-settings.js","../src/es6/ribbon/models/ribbon-contextual-tab-settings.js","../src/es6/ribbon/base/constant.js","../src/es6/ribbon/items/ribbon-button.js","../src/es6/ribbon/items/ribbon-checkbox.js","../src/es6/ribbon/items/ribbon-colorpicker.js","../src/es6/ribbon/items/ribbon-combobox.js","../src/es6/ribbon/items/ribbon-dropdown.js","../src/es6/ribbon/items/ribbon-splitbutton.js","../src/es6/ribbon/base/utils.js","../src/es6/ribbon/items/ribbon-groupbutton.js","../src/es6/ribbon/items/ribbon-gallery.js","../src/es6/ribbon/base/ribbon.js","../src/es6/ribbon/modules/ribbon-filemenu.js","../src/es6/ribbon/modules/ribbon-backstage.js","../src/es6/ribbon/modules/ribbon-contextualtab.js","../src/es6/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 __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 */\nexport class RibbonButtonSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonCheckBoxSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonColorPickerSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonComboBoxSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonDropDownSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonSplitButtonSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonTooltip extends ChildProperty {\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","var __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 */\nexport class RibbonGroupButtonItem extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonGroupButtonSettings extends ChildProperty {\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","var __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 */\nexport class RibbonGalleryItem extends ChildProperty {\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","var __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 */\nexport class RibbonGalleryGroup extends ChildProperty {\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","var __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 */\nexport class RibbonGallerySettings extends ChildProperty {\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","var __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 */\nexport class RibbonItem extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonCollection extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonGroup extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonTab extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class FileMenuSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class BackstageBackButton extends ChildProperty {\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","var __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 */\nexport class BackstageItem extends ChildProperty {\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","var __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 */\nexport class BackStageMenu extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonContextualTabSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport const ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport const EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport const BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport const OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport const VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport const DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport const RTL_CSS = 'e-rtl';\n/** @hidden */\nexport const RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport const RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport const RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport const RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport const RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport const SPACE = ' ';\n/** @hidden */\nexport const HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport const HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport const RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport const RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport const RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport const RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport const RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport const RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport const RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport const RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport const RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport const RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport const RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport const TAB_CONTENT = 'e-content';\n/** @hidden */\nexport const RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport const RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport const RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport const RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport const RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport const RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport const RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport const RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport const RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport const RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport const RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport const RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport const RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport const RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport const RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport const RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport const RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport const RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport const RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport const RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport const RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport const RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport const RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport const DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport const DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport const RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport const RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport const RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport const RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport const RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport const RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport const RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport const RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport const RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport const RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport const RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport const RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport const TAB_ID = '_tab';\n/** @hidden */\nexport const GROUP_ID = '_group';\n/** @hidden */\nexport const COLLECTION_ID = '_collection';\n/** @hidden */\nexport const ITEM_ID = '_item';\n/** @hidden */\nexport const COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport const OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport const GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport const HEADER_ID = '_header';\n/** @hidden */\nexport const LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport const CONTENT_ID = '_content';\n/** @hidden */\nexport const CONTAINER_ID = '_container';\n/** @hidden */\nexport const OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport const DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport const RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport const RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport const RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport const RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport const RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport const RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport const RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport const 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 */\nexport class RibbonButton {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonButton';\n }\n destroy() {\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 createButton(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const 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 = (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n const buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = (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 removeOverFlowEvents(item, itemEle) {\n const buttonEle = itemEle.querySelector('#' + item.id);\n const buttonObj = getComponent(buttonEle, Button);\n let cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = (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 click(controlId) {\n const buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n const 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 updateButton(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n const buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n const 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 updateButtonSize(element, item) {\n const 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}\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 */\nexport class RibbonCheckBox {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonCheckBox';\n }\n destroy() {\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 createCheckBox(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const 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: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n const checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = (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 removeOverFlowEvents(item, itemEle) {\n const inputEle = itemEle.querySelector('#' + item.id);\n const checkBoxObj = getComponent(inputEle, CheckBox);\n let cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = (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 click(controlId) {\n const inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n const 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 updateCheckBox(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n const 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 const checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n }\n}\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 */\nexport class RibbonColorPicker {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonColorPicker';\n }\n destroy() {\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 createColorPicker(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const colorPickerSettings = item.colorPickerSettings;\n const 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: () => {\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: (e) => {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(this, e);\n }\n },\n open: () => {\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 const 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 toggleWrapperHover(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 addOverFlowEvents(item, itemEle, overflowButton) {\n const colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n const 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 const colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n const 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 const splitBtn = colorPickerObj['splitBtn'];\n let target;\n colorPickerObj.beforeClose = (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 = () => {\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 removeOverFlowEvents(item, itemEle) {\n const colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n const label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n const colorPickerEle = itemEle.querySelector('#' + item.id);\n const colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n let cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n const 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 = () => {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(this);\n }\n };\n }\n getColorPickerObj(controlId) {\n const 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 getValue(controlId, value, type) {\n const 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 toggle(controlId) {\n const 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 updateColorPicker(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n const 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 const 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 unwireColorPickerEvents(element) {\n const colorPickerObj = getComponent(element, ColorPicker);\n const wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n }\n}\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 */\nexport class RibbonComboBox {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonComboBox';\n }\n destroy() {\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 createComboBox(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const 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: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n const 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 const inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n const comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = (e) => {\n const 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 removeOverFlowEvents(item, itemEle) {\n const comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n const label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n const inputEle = itemEle.querySelector('#' + item.id);\n const comboBoxObj = getComponent(inputEle, ComboBox);\n let cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = (e) => {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(this, e);\n }\n };\n }\n getComboBoxObj(controlId) {\n const 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 filter(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 hidePopup(controlId) {\n const 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 showPopup(controlId) {\n const 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 updateComboBox(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n const 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 const comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n }\n}\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 */\nexport class RibbonDropDown {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonDropDown';\n }\n destroy() {\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 createDropDown(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const dropDownSettings = item.dropDownSettings;\n const 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: (e) => {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n const dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n let target;\n dropdown.beforeClose = (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 = (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 removeOverFlowEvents(item, itemEle) {\n const dropdownElement = itemEle.querySelector('#' + item.id);\n const dropdown = getComponent(dropdownElement, DropDownButton);\n let cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = (e) => {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(this, e);\n }\n };\n dropdown.beforeClose = (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 createOverFlowDropDown(id, name, iconCss, groupEle, overflowEle, enableRtl) {\n this.enableRtl = enableRtl;\n const buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n const 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: (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 = () => { this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = (e) => { this.keyActionHandler(e, groupEle), this; };\n return dropdown;\n }\n keyActionHandler(e, target) {\n const controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n const templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n const items = controlElements.concat(templateElements);\n const comboBoxElements = target.querySelectorAll('.e-combobox');\n let comboBoxEle;\n if (comboBoxElements) {\n for (let 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 (let 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 handleNavigation(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 let 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 let 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 focusLauncherIcon(e, items) {\n const groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n let 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 updateItemIndex(e, items, enableRtl) {\n let 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 let 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 let 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 removeOverFlowDropDown(dropdownElement) {\n const dropdown = getComponent(dropdownElement, DropDownButton);\n const 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 getDDBItemElement(dropdownElement, id) {\n const dropdown = getComponent(dropdownElement, DropDownButton);\n const 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 getOverflowDropDownPopup(itemProp, contentEle) {\n const dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n const dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n }\n getDropDownObj(controlId) {\n const 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 addItems(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 removeItems(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 toggle(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 updateDropDown(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n const btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n const 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 updateDropDownSize(element, item) {\n const control = getComponent(element, DropDownButton);\n let cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter((value) => 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}\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 */\nexport class RibbonSplitButton {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonSplitButton';\n }\n destroy() {\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 createSplitButton(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const splitButtonSettings = item.splitButtonSettings;\n const cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n const 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: (e) => {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: () => {\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: () => {\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: (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 const dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = (e) => {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n const wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', () => { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', () => { 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 addOverFlowEvents(item, itemEle, overflowButton) {\n const splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n const splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n const dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n const ddbId = dropdownEle.getAttribute('id');\n const popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = (e) => {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = (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 let target;\n splitbutton.beforeClose = (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 = (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 = (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 removeOverFlowEvents(item, itemEle) {\n const splitButtonEle = itemEle.querySelector('#' + item.id);\n const splitbutton = getComponent(splitButtonEle, SplitButton);\n let cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = (e) => {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(this, e);\n }\n };\n splitbutton.click = (e) => {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(this, e);\n }\n };\n splitbutton.close = (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 setContent(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 getSplitButtonObj(controlId) {\n const 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 addItems(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 removeItems(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 toggle(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 updateSplitButton(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n const btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n const 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 updateSplitButtonSize(element, item) {\n const control = getComponent(element, SplitButton);\n let cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter((value) => 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}\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 (let 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 let content = '';\n try {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const group = tab.groups[parseInt(j.toString(), 10)];\n for (let k = 0; k < group.collections.length; k++) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let l = 0; l < collection.items.length; l++) {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const group = tab.groups[parseInt(j.toString(), 10)];\n for (let k = 0; k < group.collections.length; k++) {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const 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 const 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 const 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 const 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 let 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 let 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 const 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 const targetId = args.target.getAttribute('id');\n const dataObj = tooltipData.filter((e) => e.id === targetId)[0];\n const data = dataObj.data;\n const 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 const header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n const textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n const customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n const 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 const 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 const 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 const 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 (const key in attributes) {\n if (key === 'class') {\n const elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n const prevStyles = element.getAttribute('style') || '';\n const 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 */\nexport class RibbonGroupButton {\n constructor(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n getModuleName() {\n return 'ribbonGroupButton';\n }\n destroy() {\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 createGroupButton(item, itemElement) {\n const groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n const 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 (let i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n const 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 const 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 let dropdownIcon;\n let activeEleCount = 0;\n let count = 0;\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (let 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 const 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 const dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = () => {\n this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = (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 groupButtonClicked(itemIndex, item, grpBtnSettings) {\n const previousItems = [];\n const selectingItems = [];\n const selectedItems = [];\n let groupButtonEle;\n let dropdown;\n for (let 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 const 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 (let 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 let activeEleCount = 0;\n for (let 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 let dropdownIcon = null;\n let 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 (let 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 const eventArgs = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs);\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 switchGroupButton(item, itemElement) {\n const groupBtnSettings = item.groupButtonSettings;\n let dropdownIcon = null;\n let activeEleCount = 0;\n let itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n const containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (let 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 const 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 const dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = () => {\n this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = (e) => {\n if (this.parent.activeLayout === 'Simplified') {\n this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n const groupButtonEle = itemElement.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n }\n handleFocusState(item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n const 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 addGroupButtonHeader(itemID, groupBtnSettings, popupEle) {\n const 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 handleGroupButtonNavigation(e, item) {\n const groupButtonEle = document.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const targetEle = dropdown.target;\n let 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 const 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 addOverFlowEvents(item, itemEle, overflowButton) {\n const groupBtnSettings = item.groupButtonSettings;\n let isIconOnly = true;\n const groupButtonEle = itemEle.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n const targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (let 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 = () => {\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 removeOverFlowEvents(item, itemEle) {\n const groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n let cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter((value) => 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 destroyDropDown(item) {\n const groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const 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 updateGroupButtonSize(itemElement, item) {\n const groupBtnSettings = item.groupButtonSettings;\n let buttonEle;\n for (let 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 const 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}\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 */\nexport class RibbonGallery {\n constructor(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n const 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 getModuleName() {\n return 'ribbonGallery';\n }\n destroy() {\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 createGallery(item, itemEle) {\n const gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n const 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 = (args) => {\n const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n const 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 = (args) => {\n const popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n let popupID;\n let itemProp;\n for (let i = 0; i < popupEle.length; i++) {\n const 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 renderGalleryItems(gallerySettings, isPopup, id, itemEle) {\n let galleryContainerEle;\n let galleryEle;\n const itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n const 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 for (let i = 0; i < gallerySettings.groups.length; i++) {\n let isHeightDefined = false;\n galleryContainerEle = this.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 for (let j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n galleryEle = this.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n const itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this.count;\n }\n }\n this.count = this.count + 1;\n galleryEle.onclick = (e) => {\n this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = (e) => {\n const 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.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 const iconEle = this.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.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.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.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this.isAdded = true;\n break;\n }\n }\n if (this.isAdded && !isPopup) {\n 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 const headerEle = (this.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 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 setWrapperWidth(itemCount, galleryWrapper, gallerySettings, itemID) {\n let count = 1;\n let itemsWidth = 0;\n let isWidthApplied = false;\n for (let i = 0; i < gallerySettings.groups.length; i++) {\n for (let j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n const galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n const itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n const paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n const 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 checkAvailableHeight(activeContent) {\n const galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (let n = 0; n < galleryWrapperItems.length; n++) {\n let count = 0;\n let simplifiedItemsCount = 0;\n let isHeight = false;\n const galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n const itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n let galleryWrapperHeight = galleryWrapper.offsetHeight;\n const itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (let i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (let j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n const 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 let itemsValues = 0;\n const itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n const 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 checkCollision(popup, popupEle, offsetValue = 0) {\n let paddingWidth = 0;\n let marginWidth = 0;\n if (popupEle) {\n const windowWidth = window.innerWidth;\n let screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n const 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 const popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach((ele) => {\n ele.style.flexFlow = 'wrap';\n });\n }\n let isCollideOccurs = false;\n for (let i = 0; i < popupContainerItems.length; i++) {\n let itemsWidth = 0;\n for (let j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n const 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((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((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 setGalleryPopupHeight(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 createPopup(item, buttonEle) {\n const 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 const gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n const 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 switchGalleryItems(activeLayout, itemID) {\n const itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n const itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n const galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n const galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (let 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 (let n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (let 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 const 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 addOverFlowEvents(item, itemEle) {\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n const 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((ele) => {\n ele.classList.add('e-hidden');\n });\n const popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n const itemProp = getItem(this.parent.tabs, item.id);\n let iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n const content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (let i = 0; i < item.gallerySettings.groups.length; i++) {\n for (let 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 const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n const popup = getComponent(popupEle, Popup);\n const popupContainerEle = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n const dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: () => {\n this.setFoucsToFirstItem(popupContainerEle, true, item.id);\n },\n beforeClose: (args) => {\n const 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 removeOverFlowEvents(item, itemEle) {\n const 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((ele) => {\n ele.classList.remove('e-hidden');\n });\n const galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n const dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n }\n setActiveState(galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n let previousItem;\n let currentItem;\n const itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n let selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n const popupEle = document.querySelector('#' + itemID + '_popupContainer');\n const popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (let i = 0; i < gallerySettings.groups.length; i++) {\n for (let 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 const galleryItem = document.getElementById(galleryEle.id);\n let galleryItemPopup;\n const 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 (let 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 const selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n const galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (let 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 popupEvents(args, gallerySettings, name, isOpen) {\n const 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 showPopup(popup, popupEle, args, gallerySettings, itemID) {\n const isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n const buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n const buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n const 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 hidePopup(popup, popupEle, args, gallerySettings, itemID) {\n const isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n const 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 showGalleryPopup(id) {\n const itemProp = getItem(this.parent.tabs, id);\n const popupEle = document.querySelector('#' + id + '_galleryPopup');\n const 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 hideGalleryPopup(id) {\n const itemProp = getItem(this.parent.tabs, id);\n const popupEle = document.querySelector('#' + id + '_galleryPopup');\n const popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n }\n setFoucsToFirstItem(popupEle, isDropdown, itemID, popup, gallerySettings) {\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = (e) => {\n this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n }\n handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n const 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 createGalleryTemplate(galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n const templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n const 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 createGalleryPopupTemplate(galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n const templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n const 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}\n","var __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};\nvar Ribbon_1;\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 */\nlet Ribbon = Ribbon_1 = class Ribbon extends Component {\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 constructor(options, element) {\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n super(options, element);\n }\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n render() {\n this.initialize();\n }\n preRender() {\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 getPersistData() {\n return this.addOnPersist(['activeLayout']);\n }\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n getModuleName() {\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 requiredModules() {\n const 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 const canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n const 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 initialize() {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn', ...(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 const 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 wireEvents() {\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 wireKeyboardEvent() {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n keyActionHandler(e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n const controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n const templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n const galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n const ribbonControls = controlElements.concat(templateElements, galleryElements);\n const comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n let comboBoxEle;\n if (comboBoxElements) {\n for (let 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 (let 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 let 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 handleNavigation(e, enableRtl, ribbonControls) {\n let groupContainer;\n let 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 const 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 let 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 let launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n const items = groupContainer.querySelectorAll('.e-ribbon-item');\n const 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 const groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n const 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 const 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 const 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 let 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 const 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 let 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 resizeHandler() {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n const scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n const 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 (let i = 0; i < activePopup.length; i++) {\n const dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n const galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n const popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n mouseEventHandler() {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n keytipActionHandler(e) {\n if (this.enableKeyTips) {\n let isKeyTipPresent = false;\n const keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n const 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 (let i = 0; i < activePopup.length; i++) {\n const dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n const 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 const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (let i = 0; i < keyTipItems.length; i++) {\n const 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 checkKeyTipPresent(keyTip, length) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (let i = 0; i < keyTipItems.length; i++) {\n const 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 removeKeytip(keyTip) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (let i = 0; i < keyTipItems.length; i++) {\n const keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n }\n addKeyTip(tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n let 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 const keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][`${type}`];\n for (let 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 renderTabs() {\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 const tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n const 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 const toolbarEle = tabEle.querySelector('.e-toolbar');\n const 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 minimize(val) {\n if (val === this.isMinimized) {\n return;\n }\n const eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, (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 toggleLayout(args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n const eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n }\n tabCreated() {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n }\n ribbonTabSelected(e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n const selectedTabId = e.selectedItem.getAttribute('data-id');\n let selectedIndex = getIndex(this.tabs, ((tab) => (tab.id === selectedTabId)));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n const 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 const elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n const isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n const eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (let i = 0; i < this.itemsModel.length; i++) {\n const 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 const overflowTarget = this.overflowDDB.target;\n const ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n const 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 updateSelectedState(tabID) {\n if (this.contextualTabs.length) {\n for (let i = 0; i < this.contextualTabs.length; i++) {\n let isSelected = false;\n for (let 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 checkOverflow(tabIndex, activeContent) {\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n const 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 let 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 let 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 addTabOverflowKeyTip() {\n const 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 checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent) {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let i = (tab.groups.length - 1); (i >= 0); i--) {\n const group = tab.groups[parseInt(i.toString(), 10)];\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n const 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 const itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n const 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 checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent) {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let i = (tab.groups.length - 1); (i >= 0); i--) {\n const group = tab.groups[parseInt(i.toString(), 10)];\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n const 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 const itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n const valString = itemContainer.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n const 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 createSimplfiedOverflow(tabContent, activeContent, tabIndex) {\n const orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n let isEmptyCollection;\n for (let i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n let isGroupUpdated = false;\n const group = orderedGroups[parseInt(i.toString(), 10)];\n const groupEle = tabContent.querySelector('#' + group.id);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n const collection = group.collections[parseInt((j - 1).toString(), 10)];\n const collectionEle = groupEle.querySelector('#' + collection.id);\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n const item = collection.items[k - 1];\n const itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n let groupHidden = false;\n let itemHidden = false;\n let isAllItemHidden = false;\n let isEmptyCollection = false;\n let groupItems;\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 (let i = 0; i < groupItems.length; i++) {\n groupItems[parseInt(i.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 = 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 (let i = 0; i < groupItems.length; i++) {\n groupItems[parseInt(i.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) {\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 const 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 const 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 checkEmptyCollection(itemsLength) {\n let isEmptyCollection = true;\n for (let 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 updatePopupItems(item, itemEle, isGroupOF, isMenu) {\n const dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n const 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 const 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 = () => {\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 removeSimplfiedOverflow(tabContent, activeContent, tabIndex, isClear = false) {\n const orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n let flag = true;\n let isEmptyCollection;\n for (let i = 0; ((i < orderedGroups.length) && flag); i++) {\n const group = orderedGroups[parseInt(i.toString(), 10)];\n let overflowDDB;\n let overflowtarget;\n if (group.enableGroupOverflow) {\n const 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 (let j = 0; ((j < group.collections.length) && flag); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (let k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n let itemContainer;\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 let width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n const 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 const 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 let isGroupHidden = false;\n let 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 const groupElement = tabContent.querySelector('#' + group.id);\n const itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n const 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 const ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 (let 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 const overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n }\n checkOverflowHiddenItems(isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n const overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n const overflowButton = getInstance(overflowDDB, DropDownButton);\n const overflowBtnTarget = overflowButton.target;\n const itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n let isHidden = true;\n for (let 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 let isGroupHidden = true;\n let isItemHidden;\n const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (let k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n const overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n const groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (let 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 createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n let overflowButton;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupId);\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n const groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n const 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 const overflowBtnTarget = overflowButton.target;\n const headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n const groupHeader = 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);\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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n let 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 addOverflowEvents(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 createOfTabContainer(groupId, groupHeader, itemEle, tabIndex) {\n const 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 const overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n const itemProp = getGroup(this.tabs, groupId);\n const 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 const 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 checkGroupShrinking(tabIndex, tabContent, activeContent, isLarge) {\n let isOverFlow = true;\n let isBreak = false;\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let 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 checkValidCollectionLength(collections) {\n let count = 0;\n for (let i = 0; i < collections.length; i++) {\n const items = collections[parseInt(i.toString(), 10)].items;\n for (let 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 checkClassicCollection(collections, n, isIncrement) {\n const items = collections[parseInt(n.toString(), 10)].items;\n for (let 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 checkClassicItem(items, n, isIncrement) {\n const 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 checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip = false) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n const canReduceCollection = (collection) => {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n const canReduceItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n const createShrinkEle = (id, firstItem, start, end) => {\n const 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 const moveItemToColumn = (start, end) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n const firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n const shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (let i = start; i <= end; i++) {\n const item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n const 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 const moveCollectionToColumn = (start, end) => {\n const group = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n const firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n const shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (let i = start; i <= end; i++) {\n const collection = group.collections[parseInt(i.toString(), 10)];\n const 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 const orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (let 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 let 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 let 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 const collection = group.collections[0];\n for (let 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 let 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 let 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 checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip = false) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n const canReduceItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n const reduceItemsToSmall = (collectionIndex, start, end, middle = null) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n const reduce = (i) => {\n const item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n this.setItemSize(ele, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n const reduceCollectionsToSmall = (index, start, end, middle = null) => {\n const 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 const reduce = (i) => {\n const collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n let ele = 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 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n const setWidth = (id) => {\n if (!shouldSkip) {\n const ele = activeContent.querySelector('#' + id);\n ele.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (let k = (shrinkColumns.length - 1); k >= 0; k--) {\n const start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n const 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 const 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 (let k = (group.collections.length - 1); k >= 0; k--) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n const classicItems = [];\n for (let 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 (let k = (shrinkColumns.length - 1); k >= 0; k--) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n const collection = group.collections[0];\n const 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 (let k = (group.collections.length - 1); k >= 0; k--) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n const 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 checkGroupExpanding(tabIndex, tabContent, activeContent, isSmall) {\n let isBreak = false;\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let 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 checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n const canExpandItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n const expandItemToMedium = (collectionIndex, index, parentEle) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n const item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, item);\n }\n };\n const expandCollectionsToMedium = (i) => {\n const collections = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n const item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = 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 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 (let k = 0; k < group.collections.length; k++) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let 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 const item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n let itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n const valString = itemEle.getAttribute('data-medium-width');\n const 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 (let 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 const collection = group.collections[parseInt(k.toString(), 10)];\n const itemEle = activeContent.querySelector('#' + collection.id);\n const valString = itemEle.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n const classicItems = [];\n for (let 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 (let k = 0; k < shrinkColumns.length; k++) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const valString = shrinkColumn.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n const collection = group.collections[0];\n const 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 const 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 checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n const expandItemsToLarge = (start, end, parentEle, middle) => {\n const items = this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n const reduce = (i) => {\n const item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n const container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n let ele = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 const expandCollectionsToLarge = (start, end, parentEle, middle) => {\n const collections = this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n const reduce = (i) => {\n const collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n const collectionEle = parentEle.querySelector('#' + collection.id);\n let ele = 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 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 (let k = 0; k < shrinkColumns.length; k++) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const valString = shrinkColumn.getAttribute('data-large-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n const collection = group.collections[0];\n const 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 const 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 handleContentSize(itemEle, isRemoveOverflow) {\n const 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 setItemSize(itemEle, item) {\n if (itemEle) {\n const 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 createOverflowDropdown(tabIndex, tabContent, activeContent) {\n const collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n for (let i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n const group = collapseOrder[parseInt(i.toString(), 10)];\n const groupEle = this.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n const groupOverFlow = this.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 const groupIndex = getIndex(this.tabs[parseInt(tabIndex.toString(), 10)].groups, (e) => { return e.id === group.id; });\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n const dropdown = this.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this.enableRtl);\n if (group.keyTip) {\n const overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const collectionEle = groupContainer.querySelector('#' + collection.id);\n for (let k = 0; k < collection.items.length; k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n const itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this.handleContentSize(itemEle);\n this.addOverflowEvents(item, itemEle, dropdown);\n }\n const overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n const overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n const overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n }\n }\n // eslint-disable-next-line max-len\n removeOverflowDropdown(tabContent, activeContent, isClear = false, tabIndex) {\n const expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n for (let i = 0; i < expandOrder.length; i++) {\n const group = expandOrder[parseInt(i.toString(), 10)];\n const groupEle = this.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n break;\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n const width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return true;\n }\n this.removeDropdown(group.id);\n const groupIndex = getIndex(this.tabs[parseInt(tabIndex.toString(), 10)].groups, (e) => { return e.id === group.id; });\n this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const collectionEle = groupEle.querySelector('#' + collection.id);\n for (let k = 0; k < collection.items.length; k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n const itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this.handleContentSize(itemEle, true);\n this.removeOverflowEvent(item, itemEle);\n }\n }\n }\n }\n return false;\n }\n removeDropdown(groupId) {\n const dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n const groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n }\n getGroupResizeOrder(isCollapse, tabIndex) {\n let groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter((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((a, b) => 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 destroyScroll() {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n }\n clearOverflowDropDown(index) {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n const 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 isContextualTab(tabID) {\n let isContextual = false;\n if (this.contextualTabs.length) {\n for (let i = 0; i < this.contextualTabs.length; i++) {\n for (let 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 ribbonTabSelecting(e) {\n this.currentControlIndex = 0;\n const nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n const previousTabId = e.previousItem.getAttribute('data-id');\n let nextIndex = getIndex(this.tabs, ((tab) => (tab.id === nextTabId)));\n const isContextual = this.isContextualTab(nextTabId);\n const previousIndex = getIndex(this.tabs, ((tab) => (tab.id === previousTabId)));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n const eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, (args) => {\n if (args.cancel) {\n return;\n }\n this.destroyScroll();\n if (!this.isAddRemove && (previousIndex !== -1)) {\n this.clearOverflowDropDown(previousIndex);\n }\n const 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 const elements = this.createGroups(this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n }\n createTabItems(tabs) {\n const tabItems = [];\n for (let i = 0; i < tabs.length; i++) {\n const ribbonTab = tabs[parseInt(i.toString(), 10)];\n const header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n const tabIndex = getIndex(this.tabs, ((tab) => (tab.id === ribbonTab.id)));\n if (ribbonTab.keyTip) {\n if (!this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = () => { this.minimize(false); };\n header.ondblclick = () => { this.minimize(true); };\n const tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n const content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n }\n renderInitialTab(index) {\n const elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n const 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 const 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 addOverflowButton(btnId, isGroupOF) {\n const overflowButton = this.createElement('button', {\n id: btnId\n });\n const overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n const 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: (args) => {\n const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n this.trigger('overflowPopupOpen', eventArgs, (ribbonArgs) => {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: (args) => {\n const ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n const groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n this.trigger('overflowPopupClose', eventArgs, (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 let isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = () => { this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = (e) => (this.upDownKeyHandler(e, overflowTarget, isGroupOf), this);\n return overflowDDB;\n }\n upDownKeyHandler(e, target, isGroupOf) {\n let items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n const currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n const control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n const comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n let ribbonItem;\n let 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 const 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 const 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 const currentItemIndex = parseInt(target.getAttribute('index'), 10);\n let itemType = '';\n const 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 const elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n const checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n const 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 findDisabledItem(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 removeOverflowButton(overflowDDB) {\n if (overflowDDB) {\n const btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n }\n removeOverflowEvent(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 createGroupContainer(groupId, groupHeader) {\n const ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n const 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 addExpandCollapse() {\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 = (e) => { this.toggleLayout(e); };\n this.collapseButton.onkeydown = (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 removeExpandCollapse() {\n const index = getIndex(this.tooltipData, (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 reRenderTabs(tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (const key of Object.keys(tabs)) {\n const index = parseInt(key, 10);\n const tab = tabs[parseInt(index.toString(), 10)];\n let isNewTab = false;\n for (let 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 const 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 const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n const tabEle = this.tabObj.element;\n const 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 const 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 (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n const 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 const groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(groupEle => { groupEle.remove(); });\n const elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n }\n switchLayout() {\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 (let i = 0; i <= (this.tabs.length - 1); i++) {\n const tabIndex = i;\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n const groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = groupList[parseInt(i.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, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i, tabContent, activeContent, true, false);\n }\n const groupEle = tabContent.querySelector('#' + group.id);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n const shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (let i = 0; i < shrinkColumns.length; i++) {\n shrinkColumns[parseInt(i.toString(), 10)].remove();\n }\n const groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n const 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 (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (let k = 0; k < collection.items.length; k++) {\n const itemList = collection.items;\n let item = collection.items[parseInt(k.toString(), 10)];\n let flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n const itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n const ele = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle.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 let 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 let itemEle;\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 const 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 (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = groupList[parseInt(i.toString(), 10)].orientation;\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n const groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n const 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 (let j = 0; j < group.collections.length; j++) {\n let overflowDDB;\n let overflowtarget;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n const overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n const collection = group.collections[parseInt(j.toString(), 10)];\n const groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (let k = 0; k < collection.items.length; k++) {\n const itemList = collection.items;\n let item = collection.items[parseInt(k.toString(), 10)];\n let flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n let itemEle;\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 const ele = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\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 const itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n let 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 let ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n const 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 createLauncherIcon(groupId, groupContainer, tabIndex) {\n const 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', (e) => {\n if (e.key === 'Enter') {\n this.launcherIconClicked(groupId);\n }\n }, this);\n const itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n }\n launcherIconClicked(id) {\n const eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n }\n createGroups(groupList, tabIndex) {\n const groupElements = [];\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = group.orientation;\n const 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 const 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 const 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 const 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 const elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n let isItemsHidden = true;\n for (let j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (let 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 const 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 updateGroupProps(key, initialProps, groupEle) {\n // eslint-disable-next-line\n let 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 validateItemSize() {\n for (let k = 0; k < this.tabs.length; k++) {\n const groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (let l = 0; l < groupList.length; l++) {\n const collectionList = groupList[parseInt(l.toString(), 10)].collections;\n const alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (let i = 0; i < collectionList.length; i++) {\n const items = collectionList[parseInt(i.toString(), 10)].items;\n for (let j = 0; j < items.length; j++) {\n const 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 let sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n const 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 createCollection(collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n const collectionElements = [];\n for (let i = 0; i < collectionList.length; i++) {\n const collection = collectionList[parseInt(i.toString(), 10)];\n const 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 const 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 createRibbonItem(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 createItems(itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n const itemElements = [];\n for (let i = 0; i < itemList.length; i++) {\n let item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n let 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 const itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n itemEle.classList.add(constants.RIBBON_ITEM, ...(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 (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i), '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 let 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 const initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n const 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 createHelpPaneTemplate() {\n if (this.helpPaneTemplate) {\n const 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 const templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n const tabEle = this.tabObj.element;\n const 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 createTemplateContent(item, itemElement) {\n const 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 renderItemTemplate(item, itemElement) {\n const templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n const templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n }\n checkID(list, type, initId) {\n const key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (let i = 0; i < list.length; i++) {\n const listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n let htmlAttrID;\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 hasHtmlAtrrID(listItem) {\n let 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 updateCommonProperty(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 (let i = 0; i < this.tabs.length; i++) {\n const tab = this.tabs[parseInt(i.toString(), 10)];\n const contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (const group of tab.groups) {\n let dropdownElement;\n let dropdown;\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 (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 const moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\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 removeLauncherIcon(groupId, dropdownElement, contentEle) {\n const containerId = groupId + constants.CONTAINER_ID;\n const containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n const launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n }\n destroyTabItems(tabs) {\n for (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n const contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (const group of tab.groups) {\n let dropdownElement;\n let dropdown;\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 (const collection of group.collections) {\n for (const item of collection.items) {\n let ele;\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 destroyFunction(item, ele) {\n const 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 (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const 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 for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n const groupButtonID = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n const index = getIndex(this.tooltipData, (e) => { return e.id === groupButtonID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n const galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (let i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n const galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n const galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n const galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n const galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (let i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n const galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (let 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 const index = getIndex(this.tooltipData, (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 getItemModuleName(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 clearOverflowResize() {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n const tab = this.tabs[this.selectedTab];\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (let 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 refreshLayout() {\n this.resizeHandler();\n }\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n selectTab(tabId) {\n const index = getIndex(this.tabs, (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 showTab(tabId, 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 hideTab(tabId, isContextual = false) {\n this.showHideTab(tabId, true, isContextual);\n }\n showHideTab(tabId, value, isContextual) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n let contextualTab;\n const tabEle = this.tabObj.element;\n for (let i = 0; i < this.contextualTabs.length; i++) {\n for (let 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 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab) {\n let isTabHidden = true;\n for (let i = 0; i < contextualTab.tabs.length; i++) {\n const index = getIndex(this.tabs, (e) => {\n return e.id === contextualTab.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n const toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n }\n if (isTabHidden) {\n contextualTab.setProperties({ visible: false }, true);\n }\n else {\n contextualTab.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 enableTab(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 disableTab(tabId) {\n this.enableDisableTab(tabId, false);\n }\n enableDisableTab(tabId, value) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const 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 addTab(tab, targetId, isAfter) {\n let index = targetId ? getIndex(this.tabs, (e) => 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 const 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 removeTab(tabId) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 addGroup(tabId, group, targetId, isAfter) {\n const tabIndex = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n const ribbonGroups = tab.groups.slice();\n let index = targetId ? getIndex(ribbonGroups, (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 const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n const element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n const 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 removeGroup(groupId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const collection of itemProp.group.collections) {\n for (const item of collection.items) {\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 const ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 const groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n const 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 isHeaderVisible(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 hideGroup(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 showGroup(groupID) {\n this.showHideGroup(groupID, false);\n }\n showHideGroup(groupID, isHidden) {\n let overflowDDB;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n const 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 const 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 updateHiddenElements(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 checkHiddenElements(key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n let 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 const 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 updateItemsSimplifiedWidth(tabIndex, key) {\n const hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[`${key}`] && hiddenProps[`${key}`].length) {\n for (let i = 0; i < hiddenProps[`${key}`].length; i++) {\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n let hiddenEle;\n let groupEle;\n let isGroupHidden = false;\n let 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 let 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.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this.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.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n const hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach((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((item) => {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this.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 const index = hiddenProps[`${key}`].indexOf(hiddenProps[`${key}`][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[`${key}`].splice(index, 1);\n i--;\n }\n }\n }\n }\n checkWidthDifference(hiddenEle, groupEle) {\n let 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 calculateHiddenElementsWidth(tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n const hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (let i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n calculateMediumDataWidth(hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n const mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n const overflowEle = this.overflowDDB.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n const selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 const groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (let i = 0; i < groupOFButton.length; i++) {\n const overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n const overflowBtnTarget = overflowButton.target;\n const overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n if (overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n for (let i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n const 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 calculateOverflowItemsWidth(hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n const groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n const groupContainer = document.querySelector('#' + group.id);\n let overflowButton;\n const overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n const overflowEle = overflowButton.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 if (this.overflowDDB) {\n const selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n const overflowEle = this.overflowDDB.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 const 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 disableGroup(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 enableGroup(groupID) {\n this.enableDisableGroup(groupID, false);\n }\n enableDisableGroup(groupID, isDisabled) {\n let overflowDDB;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n const 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 const 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 addCollection(groupId, collection, targetId, isAfter) {\n const 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 const ribbonCollections = itemProp.group.collections.slice();\n let index = targetId ? getIndex(ribbonCollections, (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 let contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n const collection = itemProp.group.collections[parseInt(index.toString(), 10)];\n const element = this.createCollection([collection], 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 const 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 removeCollection(collectionId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const item of itemProp.collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n const groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n const ribbonGroup = itemProp.group;\n const 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 addItem(collectionId, item, targetId, isAfter) {\n const 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 const ribbonItems = itemProp.collection.items.slice();\n let index = targetId ? getIndex(ribbonItems, (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 let contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n const item = itemProp.collection.items[parseInt(index.toString(), 10)];\n const element = this.createItems([item], 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 const 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 removeItem(itemId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 const item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n const ribbonCollection = itemProp.collection;\n const 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 hideItem(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 showItem(itemId) {\n this.showHideItem(itemId, false);\n }\n showHideItem(itemId, isHidden) {\n const itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n let 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 const 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 updateInitialProps(tabIndex, id, key, isInsert) {\n let 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 const 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 checkHiddenItems(group, isHidden, tabIndex) {\n let isItemsHidden = true;\n let isEmptyCollection;\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n const groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (let i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n const collection = group.collections[parseInt(i.toString(), 10)];\n for (let j = 0; j < collection.items.length; j++) {\n const item = collection.items[parseInt(j.toString(), 10)];\n let itemEle;\n if (item.type === 'GroupButton') {\n const 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 const 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 const 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 checkOverflowItems(isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n let overflowDDB;\n let overflowtarget;\n if (isGroupOF) {\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n const 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 updateTab(tab) {\n const tabId = tab.id;\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n const 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 (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 const groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(groupEle => { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n const 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 const 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 updateGroup(group) {\n const groupId = group.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupEle = contentEle.querySelector('#' + groupId);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n let dropdownElement;\n let 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 (const collection of itemProp.group.collections) {\n for (const item of collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n const collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(collectionEle => { collectionEle.remove(); });\n if (group.orientation) {\n const groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n const 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 const ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 const 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 const groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n const 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 const 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 const overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n const dropDownBtn = getInstance(overflowEle, DropDownButton);\n const 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 updateCollection(collection) {\n const collectionId = collection.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const item of itemProp.collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n const 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 const groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n const 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 updateItem(item) {\n const itemId = item.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n const groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n let itemContainer = null;\n let itemEle = null;\n let dropdownElement;\n let dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n const 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 const removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n const 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 let 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 removeItemElement(contentEle, item, dropdown) {\n let 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 enableItem(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 disableItem(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 getItem(itemId) {\n return getItem(this.tabs, itemId).item;\n }\n enableDisableItem(itemId, isDisabled) {\n let isUpdated = false;\n let isOverflow = false;\n const itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n let 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 const itemEle = closest(ele, '.e-ribbon-item');\n const 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 (let i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n const 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 (let i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n const 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 const 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 unwireEvents() {\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 destroy() {\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.destroy();\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 onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n this.element.classList.remove(...oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n this.element.classList.add(...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 (let i = 0; i < this.tabs.length; i++) {\n const tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n const tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (const group of tab.groups) {\n if (group.showLauncherIcon) {\n const className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n const element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n const dropdown = getComponent(element, DropDownButton);\n const launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n const element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n const tabEle = this.tabObj.element;\n const 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 (let 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 const 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 const 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 const toolbar = this.tabObj['tbObj'];\n toolbar.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};\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);\nRibbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n], Ribbon);\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 */\nexport class RibbonFileMenu {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonFileMenu';\n }\n destroy() {\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 createFileMenu(fileMenuOptions) {\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 const tabEle = this.parent.tabObj.element;\n const 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: () => {\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 addFileMenuTooltip(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 addFileMenuKeytip() {\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 ddbBeforeEvent(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 const event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n const eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n }\n ddbAfterEvent(isOpen, args) {\n const element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n const event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n const eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n }\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n cloneMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 createRibbonMenu(menuOptions) {\n const 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', (e) => {\n if (e.key === 'Tab') {\n this.fileMenuDDB.toggle();\n }\n }, this);\n }\n menuBeforeEvent(isOpen, args) {\n const event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n const 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 menuAfterEvent(isOpen, args) {\n const event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n const eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n }\n beforeItemRender(args) {\n const event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n const eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n }\n menuSelect(args) {\n const event = this.parent.fileMenu.select;\n if (event) {\n const 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 setCommonProperties(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 updateFileMenu(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 destroyMenu() {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n }\n destroyDDB() {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n const 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 removeFileMenuTooltip() {\n const index = getIndex(this.parent.tooltipData, (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 removeFileMenuKeytip() {\n if (this.parent.keyTipElements['filemenu']) {\n const index = getIndex(this.parent.keyTipElements['filemenu'], (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 addItems(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 removeItems(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 enableItems(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 disableItems(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 setItem(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}\n","import { 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 */\nexport class RibbonBackstage extends Component {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n /**\n * @private\n * @returns {void}\n */\n render() {\n // render code\n }\n /**\n * @private\n * @returns {void}\n */\n preRender() {\n // pre render code\n }\n getPersistData() {\n return '';\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n onPropertyChanged() {\n // onProperty changes code\n }\n getModuleName() {\n return 'ribbonBackstage';\n }\n destroy() {\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 createBackStage(backStageOptions) {\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 const tabEle = this.parent.tabObj.element;\n const 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: () => {\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 let footerItemCount = 0;\n let itemCount = 0;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const 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 = (e) => {\n e.stopPropagation();\n this.showBackstage();\n this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n const menuItem = this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && this.menuCtrl.items[0].text === item.text) {\n const 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 onClickEvent(e) {\n const targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n }\n addBackStageMenuTooltip(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 addBackStageMenuKeyTip(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 (let 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 checkMenuItems(backStageItems) {\n for (let i = 0; i < backStageItems.length; i++) {\n const item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n const menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n }\n createBackStagePopup(backStageOptions) {\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 let 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', (e) => {\n if (e.code === 'Escape') {\n this.hideBackstage();\n }\n this.handleNavigation(e);\n }, this);\n }\n handleNavigation(e) {\n const closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n const menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n const arrowUp = e.key === 'ArrowUp';\n const 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 (let 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 updatePopupPositionOnRtl(enableRtl) {\n const 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 createBackstageMenu(menuOptions, isFooter) {\n const 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 const 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 = () => {\n this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n this.hideBackstage();\n this.isBackButtonClicked = true;\n };\n }\n const 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 let 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 cloneMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 cloneFooterMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 createBackStageContent(itemId, content) {\n const 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 const 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 createBackStageTemplate(template) {\n const 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 const 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 menuSelect(menuOptions, args) {\n for (let i = 0; i < menuOptions.items.length; i++) {\n const 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 const 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 setCommonProperties(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 updateBackStageMenu(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 let footerItemCount = 0;\n let itemCount = 0;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const 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 destroyMenu() {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n }\n destroyDDB() {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n const 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 removeBackstageMenuTooltip() {\n const index = getIndex(this.parent.tooltipData, (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 removeBackstageMenuKeyTip() {\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n const index = getIndex(this.parent.keyTipElements['backstage'], (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 (let 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 addBackstageItems(items, target, isAfter, isUniqueId) {\n for (let i = 0; i < items.length; i++) {\n const 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 const backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n const backStageOptions = this.parent.backStageMenu;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (let i = 0; i < backstageItems.length; i++) {\n const item1 = backstageItems[parseInt(i.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 removeBackstageItems(items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n const 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 showBackstage() {\n this.popupEle.show();\n }\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n hideBackstage() {\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}\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nexport class RibbonContextualTab {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonContextualTab';\n }\n destroy() {\n this.parent = null;\n }\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n addContextualTabs() {\n let isSelected = false;\n for (let n = 0; n < this.parent.contextualTabs.length; n++) {\n for (let 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 const index = this.parent.tabs.length - 1;\n const tabEle = this.parent.tabObj.element;\n const 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 updateContextualTabs(newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (let 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 const tabEle = this.parent.tabObj.element;\n for (let i = 0; i < this.parent.tabs.length; i++) {\n const 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 for (const key of Object.keys(newProp.tabs)) {\n const index = parseInt(key, 10);\n const tab = this.parent.tabs.filter((e) => e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id)[0];\n this.parent.updateTab(tab);\n }\n }\n }\n}\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 */\nexport class RibbonKeyTip {\n constructor(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonKeyTip';\n }\n destroy() {\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 createKeytip(key) {\n if (this.parent.keyTipElements) {\n let keytipData;\n if (key === 'tab') {\n for (let 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 const popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (let 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 const backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (let 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 (let 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 (let 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 (let 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 (let 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 calculateItemPosition(key, isMethod = false, keyTip) {\n let xOffset;\n let yOffset;\n const keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][`${key}`];\n if (keytipData) {\n for (let 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 let 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 const 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 createKeyTipElement(id, keyTip, type, xOffset = 'center', yOffset = 'bottom', isTab = false, isPopUpItem = false) {\n let keyEle = document.querySelector('#' + id);\n let isPopUpPresent = false;\n let 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 const 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 const keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n const 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 calculateKeyTipPosition(itemEle, keytipElement, type, yOffset) {\n const 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 keytipPress(keyPress, isMethod = false) {\n this.isKeytipPresent = false;\n for (let i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (let j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n const keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (let k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n const 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(() => {\n const 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 let itemProp;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n const 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 const keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n let 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 const 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 clickItems(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 const 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 const 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 const itemEle = document.querySelector('#' + itemID);\n setTimeout(() => {\n itemEle.focus();\n }, 100);\n break;\n }\n case 'gallery': {\n const galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n }\n case 'template': {\n const templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n }\n case 'group-btn': {\n const itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n const item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (let 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 commonItemsKeyTipPress(keyPress, key, isMethod) {\n if (this.parent.keyTipElements[`${key}`]) {\n let isKeyPressed = false;\n const keytipData = this.parent.keyTipElements[`${key}`];\n let keyEle;\n let keytipElement;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (let 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(() => {\n for (let i = 0; i < Object.keys(this.parent.keyTipElements).length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n const keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n this.createKeyTipElement((keytipData[0].id), keytipData[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 removeKeytip(key) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n let isKeyTipExist = false;\n this.parent.keysPress = '';\n for (let i = 0; i < keyTipItems.length; i++) {\n const keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this.parent.keyTipElements && this.parent.keyTipElements[this.parent.selectedTab]) {\n for (let j = 0; j < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]).length; j++) {\n const keyText = (Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n const keyTipElement = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)];\n const index = getIndex(keyTipElement[`${keyText}`], (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.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this.parent.activeLayout === 'Classic')) {\n this.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic')) {\n this.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (let n = 0; n < Object.keys(this.parent.keyTipElements).length; n++) {\n if (this.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n const keytipData = this.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (let 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 const tabOverflow = this.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(() => {\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.parent.keyTipElements['backstageMenu']) {\n const index = getIndex(this.parent.keyTipElements['backstageMenu'], (e) => { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\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 showKeyTips(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 hideKeyTips() {\n this.removeKeytip();\n }\n}\n"],"names":["this","__decorate","constants.GROUPOF_BUTTON_ID","constants.RIBBON_TOOLTIP_CONTAINER","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","constants.RIBBON_TOOLTIP_TARGET","constants.RIBBON_GROUP_BUTTON_ID","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","constants.HEADER_ID","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","constants.SPACE","constants.CONTAINER_ID","constants.CONTENT_ID","constants.RTL_CSS","constants.RIBBON_GROUP_CONTAINER","constants.HORIZONTAL_SCROLLBAR","constants.TAB_ID","constants.RIBBON_TAB","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","constants.RIBBON_MINIMIZE","constants.RIBBON_GROUP","constants.RIBBON_TAB_ACTIVE","constants.OVERFLOW_ID","constants.HIDE_CSS","constants.TAB_CONTENT","constants.RIBBON_ITEM","constants.RIBBON_GROUP_OF_BUTTON","constants.RIBBON_OVERFLOW_HEADER","constants.OVRLOF_BUTTON_ID","constants.RIBBON_OVERALL_OF_BUTTON","constants.RIBBON_OF_TAB_CONTAINER","constants.RIBBON_ROW","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","constants.RIBBON_COLUMN","constants.RIBBON_GROUP_HEADER","constants.RIBBON_LAUNCHER_ICON_ELE","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","constants.RIBBON_COLLECTION","constants.DISABLED_CSS","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","constants.RIBBON_TEMPLATE","constants.GROUP_ID","constants.COLLECTION_ID","constants.ITEM_ID","constants.RIBBON_FILE_MENU_ID","constants.RIBBON_FILE_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","constants.RIBBON_BACKSTAGE_OPEN","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","constants.BACKSTAGE_CLOSE_ICON","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","constants.RIBBON_BACKSTAGE_CONTENT","constants.RIBBON_BACKSTAGE_TEMPLATE","constants.RIBBON_CONTEXTUAL_TAB","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.es2015.js","sources":["../src/es6/ribbon/base/interface.js","../src/es6/ribbon/models/ribbon-button-settings.js","../src/es6/ribbon/models/ribbon-checkbox-settings.js","../src/es6/ribbon/models/ribbon-colorpicker-settings.js","../src/es6/ribbon/models/ribbon-combobox-settings.js","../src/es6/ribbon/models/ribbon-dropdown-settings.js","../src/es6/ribbon/models/ribbon-splitbutton-settings.js","../src/es6/ribbon/models/ribbon-tooltip.js","../src/es6/ribbon/models/ribbon-group-button-item.js","../src/es6/ribbon/models/ribbon-group-button-settings.js","../src/es6/ribbon/models/ribbon-gallery-item.js","../src/es6/ribbon/models/ribbon-gallery-group.js","../src/es6/ribbon/models/ribbon-gallery-settings.js","../src/es6/ribbon/models/ribbon-item.js","../src/es6/ribbon/models/ribbon-collection.js","../src/es6/ribbon/models/ribbon-group.js","../src/es6/ribbon/models/ribbon-tab.js","../src/es6/ribbon/models/ribbon-file-menu-settings.js","../src/es6/ribbon/models/ribbon-back-button.js","../src/es6/ribbon/models/ribbon-backstage-item.js","../src/es6/ribbon/models/ribbon-back-stage-settings.js","../src/es6/ribbon/models/ribbon-contextual-tab-settings.js","../src/es6/ribbon/base/constant.js","../src/es6/ribbon/items/ribbon-button.js","../src/es6/ribbon/items/ribbon-checkbox.js","../src/es6/ribbon/items/ribbon-colorpicker.js","../src/es6/ribbon/items/ribbon-combobox.js","../src/es6/ribbon/items/ribbon-dropdown.js","../src/es6/ribbon/items/ribbon-splitbutton.js","../src/es6/ribbon/base/utils.js","../src/es6/ribbon/items/ribbon-groupbutton.js","../src/es6/ribbon/items/ribbon-gallery.js","../src/es6/ribbon/base/ribbon.js","../src/es6/ribbon/modules/ribbon-filemenu.js","../src/es6/ribbon/modules/ribbon-backstage.js","../src/es6/ribbon/modules/ribbon-contextualtab.js","../src/es6/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 __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 */\nexport class RibbonButtonSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonCheckBoxSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonColorPickerSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonComboBoxSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonDropDownSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonSplitButtonSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonTooltip extends ChildProperty {\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","var __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 */\nexport class RibbonGroupButtonItem extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonGroupButtonSettings extends ChildProperty {\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","var __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 */\nexport class RibbonGalleryItem extends ChildProperty {\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","var __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 */\nexport class RibbonGalleryGroup extends ChildProperty {\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","var __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 */\nexport class RibbonGallerySettings extends ChildProperty {\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","var __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 */\nexport class RibbonItem extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonCollection extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonGroup extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonTab extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class FileMenuSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class BackstageBackButton extends ChildProperty {\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","var __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 */\nexport class BackstageItem extends ChildProperty {\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","var __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 */\nexport class BackStageMenu extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","var __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 */\nexport class RibbonContextualTabSettings extends ChildProperty {\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 setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n }\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","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport const ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport const EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport const BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport const OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport const VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport const DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport const RTL_CSS = 'e-rtl';\n/** @hidden */\nexport const RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport const RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport const RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport const RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport const RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport const SPACE = ' ';\n/** @hidden */\nexport const HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport const HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport const RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport const RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport const RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport const RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport const RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport const RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport const RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport const RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport const RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport const RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport const RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport const TAB_CONTENT = 'e-content';\n/** @hidden */\nexport const RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport const RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport const RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport const RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport const RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport const RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport const RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport const RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport const RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport const RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport const RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport const RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport const RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport const RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport const RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport const RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport const RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport const RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport const RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport const RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport const RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport const RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport const RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport const DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport const DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport const RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport const RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport const RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport const RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport const RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport const RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport const RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport const RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport const RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport const RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport const RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport const RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport const TAB_ID = '_tab';\n/** @hidden */\nexport const GROUP_ID = '_group';\n/** @hidden */\nexport const COLLECTION_ID = '_collection';\n/** @hidden */\nexport const ITEM_ID = '_item';\n/** @hidden */\nexport const COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport const OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport const GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport const HEADER_ID = '_header';\n/** @hidden */\nexport const LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport const CONTENT_ID = '_content';\n/** @hidden */\nexport const CONTAINER_ID = '_container';\n/** @hidden */\nexport const OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport const DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport const RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport const RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport const RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport const RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport const RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport const RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport const RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport const RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport const RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport const 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 */\nexport class RibbonButton {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonButton';\n }\n destroy() {\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 createButton(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const 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 = (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n const buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = (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 removeOverFlowEvents(item, itemEle) {\n const buttonEle = itemEle.querySelector('#' + item.id);\n const buttonObj = getComponent(buttonEle, Button);\n let cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = (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 click(controlId) {\n const buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n const buttonObj = getComponent(buttonEle, Button);\n if (!buttonObj.disabled) {\n buttonObj.click();\n }\n }\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n updateButton(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n const buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n const 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 updateButtonSize(element, item) {\n const 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}\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 */\nexport class RibbonCheckBox {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonCheckBox';\n }\n destroy() {\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 createCheckBox(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const 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: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n const checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = (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 removeOverFlowEvents(item, itemEle) {\n const inputEle = itemEle.querySelector('#' + item.id);\n const checkBoxObj = getComponent(inputEle, CheckBox);\n let cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = (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 click(controlId) {\n const inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n const checkBoxObj = getComponent(inputEle, CheckBox);\n if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n }\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n updateCheckBox(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n const 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 const checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n }\n}\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 */\nexport class RibbonColorPicker {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonColorPicker';\n }\n destroy() {\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 createColorPicker(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const colorPickerSettings = item.colorPickerSettings;\n const 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: () => {\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: (e) => {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(this, e);\n }\n },\n open: () => {\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 const 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 toggleWrapperHover(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 addOverFlowEvents(item, itemEle, overflowButton) {\n const colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n const 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 const colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n const 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 const splitBtn = colorPickerObj['splitBtn'];\n let target;\n colorPickerObj.beforeClose = (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 = () => {\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 removeOverFlowEvents(item, itemEle) {\n const colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n const label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n const colorPickerEle = itemEle.querySelector('#' + item.id);\n const colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n let cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n const 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 = () => {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(this);\n }\n };\n }\n getColorPickerObj(controlId) {\n const 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 getValue(controlId, value, type) {\n const 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 toggle(controlId) {\n const colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\n }\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n updateColorPicker(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n const 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 const 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 unwireColorPickerEvents(element) {\n const colorPickerObj = getComponent(element, ColorPicker);\n const wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n }\n}\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 */\nexport class RibbonComboBox {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonComboBox';\n }\n destroy() {\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 createComboBox(item, itemEle) {\n const inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n const 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: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n const 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 const inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n const comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = (e) => {\n const 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 removeOverFlowEvents(item, itemEle) {\n const comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n const label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n const inputEle = itemEle.querySelector('#' + item.id);\n const comboBoxObj = getComponent(inputEle, ComboBox);\n let cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = (e) => {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(this, e);\n }\n };\n }\n getComboBoxObj(controlId) {\n const 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 filter(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 hidePopup(controlId) {\n const 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 showPopup(controlId) {\n const 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 updateComboBox(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n const 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 const comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n }\n}\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 */\nexport class RibbonDropDown {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonDropDown';\n }\n destroy() {\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 createDropDown(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const dropDownSettings = item.dropDownSettings;\n const 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: (e) => {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: (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 addOverFlowEvents(item, itemEle, overflowButton) {\n const dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n const dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n let target;\n dropdown.beforeClose = (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 = (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 removeOverFlowEvents(item, itemEle) {\n const dropdownElement = itemEle.querySelector('#' + item.id);\n const dropdown = getComponent(dropdownElement, DropDownButton);\n let cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = (e) => {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(this, e);\n }\n };\n dropdown.beforeClose = (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 createOverFlowDropDown(id, name, iconCss, groupEle, overflowEle, enableRtl) {\n this.enableRtl = enableRtl;\n const buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n const 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: (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 = () => { this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = (e) => { this.keyActionHandler(e, groupEle), this; };\n return dropdown;\n }\n keyActionHandler(e, target) {\n const controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n const templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n const items = controlElements.concat(templateElements);\n const comboBoxElements = target.querySelectorAll('.e-combobox');\n let comboBoxEle;\n if (comboBoxElements) {\n for (let 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 (let 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 handleNavigation(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 let 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 let 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 focusLauncherIcon(e, items) {\n const groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n let 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 updateItemIndex(e, items, enableRtl) {\n let 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 let 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 let 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 removeOverFlowDropDown(dropdownElement) {\n const dropdown = getComponent(dropdownElement, DropDownButton);\n const 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 getDDBItemElement(dropdownElement, id) {\n const dropdown = getComponent(dropdownElement, DropDownButton);\n const 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 getOverflowDropDownPopup(itemProp, contentEle) {\n const dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n const dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n }\n getDropDownObj(controlId) {\n const 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 addItems(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 removeItems(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 toggle(controlId) {\n const dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n }\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n updateDropDown(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n const btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n const 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 updateDropDownSize(element, item) {\n const control = getComponent(element, DropDownButton);\n let cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter((value) => 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}\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 */\nexport class RibbonSplitButton {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonSplitButton';\n }\n destroy() {\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 createSplitButton(item, itemEle) {\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n const splitButtonSettings = item.splitButtonSettings;\n const cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n const 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: (e) => {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: () => {\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: () => {\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: (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 const dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = (e) => {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n const wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', () => { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', () => { 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 addOverFlowEvents(item, itemEle, overflowButton) {\n const splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n const splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n const dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n const ddbId = dropdownEle.getAttribute('id');\n const popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = (e) => {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = (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 let target;\n splitbutton.beforeClose = (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 = (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 = (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 removeOverFlowEvents(item, itemEle) {\n const splitButtonEle = itemEle.querySelector('#' + item.id);\n const splitbutton = getComponent(splitButtonEle, SplitButton);\n let cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter((value) => value !== RIBBON_POPUP_CONTROL);\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = (e) => {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(this, e);\n }\n };\n splitbutton.click = (e) => {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(this, e);\n }\n };\n splitbutton.close = (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 setContent(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 getSplitButtonObj(controlId) {\n const 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 addItems(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 removeItems(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 toggle(controlId) {\n const splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\n }\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n updateSplitButton(prop, id) {\n const itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n const btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n const 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 updateSplitButtonSize(element, item) {\n const control = getComponent(element, SplitButton);\n let cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter((value) => 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}\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 (let 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 let content = '';\n try {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const group = tab.groups[parseInt(j.toString(), 10)];\n for (let k = 0; k < group.collections.length; k++) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let l = 0; l < collection.items.length; l++) {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const group = tab.groups[parseInt(j.toString(), 10)];\n for (let k = 0; k < group.collections.length; k++) {\n const 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 (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n for (let j = 0; j < tab.groups.length; j++) {\n const 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 const 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 const 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 const 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 let 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 let 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 const 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 const targetId = args.target.getAttribute('id');\n const dataObj = tooltipData.filter((e) => e.id === targetId)[0];\n const data = dataObj.data;\n const 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 const header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n const textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n const customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n const 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 const 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 const 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 const 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 (const key in attributes) {\n if (key === 'class') {\n const elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n const prevStyles = element.getAttribute('style') || '';\n const 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 */\nexport class RibbonGroupButton {\n constructor(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n getModuleName() {\n return 'ribbonGroupButton';\n }\n destroy() {\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 createGroupButton(item, itemElement) {\n const groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n const 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 (let i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n const 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 const 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 let dropdownIcon;\n let activeEleCount = 0;\n let count = 0;\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (let 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 const 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 const dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = () => {\n this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = (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 groupButtonClicked(itemIndex, item, grpBtnSettings) {\n const previousItems = [];\n const selectingItems = [];\n const selectedItems = [];\n let groupButtonEle;\n let dropdown;\n for (let 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 const 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 (let 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 let activeEleCount = 0;\n for (let 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 let dropdownIcon = null;\n let 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 (let 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 const eventArgs = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs);\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 switchGroupButton(item, itemElement) {\n const groupBtnSettings = item.groupButtonSettings;\n let dropdownIcon = null;\n let activeEleCount = 0;\n let itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n const containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n const buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (let 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 const 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 const dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = () => {\n this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = (e) => {\n if (this.parent.activeLayout === 'Simplified') {\n this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n const groupButtonEle = itemElement.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n }\n handleFocusState(item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n const 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 addGroupButtonHeader(itemID, groupBtnSettings, popupEle) {\n const 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 handleGroupButtonNavigation(e, item) {\n const groupButtonEle = document.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const targetEle = dropdown.target;\n let 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 const 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 addOverFlowEvents(item, itemEle, overflowButton) {\n const groupBtnSettings = item.groupButtonSettings;\n let isIconOnly = true;\n const groupButtonEle = itemEle.querySelector('#' + item.id);\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n const targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (let 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 = () => {\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 removeOverFlowEvents(item, itemEle) {\n const groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n let cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter((value) => 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 destroyDropDown(item) {\n const groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n const dropdown = getComponent(groupButtonEle, DropDownButton);\n const 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 updateGroupButtonSize(itemElement, item) {\n const groupBtnSettings = item.groupButtonSettings;\n let buttonEle;\n for (let 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 const 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}\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 */\nexport class RibbonGallery {\n constructor(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n const 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 getModuleName() {\n return 'ribbonGallery';\n }\n destroy() {\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 createGallery(item, itemEle) {\n const gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n const 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 = (args) => {\n const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n const 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 = (args) => {\n const popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n let popupID;\n let itemProp;\n for (let i = 0; i < popupEle.length; i++) {\n const 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 renderGalleryItems(gallerySettings, isPopup, id, itemEle) {\n let galleryContainerEle;\n let galleryEle;\n const itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n const 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 for (let i = 0; i < gallerySettings.groups.length; i++) {\n let isHeightDefined = false;\n galleryContainerEle = this.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 for (let j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n galleryEle = this.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n const itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this.count;\n }\n }\n this.count = this.count + 1;\n galleryEle.onclick = (e) => {\n this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = (e) => {\n const 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.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 const iconEle = this.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.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.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.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this.isAdded = true;\n break;\n }\n }\n if (this.isAdded && !isPopup) {\n 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 const headerEle = (this.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 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 setWrapperWidth(itemCount, galleryWrapper, gallerySettings, itemID) {\n let count = 1;\n let itemsWidth = 0;\n let isWidthApplied = false;\n for (let i = 0; i < gallerySettings.groups.length; i++) {\n for (let j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n const galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n const itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n const paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n const 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 checkAvailableHeight(activeContent) {\n const galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (let n = 0; n < galleryWrapperItems.length; n++) {\n let count = 0;\n let simplifiedItemsCount = 0;\n let isHeight = false;\n const galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n const itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n let galleryWrapperHeight = galleryWrapper.offsetHeight;\n const itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (let i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (let j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n const 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 let itemsValues = 0;\n const itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n const 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 checkCollision(popup, popupEle, offsetValue = 0) {\n let paddingWidth = 0;\n let marginWidth = 0;\n if (popupEle) {\n const windowWidth = window.innerWidth;\n let screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n const 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 const popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach((ele) => {\n ele.style.flexFlow = 'wrap';\n });\n }\n let isCollideOccurs = false;\n for (let i = 0; i < popupContainerItems.length; i++) {\n let itemsWidth = 0;\n for (let j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n const 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((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((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 setGalleryPopupHeight(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 createPopup(item, buttonEle) {\n const 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 const gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n const 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 switchGalleryItems(activeLayout, itemID) {\n const itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n const itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n const galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n const galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (let 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 (let n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (let 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 const 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 addOverFlowEvents(item, itemEle) {\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n const 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((ele) => {\n ele.classList.add('e-hidden');\n });\n const popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n const itemProp = getItem(this.parent.tabs, item.id);\n let iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n const content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (let i = 0; i < item.gallerySettings.groups.length; i++) {\n for (let 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 const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n const popup = getComponent(popupEle, Popup);\n const popupContainerEle = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n const dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: () => {\n this.setFoucsToFirstItem(popupContainerEle, true, item.id);\n },\n beforeClose: (args) => {\n const 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 removeOverFlowEvents(item, itemEle) {\n const 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((ele) => {\n ele.classList.remove('e-hidden');\n });\n const galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n const popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n const dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n }\n setActiveState(galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n let previousItem;\n let currentItem;\n const itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n let selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n const popupEle = document.querySelector('#' + itemID + '_popupContainer');\n const popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (let i = 0; i < gallerySettings.groups.length; i++) {\n for (let 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 const galleryItem = document.getElementById(galleryEle.id);\n let galleryItemPopup;\n const 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 (let 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 const selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n const galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (let 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 popupEvents(args, gallerySettings, name, isOpen) {\n const 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 showPopup(popup, popupEle, args, gallerySettings, itemID) {\n const isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n const buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n const buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n const 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 hidePopup(popup, popupEle, args, gallerySettings, itemID) {\n const isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n const 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 showGalleryPopup(id) {\n const itemProp = getItem(this.parent.tabs, id);\n const popupEle = document.querySelector('#' + id + '_galleryPopup');\n const 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 hideGalleryPopup(id) {\n const itemProp = getItem(this.parent.tabs, id);\n const popupEle = document.querySelector('#' + id + '_galleryPopup');\n const popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n }\n setFoucsToFirstItem(popupEle, isDropdown, itemID, popup, gallerySettings) {\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = (e) => {\n this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n }\n handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n const 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 createGalleryTemplate(galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n const templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n const 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 createGalleryPopupTemplate(galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n const templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n const 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}\n","var __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};\nvar Ribbon_1;\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 */\nlet Ribbon = Ribbon_1 = class Ribbon extends Component {\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 constructor(options, element) {\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n super(options, element);\n }\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n render() {\n this.initialize();\n }\n preRender() {\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 getPersistData() {\n return this.addOnPersist(['activeLayout']);\n }\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n getModuleName() {\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 requiredModules() {\n const 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 const canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n const 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 initialize() {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn', ...(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 const 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 wireEvents() {\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 wireKeyboardEvent() {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n keyActionHandler(e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n const controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n const templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n const galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n const ribbonControls = controlElements.concat(templateElements, galleryElements);\n const comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n let comboBoxEle;\n if (comboBoxElements) {\n for (let 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 (let 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 let 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 handleNavigation(e, enableRtl, ribbonControls) {\n let groupContainer;\n let 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 const 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 let 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 let launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n const items = groupContainer.querySelectorAll('.e-ribbon-item');\n const 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 const groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n const 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 const 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 const 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 let 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 const 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 let 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 resizeHandler() {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n const scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n const 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 (let i = 0; i < activePopup.length; i++) {\n const dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n const galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n const popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n mouseEventHandler() {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n keytipActionHandler(e) {\n if (this.enableKeyTips) {\n let isKeyTipPresent = false;\n const keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n const 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 (let i = 0; i < activePopup.length; i++) {\n const dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n const 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 const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (let i = 0; i < keyTipItems.length; i++) {\n const 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 checkKeyTipPresent(keyTip, length) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (let i = 0; i < keyTipItems.length; i++) {\n const 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 removeKeytip(keyTip) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (let i = 0; i < keyTipItems.length; i++) {\n const keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n }\n addKeyTip(tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n let 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 const keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][`${type}`];\n for (let 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 renderTabs() {\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 const tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n const 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 const toolbarEle = tabEle.querySelector('.e-toolbar');\n const 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 minimize(val) {\n if (val === this.isMinimized) {\n return;\n }\n const eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, (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 toggleLayout(args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n const eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n }\n tabCreated() {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n }\n ribbonTabSelected(e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n const selectedTabId = e.selectedItem.getAttribute('data-id');\n let selectedIndex = getIndex(this.tabs, ((tab) => (tab.id === selectedTabId)));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n const 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 const elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n const isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n const eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (let i = 0; i < this.itemsModel.length; i++) {\n const 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 const overflowTarget = this.overflowDDB.target;\n const ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n const 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 updateSelectedState(tabID) {\n if (this.contextualTabs.length) {\n for (let i = 0; i < this.contextualTabs.length; i++) {\n let isSelected = false;\n for (let 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 checkOverflow(tabIndex, activeContent) {\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n const 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 let 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 let 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 addTabOverflowKeyTip() {\n const 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 checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent) {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let i = (tab.groups.length - 1); (i >= 0); i--) {\n const group = tab.groups[parseInt(i.toString(), 10)];\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n const 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 const itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n const 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 checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent) {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let i = (tab.groups.length - 1); (i >= 0); i--) {\n const group = tab.groups[parseInt(i.toString(), 10)];\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n const 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 const itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n const valString = itemContainer.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n const 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 createSimplfiedOverflow(tabContent, activeContent, tabIndex) {\n const orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n let isEmptyCollection;\n for (let i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n let isGroupUpdated = false;\n const group = orderedGroups[parseInt(i.toString(), 10)];\n const groupEle = tabContent.querySelector('#' + group.id);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (let j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n const collection = group.collections[parseInt((j - 1).toString(), 10)];\n const collectionEle = groupEle.querySelector('#' + collection.id);\n for (let k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n const item = collection.items[k - 1];\n const itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n let groupHidden = false;\n let itemHidden = false;\n let isAllItemHidden = false;\n let isEmptyCollection = false;\n let groupItems;\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 (let i = 0; i < groupItems.length; i++) {\n groupItems[parseInt(i.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 = 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 (let i = 0; i < groupItems.length; i++) {\n groupItems[parseInt(i.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) {\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 const 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 const 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 checkEmptyCollection(itemsLength) {\n let isEmptyCollection = true;\n for (let 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 updatePopupItems(item, itemEle, isGroupOF, isMenu) {\n const dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n const 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 const 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 = () => {\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 removeSimplfiedOverflow(tabContent, activeContent, tabIndex, isClear = false) {\n const orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n let flag = true;\n let isEmptyCollection;\n for (let i = 0; ((i < orderedGroups.length) && flag); i++) {\n const group = orderedGroups[parseInt(i.toString(), 10)];\n let overflowDDB;\n let overflowtarget;\n if (group.enableGroupOverflow) {\n const 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 (let j = 0; ((j < group.collections.length) && flag); j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (let k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n let itemContainer;\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 let width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n const 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 const 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 let isGroupHidden = false;\n let 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 const groupElement = tabContent.querySelector('#' + group.id);\n const itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n const 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 const ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 (let 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 const overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n }\n checkOverflowHiddenItems(isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n const overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n const overflowButton = getInstance(overflowDDB, DropDownButton);\n const overflowBtnTarget = overflowButton.target;\n const itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n let isHidden = true;\n for (let 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 let isGroupHidden = true;\n let isItemHidden;\n const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (let k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n const overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n const groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (let 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 createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n let overflowButton;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupId);\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n const groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n const 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 const overflowBtnTarget = overflowButton.target;\n const headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n const groupHeader = 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);\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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n let 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 addOverflowEvents(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 createOfTabContainer(groupId, groupHeader, itemEle, tabIndex) {\n const 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 const overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n const itemProp = getGroup(this.tabs, groupId);\n const 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 const 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 checkGroupShrinking(tabIndex, tabContent, activeContent, isLarge) {\n let isOverFlow = true;\n let isBreak = false;\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let 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 checkValidCollectionLength(collections) {\n let count = 0;\n for (let i = 0; i < collections.length; i++) {\n const items = collections[parseInt(i.toString(), 10)].items;\n for (let 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 checkClassicCollection(collections, n, isIncrement) {\n const items = collections[parseInt(n.toString(), 10)].items;\n for (let 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 checkClassicItem(items, n, isIncrement) {\n const 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 checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip = false) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n const canReduceCollection = (collection) => {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n const canReduceItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n const createShrinkEle = (id, firstItem, start, end) => {\n const 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 const moveItemToColumn = (start, end) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n const firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n const shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (let i = start; i <= end; i++) {\n const item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n const 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 const moveCollectionToColumn = (start, end) => {\n const group = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n const firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n const shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (let i = start; i <= end; i++) {\n const collection = group.collections[parseInt(i.toString(), 10)];\n const 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 const orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (let 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 let 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 let 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 const collection = group.collections[0];\n for (let 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 let 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 let 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 checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip = false) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n const canReduceItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n const reduceItemsToSmall = (collectionIndex, start, end, middle = null) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n const reduce = (i) => {\n const item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n this.setItemSize(ele, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n const reduceCollectionsToSmall = (index, start, end, middle = null) => {\n const 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 const reduce = (i) => {\n const collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n let ele = 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 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n const setWidth = (id) => {\n if (!shouldSkip) {\n const ele = activeContent.querySelector('#' + id);\n ele.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (let k = (shrinkColumns.length - 1); k >= 0; k--) {\n const start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n const 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 const 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 (let k = (group.collections.length - 1); k >= 0; k--) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n const classicItems = [];\n for (let 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 (let k = (shrinkColumns.length - 1); k >= 0; k--) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n const collection = group.collections[0];\n const 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 (let k = (group.collections.length - 1); k >= 0; k--) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n const 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 checkGroupExpanding(tabIndex, tabContent, activeContent, isSmall) {\n let isBreak = false;\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (let 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 checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n const canExpandItem = (item) => {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n const expandItemToMedium = (collectionIndex, index, parentEle) => {\n const collection = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n const item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, item);\n }\n };\n const expandCollectionsToMedium = (i) => {\n const collections = this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n const item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n let ele = 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 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 (let k = 0; k < group.collections.length; k++) {\n const collection = group.collections[parseInt(k.toString(), 10)];\n for (let 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 const item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n let itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n const valString = itemEle.getAttribute('data-medium-width');\n const 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 (let 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 const collection = group.collections[parseInt(k.toString(), 10)];\n const itemEle = activeContent.querySelector('#' + collection.id);\n const valString = itemEle.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n const classicItems = [];\n for (let 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 (let k = 0; k < shrinkColumns.length; k++) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const valString = shrinkColumn.getAttribute('data-medium-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n const collection = group.collections[0];\n const 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 const 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 checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n const group = tab.groups[parseInt(groupIndex.toString(), 10)];\n const orientation = group.orientation;\n const ele = activeContent.querySelector('#' + group.id);\n const shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n const expandItemsToLarge = (start, end, parentEle, middle) => {\n const items = this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n const reduce = (i) => {\n const item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n const container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n let ele = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 const expandCollectionsToLarge = (start, end, parentEle, middle) => {\n const collections = this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n const reduce = (i) => {\n const collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n const collectionEle = parentEle.querySelector('#' + collection.id);\n let ele = 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 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n this.setItemSize(ele, 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 (let k = 0; k < shrinkColumns.length; k++) {\n const shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n const valString = shrinkColumn.getAttribute('data-large-width');\n const value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n const start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n const end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n const collection = group.collections[0];\n const 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 const 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 handleContentSize(itemEle, isRemoveOverflow) {\n const 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 setItemSize(itemEle, item) {\n if (itemEle) {\n const 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 createOverflowDropdown(tabIndex, tabContent, activeContent) {\n const collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n for (let i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n const group = collapseOrder[parseInt(i.toString(), 10)];\n const groupEle = this.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n const groupOverFlow = this.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 const groupIndex = getIndex(this.tabs[parseInt(tabIndex.toString(), 10)].groups, (e) => { return e.id === group.id; });\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n const dropdown = this.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this.enableRtl);\n if (group.keyTip) {\n const overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const collectionEle = groupContainer.querySelector('#' + collection.id);\n for (let k = 0; k < collection.items.length; k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n const itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this.handleContentSize(itemEle);\n this.addOverflowEvents(item, itemEle, dropdown);\n }\n const overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n const overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n const overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n }\n }\n // eslint-disable-next-line max-len\n removeOverflowDropdown(tabContent, activeContent, isClear = false, tabIndex) {\n const expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n for (let i = 0; i < expandOrder.length; i++) {\n const group = expandOrder[parseInt(i.toString(), 10)];\n const groupEle = this.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n break;\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n const width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return true;\n }\n this.removeDropdown(group.id);\n const groupIndex = getIndex(this.tabs[parseInt(tabIndex.toString(), 10)].groups, (e) => { return e.id === group.id; });\n this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const collectionEle = groupEle.querySelector('#' + collection.id);\n for (let k = 0; k < collection.items.length; k++) {\n const item = collection.items[parseInt(k.toString(), 10)];\n const itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this.handleContentSize(itemEle, true);\n this.removeOverflowEvent(item, itemEle);\n }\n }\n }\n }\n return false;\n }\n removeDropdown(groupId) {\n const dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n const groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n }\n getGroupResizeOrder(isCollapse, tabIndex) {\n let groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter((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((a, b) => 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 destroyScroll() {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n }\n clearOverflowDropDown(index) {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n const 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 isContextualTab(tabID) {\n let isContextual = false;\n if (this.contextualTabs.length) {\n for (let i = 0; i < this.contextualTabs.length; i++) {\n for (let 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 ribbonTabSelecting(e) {\n this.currentControlIndex = 0;\n const nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n const previousTabId = e.previousItem.getAttribute('data-id');\n let nextIndex = getIndex(this.tabs, ((tab) => (tab.id === nextTabId)));\n const isContextual = this.isContextualTab(nextTabId);\n const previousIndex = getIndex(this.tabs, ((tab) => (tab.id === previousTabId)));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n const eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, (args) => {\n if (args.cancel) {\n return;\n }\n this.destroyScroll();\n if (!this.isAddRemove && (previousIndex !== -1)) {\n this.clearOverflowDropDown(previousIndex);\n }\n const 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 const elements = this.createGroups(this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n }\n createTabItems(tabs) {\n const tabItems = [];\n for (let i = 0; i < tabs.length; i++) {\n const ribbonTab = tabs[parseInt(i.toString(), 10)];\n const header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n const tabIndex = getIndex(this.tabs, ((tab) => (tab.id === ribbonTab.id)));\n if (ribbonTab.keyTip) {\n if (!this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = () => { this.minimize(false); };\n header.ondblclick = () => { this.minimize(true); };\n const tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n const content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n }\n renderInitialTab(index) {\n const elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n const 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 const 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 addOverflowButton(btnId, isGroupOF) {\n const overflowButton = this.createElement('button', {\n id: btnId\n });\n const overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n const 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: (args) => {\n const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n this.trigger('overflowPopupOpen', eventArgs, (ribbonArgs) => {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: (args) => {\n const ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n const groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n this.trigger('overflowPopupClose', eventArgs, (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 let isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = () => { this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = (e) => (this.upDownKeyHandler(e, overflowTarget, isGroupOf), this);\n return overflowDDB;\n }\n upDownKeyHandler(e, target, isGroupOf) {\n let items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n const currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n const control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n const comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n let ribbonItem;\n let 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 const 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 const 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 const currentItemIndex = parseInt(target.getAttribute('index'), 10);\n let itemType = '';\n const 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 const elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n const checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n const 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 findDisabledItem(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 removeOverflowButton(overflowDDB) {\n if (overflowDDB) {\n const btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n }\n removeOverflowEvent(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 createGroupContainer(groupId, groupHeader) {\n const ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n const 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 addExpandCollapse() {\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 = (e) => { this.toggleLayout(e); };\n this.collapseButton.onkeydown = (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 removeExpandCollapse() {\n const index = getIndex(this.tooltipData, (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 reRenderTabs(tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (const key of Object.keys(tabs)) {\n const index = parseInt(key, 10);\n const tab = tabs[parseInt(index.toString(), 10)];\n let isNewTab = false;\n for (let 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 const 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 const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n const tabEle = this.tabObj.element;\n const 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 const 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 (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n const 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 const groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(groupEle => { groupEle.remove(); });\n const elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n }\n switchLayout() {\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 (let i = 0; i <= (this.tabs.length - 1); i++) {\n const tabIndex = i;\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n const groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = groupList[parseInt(i.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, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i, tabContent, activeContent, true, false);\n }\n const groupEle = tabContent.querySelector('#' + group.id);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n const shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (let i = 0; i < shrinkColumns.length; i++) {\n shrinkColumns[parseInt(i.toString(), 10)].remove();\n }\n const groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n const 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 (let j = 0; j < group.collections.length; j++) {\n const collection = group.collections[parseInt(j.toString(), 10)];\n const groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (let k = 0; k < collection.items.length; k++) {\n const itemList = collection.items;\n let item = collection.items[parseInt(k.toString(), 10)];\n let flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n const itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n const ele = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle.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 let 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 let itemEle;\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 const 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 (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = groupList[parseInt(i.toString(), 10)].orientation;\n const groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n const groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n const 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 (let j = 0; j < group.collections.length; j++) {\n let overflowDDB;\n let overflowtarget;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n const overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n const collection = group.collections[parseInt(j.toString(), 10)];\n const groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (let k = 0; k < collection.items.length; k++) {\n const itemList = collection.items;\n let item = collection.items[parseInt(k.toString(), 10)];\n let flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n let itemEle;\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 const ele = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\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 const itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n let 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 let ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n const 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 createLauncherIcon(groupId, groupContainer, tabIndex) {\n const 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', (e) => {\n if (e.key === 'Enter') {\n this.launcherIconClicked(groupId);\n }\n }, this);\n const itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n }\n launcherIconClicked(id) {\n const eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n }\n createGroups(groupList, tabIndex) {\n const groupElements = [];\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n const alignType = group.orientation;\n const 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 const 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 const 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 const 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 const elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n let isItemsHidden = true;\n for (let j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (let 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 const 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 updateGroupProps(key, initialProps, groupEle) {\n // eslint-disable-next-line\n let 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 validateItemSize() {\n for (let k = 0; k < this.tabs.length; k++) {\n const groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (let l = 0; l < groupList.length; l++) {\n const collectionList = groupList[parseInt(l.toString(), 10)].collections;\n const alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (let i = 0; i < collectionList.length; i++) {\n const items = collectionList[parseInt(i.toString(), 10)].items;\n for (let j = 0; j < items.length; j++) {\n const 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 let sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n const 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 createCollection(collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n const collectionElements = [];\n for (let i = 0; i < collectionList.length; i++) {\n const collection = collectionList[parseInt(i.toString(), 10)];\n const 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 const 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 createRibbonItem(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 createItems(itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n const itemElements = [];\n for (let i = 0; i < itemList.length; i++) {\n let item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n let 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 const itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n itemEle.classList.add(constants.RIBBON_ITEM, ...(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 (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i), '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 let 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 const initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n const 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 createHelpPaneTemplate() {\n if (this.helpPaneTemplate) {\n const 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 const templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n const tabEle = this.tabObj.element;\n const 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 createTemplateContent(item, itemElement) {\n const 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 renderItemTemplate(item, itemElement) {\n const templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n const templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n }\n checkID(list, type, initId) {\n const key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (let i = 0; i < list.length; i++) {\n const listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n let htmlAttrID;\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 hasHtmlAtrrID(listItem) {\n let 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 updateCommonProperty(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 (let i = 0; i < this.tabs.length; i++) {\n const tab = this.tabs[parseInt(i.toString(), 10)];\n const contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (const group of tab.groups) {\n let dropdownElement;\n let dropdown;\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 (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 const moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\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 removeLauncherIcon(groupId, dropdownElement, contentEle) {\n const containerId = groupId + constants.CONTAINER_ID;\n const containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n const launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n }\n destroyTabItems(tabs) {\n for (let i = 0; i < tabs.length; i++) {\n const tab = tabs[parseInt(i.toString(), 10)];\n const contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (const group of tab.groups) {\n let dropdownElement;\n let dropdown;\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 (const collection of group.collections) {\n for (const item of collection.items) {\n let ele;\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 destroyFunction(item, ele) {\n const 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 (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n const 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 for (let i = 0; i < item.groupButtonSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n const groupButtonID = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n const index = getIndex(this.tooltipData, (e) => { return e.id === groupButtonID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n const galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (let i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n const galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n const galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n const galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n const galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (let i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n const galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (let 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 const index = getIndex(this.tooltipData, (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 getItemModuleName(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 clearOverflowResize() {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n const tab = this.tabs[this.selectedTab];\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n const tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (let 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 refreshLayout() {\n this.resizeHandler();\n }\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n selectTab(tabId) {\n const index = getIndex(this.tabs, (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 showTab(tabId, 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 hideTab(tabId, isContextual = false) {\n this.showHideTab(tabId, true, isContextual);\n }\n showHideTab(tabId, value, isContextual) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n let contextualTab;\n const tabEle = this.tabObj.element;\n for (let i = 0; i < this.contextualTabs.length; i++) {\n for (let 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 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab) {\n let isTabHidden = true;\n for (let i = 0; i < contextualTab.tabs.length; i++) {\n const index = getIndex(this.tabs, (e) => {\n return e.id === contextualTab.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n const toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n }\n if (isTabHidden) {\n contextualTab.setProperties({ visible: false }, true);\n }\n else {\n contextualTab.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 enableTab(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 disableTab(tabId) {\n this.enableDisableTab(tabId, false);\n }\n enableDisableTab(tabId, value) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const 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 addTab(tab, targetId, isAfter) {\n let index = targetId ? getIndex(this.tabs, (e) => 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 const 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 removeTab(tabId) {\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 addGroup(tabId, group, targetId, isAfter) {\n const tabIndex = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n const tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n const ribbonGroups = tab.groups.slice();\n let index = targetId ? getIndex(ribbonGroups, (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 const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n const element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n const 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 removeGroup(groupId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const collection of itemProp.group.collections) {\n for (const item of collection.items) {\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 const ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 const groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n const 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 isHeaderVisible(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 hideGroup(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 showGroup(groupID) {\n this.showHideGroup(groupID, false);\n }\n showHideGroup(groupID, isHidden) {\n let overflowDDB;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n const 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 const 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 updateHiddenElements(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 checkHiddenElements(key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n let 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 const 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 updateItemsSimplifiedWidth(tabIndex, key) {\n const hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[`${key}`] && hiddenProps[`${key}`].length) {\n for (let i = 0; i < hiddenProps[`${key}`].length; i++) {\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n let hiddenEle;\n let groupEle;\n let isGroupHidden = false;\n let 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 let 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.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this.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.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n const hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach((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((item) => {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this.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 const index = hiddenProps[`${key}`].indexOf(hiddenProps[`${key}`][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[`${key}`].splice(index, 1);\n i--;\n }\n }\n }\n }\n checkWidthDifference(hiddenEle, groupEle) {\n let 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 calculateHiddenElementsWidth(tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n const hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (let i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n calculateMediumDataWidth(hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n const activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n const mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n const overflowEle = this.overflowDDB.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n const selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 const groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (let i = 0; i < groupOFButton.length; i++) {\n const overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n const overflowBtnTarget = overflowButton.target;\n const overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n if (overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n for (let i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n const 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 calculateOverflowItemsWidth(hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n const groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (let i = 0; i < groupList.length; i++) {\n const group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n const groupContainer = document.querySelector('#' + group.id);\n let overflowButton;\n const overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n const overflowEle = overflowButton.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 if (this.overflowDDB) {\n const selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n const overflowEle = this.overflowDDB.target;\n const overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (let i = 0; i < overflowItems.length; i++) {\n const 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 const 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 disableGroup(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 enableGroup(groupID) {\n this.enableDisableGroup(groupID, false);\n }\n enableDisableGroup(groupID, isDisabled) {\n let overflowDDB;\n let overflowtarget;\n const itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n const 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 const 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 addCollection(groupId, collection, targetId, isAfter) {\n const 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 const ribbonCollections = itemProp.group.collections.slice();\n let index = targetId ? getIndex(ribbonCollections, (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 let contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n const collection = itemProp.group.collections[parseInt(index.toString(), 10)];\n const element = this.createCollection([collection], 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 const 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 removeCollection(collectionId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const item of itemProp.collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n const groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n const ribbonGroup = itemProp.group;\n const 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 addItem(collectionId, item, targetId, isAfter) {\n const 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 const ribbonItems = itemProp.collection.items.slice();\n let index = targetId ? getIndex(ribbonItems, (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 let contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n const item = itemProp.collection.items[parseInt(index.toString(), 10)];\n const element = this.createItems([item], 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 const 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 removeItem(itemId) {\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 const item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n const ribbonCollection = itemProp.collection;\n const 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 hideItem(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 showItem(itemId) {\n this.showHideItem(itemId, false);\n }\n showHideItem(itemId, isHidden) {\n const itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n let 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 const 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 updateInitialProps(tabIndex, id, key, isInsert) {\n let 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 const 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 checkHiddenItems(group, isHidden, tabIndex) {\n let isItemsHidden = true;\n let isEmptyCollection;\n const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n const groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (let i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n const collection = group.collections[parseInt(i.toString(), 10)];\n for (let j = 0; j < collection.items.length; j++) {\n const item = collection.items[parseInt(j.toString(), 10)];\n let itemEle;\n if (item.type === 'GroupButton') {\n const 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 const 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 const 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 checkOverflowItems(isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n let overflowDDB;\n let overflowtarget;\n if (isGroupOF) {\n const 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 const overflowEle = this.overflowDDB.target;\n const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n const 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 updateTab(tab) {\n const tabId = tab.id;\n const index = getIndex(this.tabs, (e) => { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n const contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n const groups = this.tabs[parseInt(index.toString(), 10)].groups;\n const 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 (const group of groups) {\n const dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (const collection of group.collections) {\n for (const item of collection.items) {\n let 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 const groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(groupEle => { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n const 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 const 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 updateGroup(group) {\n const groupId = group.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupEle = contentEle.querySelector('#' + groupId);\n const groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n let dropdownElement;\n let 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 (const collection of itemProp.group.collections) {\n for (const item of collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n const collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(collectionEle => { collectionEle.remove(); });\n if (group.orientation) {\n const groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n const 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 const ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n const 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 const 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 const groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n const 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 const 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 const overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n const dropDownBtn = getInstance(overflowEle, DropDownButton);\n const 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 updateCollection(collection) {\n const collectionId = collection.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n let dropdownElement;\n let dropdown;\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 (const item of itemProp.collection.items) {\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n const 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 const groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n const 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 updateItem(item) {\n const itemId = item.id;\n const 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 const contentEle = this.tabObj.items[itemProp.tabIndex].content;\n const groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n const groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n let itemContainer = null;\n let itemEle = null;\n let dropdownElement;\n let dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n const 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 const removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n const 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 let 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 removeItemElement(contentEle, item, dropdown) {\n let 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 enableItem(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 disableItem(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 getItem(itemId) {\n return getItem(this.tabs, itemId).item;\n }\n enableDisableItem(itemId, isDisabled) {\n let isUpdated = false;\n let isOverflow = false;\n const itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n let 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 const itemEle = closest(ele, '.e-ribbon-item');\n const 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 (let i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n const 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 (let i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n const 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 const 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 unwireEvents() {\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 destroy() {\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.destroy();\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 onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n this.element.classList.remove(...oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n this.element.classList.add(...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 (let i = 0; i < this.tabs.length; i++) {\n const tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n const tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (const group of tab.groups) {\n if (group.showLauncherIcon) {\n const className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n const element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n const dropdown = getComponent(element, DropDownButton);\n const launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n const element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n const tabEle = this.tabObj.element;\n const 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 (let 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 const 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 const 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 const toolbar = this.tabObj['tbObj'];\n toolbar.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};\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);\nRibbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n], Ribbon);\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 */\nexport class RibbonFileMenu {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonFileMenu';\n }\n destroy() {\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 createFileMenu(fileMenuOptions) {\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 const tabEle = this.parent.tabObj.element;\n const 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: () => {\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 addFileMenuTooltip(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 addFileMenuKeytip() {\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 ddbBeforeEvent(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 const event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n const eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n }\n ddbAfterEvent(isOpen, args) {\n const element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n const event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n const eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n }\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n cloneMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 createRibbonMenu(menuOptions) {\n const 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', (e) => {\n if (e.key === 'Tab') {\n this.fileMenuDDB.toggle();\n }\n }, this);\n }\n menuBeforeEvent(isOpen, args) {\n const event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n const 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 menuAfterEvent(isOpen, args) {\n const event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n const eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n }\n beforeItemRender(args) {\n const event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n const eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n }\n menuSelect(args) {\n const event = this.parent.fileMenu.select;\n if (event) {\n const 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 setCommonProperties(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 updateFileMenu(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 destroyMenu() {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n }\n destroyDDB() {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n const 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 removeFileMenuTooltip() {\n const index = getIndex(this.parent.tooltipData, (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 removeFileMenuKeytip() {\n if (this.parent.keyTipElements['filemenu']) {\n const index = getIndex(this.parent.keyTipElements['filemenu'], (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 addItems(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 removeItems(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 enableItems(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 disableItems(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 setItem(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}\n","import { 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 */\nexport class RibbonBackstage extends Component {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n /**\n * @private\n * @returns {void}\n */\n render() {\n // render code\n }\n /**\n * @private\n * @returns {void}\n */\n preRender() {\n // pre render code\n }\n getPersistData() {\n return '';\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n onPropertyChanged() {\n // onProperty changes code\n }\n getModuleName() {\n return 'ribbonBackstage';\n }\n destroy() {\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 createBackStage(backStageOptions) {\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 const tabEle = this.parent.tabObj.element;\n const 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: () => {\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 let footerItemCount = 0;\n let itemCount = 0;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const 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 = (e) => {\n e.stopPropagation();\n this.showBackstage();\n this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n const menuItem = this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && this.menuCtrl.items[0].text === item.text) {\n const 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 onClickEvent(e) {\n const targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n }\n addBackStageMenuTooltip(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 addBackStageMenuKeyTip(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 (let 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 checkMenuItems(backStageItems) {\n for (let i = 0; i < backStageItems.length; i++) {\n const item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n const menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n }\n createBackStagePopup(backStageOptions) {\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 let 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', (e) => {\n if (e.code === 'Escape') {\n this.hideBackstage();\n }\n this.handleNavigation(e);\n }, this);\n }\n handleNavigation(e) {\n const closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n const menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n const arrowUp = e.key === 'ArrowUp';\n const 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 (let 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 updatePopupPositionOnRtl(enableRtl) {\n const 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 createBackstageMenu(menuOptions, isFooter) {\n const 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 const 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 = () => {\n this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n this.hideBackstage();\n this.isBackButtonClicked = true;\n };\n }\n const 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 let 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 cloneMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 cloneFooterMenuItem(items) {\n const itemsList = [];\n for (let i = 0; i < items.length; i++) {\n const 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 createBackStageContent(itemId, content) {\n const 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 const 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 createBackStageTemplate(template) {\n const 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 const 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 menuSelect(menuOptions, args) {\n for (let i = 0; i < menuOptions.items.length; i++) {\n const 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 const 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 setCommonProperties(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 updateBackStageMenu(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 let footerItemCount = 0;\n let itemCount = 0;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const 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 destroyMenu() {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n }\n destroyDDB() {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n const 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 removeBackstageMenuTooltip() {\n const index = getIndex(this.parent.tooltipData, (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 removeBackstageMenuKeyTip() {\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n const index = getIndex(this.parent.keyTipElements['backstage'], (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 (let 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 addBackstageItems(items, target, isAfter, isUniqueId) {\n for (let i = 0; i < items.length; i++) {\n const 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 const backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n const backStageOptions = this.parent.backStageMenu;\n for (let i = 0; i < backStageOptions.items.length; i++) {\n const item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (let i = 0; i < backstageItems.length; i++) {\n const item1 = backstageItems[parseInt(i.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 removeBackstageItems(items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n const 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 showBackstage() {\n this.popupEle.show();\n }\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n hideBackstage() {\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}\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nexport class RibbonContextualTab {\n constructor(parent) {\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonContextualTab';\n }\n destroy() {\n this.parent = null;\n }\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n addContextualTabs() {\n let isSelected = false;\n for (let n = 0; n < this.parent.contextualTabs.length; n++) {\n for (let 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 const index = this.parent.tabs.length - 1;\n const tabEle = this.parent.tabObj.element;\n const 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 updateContextualTabs(newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (let 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 const tabEle = this.parent.tabObj.element;\n for (let i = 0; i < this.parent.tabs.length; i++) {\n const 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 for (const key of Object.keys(newProp.tabs)) {\n const index = parseInt(key, 10);\n const tab = this.parent.tabs.filter((e) => e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id)[0];\n this.parent.updateTab(tab);\n }\n }\n }\n}\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 */\nexport class RibbonKeyTip {\n constructor(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n getModuleName() {\n return 'ribbonKeyTip';\n }\n destroy() {\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 createKeytip(key) {\n if (this.parent.keyTipElements) {\n let keytipData;\n if (key === 'tab') {\n for (let 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 const popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (let 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 const backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (let 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 (let 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 (let 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 (let 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 (let 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 calculateItemPosition(key, isMethod = false, keyTip) {\n let xOffset;\n let yOffset;\n const keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][`${key}`];\n if (keytipData) {\n for (let 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 let 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 const 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 createKeyTipElement(id, keyTip, type, xOffset = 'center', yOffset = 'bottom', isTab = false, isPopUpItem = false) {\n let keyEle = document.querySelector('#' + id);\n let isPopUpPresent = false;\n let 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 const 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 const keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n const keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n }\n calculateKeyTipPosition(itemEle, keytipElement, type, yOffset) {\n const 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 keytipPress(keyPress, isMethod = false) {\n this.isKeytipPresent = false;\n for (let i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (let j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n const keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (let k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n const 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(() => {\n const 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 let itemProp;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n const 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 const keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n let 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 const 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 clickItems(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 const 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 const 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 const itemEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle)) {\n setTimeout(() => {\n itemEle.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n const galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n const templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n const itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n const item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (let 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 isInteractableElement(element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n }\n commonItemsKeyTipPress(keyPress, key, isMethod) {\n if (this.parent.keyTipElements[`${key}`]) {\n let isKeyPressed = false;\n const keytipData = this.parent.keyTipElements[`${key}`];\n let keyEle;\n let keytipElement;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (let 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(() => {\n for (let i = 0; i < Object.keys(this.parent.keyTipElements).length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n const keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n this.createKeyTipElement((keytipData[0].id), keytipData[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 removeKeytip(key) {\n const keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n let isKeyTipExist = false;\n this.parent.keysPress = '';\n for (let i = 0; i < keyTipItems.length; i++) {\n const keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this.parent.keyTipElements && this.parent.keyTipElements[this.parent.selectedTab]) {\n for (let j = 0; j < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]).length; j++) {\n const keyText = (Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n const keyTipElement = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)];\n const index = getIndex(keyTipElement[`${keyText}`], (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.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this.parent.activeLayout === 'Classic')) {\n this.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic')) {\n this.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (let n = 0; n < Object.keys(this.parent.keyTipElements).length; n++) {\n if (this.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n const keytipData = this.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (let 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 const tabOverflow = this.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(() => {\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.parent.keyTipElements['backstageMenu']) {\n const index = getIndex(this.parent.keyTipElements['backstageMenu'], (e) => { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\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 showKeyTips(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 hideKeyTips() {\n this.removeKeytip();\n }\n}\n"],"names":["this","__decorate","constants.GROUPOF_BUTTON_ID","constants.RIBBON_TOOLTIP_CONTAINER","constants.RIBBON_TOOLTIP_TITLE","constants.RIBBON_TEXT_CONTAINER","constants.RIBBON_TOOLTIP_ICON","constants.RIBBON_TOOLTIP_CONTENT","constants.RIBBON_TOOLTIP","constants.RIBBON_TOOLTIP_TARGET","constants.RIBBON_GROUP_BUTTON_ID","constants.RIBBON_GROUP_BUTTON","constants.RIBBON_GROUP_BUTTON_CONTENT","constants.RIBBON_SINGLE_BUTTON_SELECTION","constants.RIBBON_MULTIPLE_BUTTON_SELECTION","constants.HEADER_ID","constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP","constants.SPACE","constants.CONTAINER_ID","constants.CONTENT_ID","constants.RTL_CSS","constants.RIBBON_GROUP_CONTAINER","constants.HORIZONTAL_SCROLLBAR","constants.TAB_ID","constants.RIBBON_TAB","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","constants.RIBBON_MINIMIZE","constants.RIBBON_GROUP","constants.RIBBON_TAB_ACTIVE","constants.OVERFLOW_ID","constants.HIDE_CSS","constants.TAB_CONTENT","constants.RIBBON_ITEM","constants.RIBBON_GROUP_OF_BUTTON","constants.RIBBON_OVERFLOW_HEADER","constants.OVRLOF_BUTTON_ID","constants.RIBBON_OVERALL_OF_BUTTON","constants.RIBBON_OF_TAB_CONTAINER","constants.RIBBON_ROW","constants.RIBBON_GROUP_CONTENT","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","constants.RIBBON_GROUP_OVERFLOW","constants.DROPDOWN_ID","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","constants.RIBBON_COLUMN","constants.RIBBON_GROUP_HEADER","constants.RIBBON_LAUNCHER_ICON_ELE","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","constants.RIBBON_COLLECTION","constants.DISABLED_CSS","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","constants.RIBBON_TEMPLATE","constants.GROUP_ID","constants.COLLECTION_ID","constants.ITEM_ID","constants.RIBBON_FILE_MENU_ID","constants.RIBBON_FILE_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU_ID","constants.RIBBON_BACKSTAGE","constants.RIBBON_BACKSTAGE_OPEN","constants.RIBBON_BACKSTAGE_TEXT_MENU","constants.RIBBON_BACKSTAGE_POPUP_ID","constants.RIBBON_BACKSTAGE_POPUP","constants.RIBBON_BACKSTAGE_MENU_WRAPPER","constants.BACKSTAGE_CLOSE_ICON","constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER","constants.RIBBON_FOOTER_MENU_LIST","constants.RIBBON_MENU_LIST","constants.RIBBON_BACKSTAGE_MENU","constants.RIBBON_BACKSTAGE_CONTENT","constants.RIBBON_BACKSTAGE_TEMPLATE","constants.RIBBON_CONTEXTUAL_TAB","constants.RIBBON_KEYTIP","constants.RIBBON_KEYTIP_ID"],"mappings":"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"}