@syncfusion/ej2-ribbon 21.1.35 → 21.2.3

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 (62) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/README.md +61 -1
  3. package/dist/ej2-ribbon.umd.min.js +2 -2
  4. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-ribbon.es2015.js +137 -36
  6. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  7. package/dist/es6/ej2-ribbon.es5.js +139 -36
  8. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  9. package/dist/global/ej2-ribbon.min.js +2 -2
  10. package/dist/global/ej2-ribbon.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +13 -16
  13. package/src/ribbon/base/constant.d.ts +2 -0
  14. package/src/ribbon/base/constant.js +2 -0
  15. package/src/ribbon/base/ribbon-model.d.ts +1 -1
  16. package/src/ribbon/base/ribbon.js +26 -16
  17. package/src/ribbon/base/utils.d.ts +15 -1
  18. package/src/ribbon/base/utils.js +16 -1
  19. package/src/ribbon/items/ribbon-button.d.ts +0 -1
  20. package/src/ribbon/items/ribbon-button.js +2 -1
  21. package/src/ribbon/items/ribbon-checkbox.d.ts +0 -1
  22. package/src/ribbon/items/ribbon-checkbox.js +0 -1
  23. package/src/ribbon/items/ribbon-colorpicker.d.ts +7 -1
  24. package/src/ribbon/items/ribbon-colorpicker.js +40 -4
  25. package/src/ribbon/items/ribbon-combobox.d.ts +0 -1
  26. package/src/ribbon/items/ribbon-combobox.js +4 -2
  27. package/src/ribbon/items/ribbon-dropdown.d.ts +0 -1
  28. package/src/ribbon/items/ribbon-dropdown.js +21 -3
  29. package/src/ribbon/items/ribbon-splitbutton.d.ts +0 -1
  30. package/src/ribbon/items/ribbon-splitbutton.js +21 -3
  31. package/src/ribbon/modules/ribbon-filemenu.js +6 -4
  32. package/styles/bootstrap-dark.css +47 -12
  33. package/styles/bootstrap.css +47 -12
  34. package/styles/bootstrap4.css +47 -12
  35. package/styles/bootstrap5-dark.css +47 -12
  36. package/styles/bootstrap5.css +47 -12
  37. package/styles/fabric-dark.css +47 -12
  38. package/styles/fabric.css +47 -12
  39. package/styles/fluent-dark.css +47 -12
  40. package/styles/fluent.css +47 -12
  41. package/styles/highcontrast-light.css +47 -12
  42. package/styles/highcontrast.css +47 -12
  43. package/styles/material-dark.css +47 -12
  44. package/styles/material.css +47 -12
  45. package/styles/ribbon/_layout.scss +77 -18
  46. package/styles/ribbon/bootstrap-dark.css +47 -12
  47. package/styles/ribbon/bootstrap.css +47 -12
  48. package/styles/ribbon/bootstrap4.css +47 -12
  49. package/styles/ribbon/bootstrap5-dark.css +47 -12
  50. package/styles/ribbon/bootstrap5.css +47 -12
  51. package/styles/ribbon/fabric-dark.css +47 -12
  52. package/styles/ribbon/fabric.css +47 -12
  53. package/styles/ribbon/fluent-dark.css +47 -12
  54. package/styles/ribbon/fluent.css +47 -12
  55. package/styles/ribbon/highcontrast-light.css +47 -12
  56. package/styles/ribbon/highcontrast.css +47 -12
  57. package/styles/ribbon/material-dark.css +47 -12
  58. package/styles/ribbon/material.css +47 -12
  59. package/styles/ribbon/tailwind-dark.css +47 -12
  60. package/styles/ribbon/tailwind.css +47 -12
  61. package/styles/tailwind-dark.css +47 -12
  62. package/styles/tailwind.css +47 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement} template - Template property value.\n * @returns {Function} - Return template function.\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @param {string} id - Gets the ID of the item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele && (DisplayMode.Simplified !== DisplayMode.None)) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n */\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 */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.cssClass ? data.cssClass + ' ' + data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON : data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content\n });\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 */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n cssClass: (constants.RIBBON_TOOLTIP + ' ' + ribbon.cssClass).trim(),\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this)\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\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 */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the 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 both simplified layout group and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 3] = \"Auto\";\n /**\n * The item is hidden in simplified mode.\n */\n DisplayMode[DisplayMode[\"None\"] = 0] = \"None\";\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 template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, 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';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.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 }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n splitBtn.close = function () {\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n beforeClose: dropDownSettings.beforeClose,\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }, buttonEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle) {\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n return dropdown;\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: splitButtonSettings.beforeClose,\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest } 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 } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonFileMenu', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n this.createHelpPaneTemplate();\n createTooltip(this.element, this);\n this.wireEvents();\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n this.addExpandCollapse();\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n if (!activeContent) {\n activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({}, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow)) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = (group.collections.length); ((j >= 1) && flag); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if ((item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow)) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer) {\n var overflowButton;\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n overflowButton.target.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofTabContainer.append(ofGroupContainer);\n }\n ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n this.addOverflowEvents(item, itemEle, overflowButton);\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n if (((k - 1) >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n if (canReduceCollection(group.collections[k - 1])) {\n if (((k - 2) >= 0) && canReduceCollection(group.collections[k - 2])) {\n moveCollectionToColumn(k - 2, k);\n }\n else {\n moveCollectionToColumn(k - 1, k);\n }\n k -= 2;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k--;\n }\n }\n }\n }\n else {\n if (group.collections.length === 1) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n if (((k - 1) >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n if (canReduceItem(collection.items[k - 1])) {\n if (((k - 2) >= 0) && canReduceItem(collection.items[k - 2])) {\n moveItemToColumn(k - 2, k);\n }\n else {\n moveItemToColumn(k - 1, k);\n }\n k -= 2;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k--;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_1, item);\n }\n };\n var reduceCollectionsToSmall = function (index, start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[start + 1].items[0])) {\n if ((end - start) === 1) { //if only 2 item, the difference will be 1, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n //If items length is 1 then, it would have been already check for shrinked column\n if ((collection.items.length > 1)) {\n if (canReduceItem(collection.items[0]) && canReduceItem(collection.items[1])) {\n if (collection.items.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, 0, 1);\n }\n else if (canReduceItem(collection.items[2])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, 0, 2);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (group.collections.length === 1) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[start + 1])) {\n if ((end - start) === 1) { //if only 2 item, the difference will be 1, 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);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n setWidth(item.id);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemsToMedium = function (collectionIndex, start, end, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (start, end) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n for (var i = start; i <= end; i++) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (group.collections.length !== 1) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemsToMedium(k, l, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemsToMedium(k, 0, (collection.items.length === 2) ? 1 : 2, 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 if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n expandItemsToMedium(0, start, end, shrinkColumn);\n }\n else {\n expandCollectionsToMedium(start, end);\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n for (var i = end; i >= start; i--) {\n var item = items[parseInt(i.toString(), 10)];\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('afterend', container);\n }\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n for (var i = end; i >= start; i--) {\n var collection = collections[parseInt(i.toString(), 10)];\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('afterend', collectionEle);\n }\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n return overflowDDB;\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === \"Enter\") {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function () {\n this.destroyScroll();\n this.destroyTabItems(this.tabsInternal);\n this.checkID(this.tabs, 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n var contentEle = this.tabObj.items[this.selectedTab].content;\n if (contentEle.innerHTML === '') {\n this.renderInitialTab(this.selectedTab);\n }\n };\n Ribbon.prototype.switchLayout = function () {\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.None)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_8 = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle.querySelector('#' + item.id);\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n if (item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n size = RibbonItemSize.Medium;\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n item.setProperties({ activeSize: size }, true);\n this.setItemSize(ele, item);\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n if (item.displayOptions === DisplayMode.None) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else if ((item.displayOptions === DisplayMode.Overflow)) {\n var itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n groupCollection.append(itemEle);\n this.removeOverflowEvent(item, itemEle);\n }\n else if ((item.displayOptions === DisplayMode.Simplified)) {\n //To make sure the items are in proper order\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var _this = this;\n var groupElements = [];\n var _loop_3 = function (i) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this_3.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this_3.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this_3.createElement('div', {\n className: this_3.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_3.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this_3.activeLayout === 'Classic') {\n var groupHeader = this_3.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 var launcherIcon = this_3.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this_3.launcherIconCss ? this_3.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: group.id + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this_3.launcherIconClicked.bind(this_3, group.id), this_3);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === \"Enter\") {\n _this.launcherIconClicked(group.id);\n }\n }, this_3);\n }\n var elements = this_3.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this_3.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n };\n var this_3 = this;\n for (var i = 0; i < groupList.length; i++) {\n _loop_3(i);\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({ allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large) }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while ((this.activeLayout === 'Simplified') && (flag) && (item.displayOptions === DisplayMode.None)) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n 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 }\n if ((this.activeLayout === 'Simplified') && (item.displayOptions === DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.disabled ? constants.DISABLED_CSS + constants.SPACE + item.cssClass : item.cssClass,\n id: item.id\n });\n if (item.disabled) {\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = 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 && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = 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 && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele = getItemElement(this, itemId, itemProp);\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n this.removeExpandCollapse();\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n 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 break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('.' + constants.RIBBON_GROUP_OVERFLOW_DDB);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs();\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID,\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === \"Tab\") {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","displayOptions","DisplayMode","Simplified","None","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP","trim","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","split","join","click","controlId","updateButton","merge","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","classList","remove","beforeOpen","beforeTileRender","open","add","wrapper","EventHandler","colorPickerEle","colorPickerObj","close","getColorPickerObj","getValue","type","updateColorPicker","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","event","closest","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","setContent","splitButtonEle","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","wireEvents","window","resizeHandler","activeContent","selectedTab","constants.CONTENT_ID","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","eventArgs","previousIndex","selectedContent","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","groupContainer","constants.CONTAINER_ID","allowedSizes","itemContainer","setAttribute","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","contains","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","shrinkColumns","querySelectorAll","reduceItemsToSmall","ele_1","reduceCollectionsToSmall","ele_2","setWidth","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemsToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","Template","createTemplateContent","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","tabindex","aria-label","onkeydown","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","ele_8","destroyFunction","size","i_3","alignType","constants.RIBBON_GROUP_HEADER","createItems","itemsize","launcherIconClicked","groupElements","_loop_3","this_3","constants.RIBBON_GROUP_CONTAINER","constants.RIBBON_GROUP_CONTENT","showLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","_a","itemElements","constants.DISABLED_CSS","ribbonTooltipSettings","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","renderItemTemplate","list","initId","listitem","setCommonProperties","_i","_b","_c","_d","_e","getItemModuleName","removeLauncherIcon","containerId","containerEle","clearOverflowResize","selectTab","tabId","addTab","isAfter","tabItem","removeTab","groups_1","addGroup","ribbonGroups","targetEle","removeGroup","removeItemElement","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","enableItem","enableDisableItem","disableItem","isDisabled","toggleAttribute","unwireEvents","undefined","removeClass","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","focus","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (item.id === id) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele && (DisplayMode.Simplified !== DisplayMode.None)) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.cssClass ? data.cssClass + ' ' + data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON : data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n cssClass: (constants.RIBBON_TOOLTIP + ' ' + ribbon.cssClass).trim(),\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this)\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the 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 both simplified layout group and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 3] = \"Auto\";\n /**\n * The item is hidden in simplified mode.\n */\n DisplayMode[DisplayMode[\"None\"] = 0] = \"None\";\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 template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, 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';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function (e) {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }, buttonEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle) {\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n return dropdown;\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest } 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 } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.idIndex = 0;\n this.tooltipData = [];\n this.isAddRemove = false;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { member: 'ribbonDropDown', args: [this] }, { member: 'ribbonSplitButton', args: [this] }, { member: 'ribbonCheckBox', args: [this] }, { member: 'ribbonColorPicker', args: [this] }, { member: 'ribbonComboBox', args: [this] }, { member: 'ribbonFileMenu', args: [this] });\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n this.createHelpPaneTemplate();\n createTooltip(this.element, this);\n this.wireEvents();\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n this.addExpandCollapse();\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow)) && !isNullOrUndefined(itemContainer)) {\n itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if ((item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow)) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle_1 = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle_1.append(itemContainer);\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n }\n }\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);\n if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer) {\n var overflowButton;\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n overflowButton.target.append(itemEle);\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofTabContainer.append(ofGroupContainer);\n }\n ofGroupContainer.append(itemEle);\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n }\n this.addOverflowEvents(item, itemEle, overflowButton);\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n if (((k - 1) >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n if (canReduceCollection(group.collections[k - 1])) {\n if (((k - 2) >= 0) && canReduceCollection(group.collections[k - 2])) {\n moveCollectionToColumn(k - 2, k);\n }\n else {\n moveCollectionToColumn(k - 1, k);\n }\n k -= 2;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k--;\n }\n }\n }\n }\n else {\n if (group.collections.length === 1) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n if (((k - 1) >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n if (canReduceItem(collection.items[k - 1])) {\n if (((k - 2) >= 0) && canReduceItem(collection.items[k - 2])) {\n moveItemToColumn(k - 2, k);\n }\n else {\n moveItemToColumn(k - 1, k);\n }\n k -= 2;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k--;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_1, item);\n }\n };\n var reduceCollectionsToSmall = function (index, start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[start + 1].items[0])) {\n if ((end - start) === 1) { //if only 2 item, the difference will be 1, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n //If items length is 1 then, it would have been already check for shrinked column\n if ((collection.items.length > 1)) {\n if (canReduceItem(collection.items[0]) && canReduceItem(collection.items[1])) {\n if (collection.items.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, 0, 1);\n }\n else if (canReduceItem(collection.items[2])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, 0, 2);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (group.collections.length === 1) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[start + 1])) {\n if ((end - start) === 1) { //if only 2 item, the difference will be 1, 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);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n setWidth(item.id);\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemsToMedium = function (collectionIndex, start, end, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (start, end) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n for (var i = start; i <= end; i++) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (group.collections.length !== 1) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemsToMedium(k, l, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemsToMedium(k, 0, (collection.items.length === 2) ? 1 : 2, 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 if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n expandItemsToMedium(0, start, end, shrinkColumn);\n }\n else {\n expandCollectionsToMedium(start, end);\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n for (var i = end; i >= start; i--) {\n var item = items[parseInt(i.toString(), 10)];\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('afterend', container);\n }\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n for (var i = end; i >= start; i--) {\n var collection = collections[parseInt(i.toString(), 10)];\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('afterend', collectionEle);\n }\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n var nextTabId = e.selectingItem.getAttribute('data-id');\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex, selectedIndex: nextIndex\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n for (var i = 0; i < tabs.length; i++) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId) {\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n if (ele) {\n args.cancel = true;\n }\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n return overflowDDB;\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function () { _this.toggleLayout(); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout();\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function () {\n this.destroyScroll();\n this.destroyTabItems(this.tabsInternal);\n this.checkID(this.tabs, 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n var contentEle = this.tabObj.items[this.selectedTab].content;\n if (contentEle.innerHTML === '') {\n this.renderInitialTab(this.selectedTab);\n }\n };\n Ribbon.prototype.switchLayout = function () {\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {\n shrinkColumns[parseInt(i_2.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.None)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_8 = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle.querySelector('#' + item.id);\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n if (item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n size = RibbonItemSize.Medium;\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n item.setProperties({ activeSize: size }, true);\n this.setItemSize(ele, item);\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_3 = 0; i_3 < groupList.length; i_3++) {\n var group = groupList[parseInt(i_3.toString(), 10)];\n var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n if (item.displayOptions === DisplayMode.None) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else if ((item.displayOptions === DisplayMode.Overflow)) {\n var itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n groupCollection.append(itemEle);\n this.removeOverflowEvent(item, itemEle);\n }\n else if ((item.displayOptions === DisplayMode.Simplified)) {\n //To make sure the items are in proper order\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n groupCollection.append(itemEle);\n }\n var ele = groupContainer.querySelector('#' + item.id);\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var _this = this;\n var groupElements = [];\n var _loop_3 = function (i) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this_3.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this_3.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this_3.createElement('div', {\n className: this_3.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_3.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this_3.activeLayout === 'Classic') {\n var groupHeader = this_3.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 var launcherIcon = this_3.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this_3.launcherIconCss ? this_3.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: group.id + 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_3.launcherIconClicked.bind(this_3, group.id), this_3);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(group.id);\n }\n }, this_3);\n }\n var elements = this_3.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this_3.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n };\n var this_3 = this;\n for (var i = 0; i < groupList.length; i++) {\n _loop_3(i);\n }\n return groupElements;\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while ((this.activeLayout === 'Simplified') && (flag) && (item.displayOptions === DisplayMode.None)) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n var size = item.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n 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 }\n if ((this.activeLayout === 'Simplified') && (item.displayOptions === DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = 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 && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = contentEle.querySelector('#' + item.id);\n }\n else {\n //Checks for Simplified and Auto options (Auto = 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 && (item.displayOptions !== DisplayMode.None)) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele = getItemElement(this, itemId, itemProp);\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n var moduleName = this.getItemModuleName(itemProp.item);\n if (moduleName !== 'template') {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n Ribbon.prototype.destroy = function () {\n destroyTooltip(this.element);\n this.destroyTabItems(this.tabs);\n this.removeExpandCollapse();\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('.' + constants.RIBBON_GROUP_OVERFLOW_DDB);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs();\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","displayOptions","DisplayMode","Simplified","None","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP","trim","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","onclick","clicked","setAttribute","addOverFlowEvents","overflowButton","buttonObj","toggle","removeOverFlowEvents","split","join","click","controlId","updateButton","merge","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","classList","remove","beforeOpen","beforeTileRender","open","add","wrapper","EventHandler","toggleWrapperHover","isAdd","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","type","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","setContent","splitButtonEle","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","wireEvents","window","resizeHandler","activeContent","selectedTab","constants.CONTENT_ID","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","eventArgs","previousIndex","selectedContent","firstChild","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","groupContainer","constants.CONTAINER_ID","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","contains","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","shrinkColumns","querySelectorAll","reduceItemsToSmall","ele_1","reduceCollectionsToSmall","ele_2","setWidth","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemsToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","Template","createTemplateContent","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","tabindex","aria-label","role","onkeydown","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","ele_8","destroyFunction","size","i_3","alignType","constants.RIBBON_GROUP_HEADER","createItems","itemsize","launcherIconClicked","groupElements","_loop_3","this_3","constants.RIBBON_GROUP_CONTAINER","constants.RIBBON_GROUP_CONTENT","showLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","_a","itemElements","constants.DISABLED_CSS","ribbonTooltipSettings","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_i","_b","_c","_d","_e","getItemModuleName","removeLauncherIcon","containerId","containerEle","clearOverflowResize","selectTab","tabId","addTab","isAfter","tabItem","removeTab","groups_1","addGroup","ribbonGroups","targetEle","removeGroup","removeItemElement","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","enableItem","enableDisableItem","disableItem","isDisabled","toggleAttribute","unwireEvents","undefined","removeClass","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","focus","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh"],"mappings":"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"}