@syncfusion/ej2-ribbon 21.1.35 → 21.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1
- package/README.md +61 -1
- package/dist/ej2-ribbon.umd.min.js +2 -2
- package/dist/ej2-ribbon.umd.min.js.map +1 -1
- package/dist/es6/ej2-ribbon.es2015.js +42 -21
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +42 -21
- package/dist/es6/ej2-ribbon.es5.js.map +1 -1
- package/dist/global/ej2-ribbon.min.js +2 -2
- package/dist/global/ej2-ribbon.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/ribbon/base/ribbon-model.d.ts +1 -1
- package/src/ribbon/base/ribbon.js +18 -10
- package/src/ribbon/base/utils.d.ts +15 -1
- package/src/ribbon/base/utils.js +16 -1
- package/src/ribbon/items/ribbon-button.d.ts +0 -1
- package/src/ribbon/items/ribbon-button.js +2 -1
- package/src/ribbon/items/ribbon-checkbox.d.ts +0 -1
- package/src/ribbon/items/ribbon-checkbox.js +0 -1
- package/src/ribbon/items/ribbon-colorpicker.d.ts +0 -1
- package/src/ribbon/items/ribbon-colorpicker.js +0 -1
- package/src/ribbon/items/ribbon-combobox.d.ts +0 -1
- package/src/ribbon/items/ribbon-combobox.js +0 -1
- package/src/ribbon/items/ribbon-dropdown.d.ts +0 -1
- package/src/ribbon/items/ribbon-dropdown.js +0 -1
- package/src/ribbon/items/ribbon-splitbutton.d.ts +0 -1
- package/src/ribbon/items/ribbon-splitbutton.js +0 -1
- package/src/ribbon/modules/ribbon-filemenu.js +6 -4
- package/styles/bootstrap-dark.css +11 -0
- package/styles/bootstrap.css +11 -0
- package/styles/bootstrap4.css +11 -0
- package/styles/bootstrap5-dark.css +11 -0
- package/styles/bootstrap5.css +11 -0
- package/styles/fabric-dark.css +11 -0
- package/styles/fabric.css +11 -0
- package/styles/fluent-dark.css +11 -0
- package/styles/fluent.css +11 -0
- package/styles/highcontrast-light.css +11 -0
- package/styles/highcontrast.css +11 -0
- package/styles/material-dark.css +11 -0
- package/styles/material.css +11 -0
- package/styles/ribbon/_layout.scss +16 -0
- package/styles/ribbon/bootstrap-dark.css +11 -0
- package/styles/ribbon/bootstrap.css +11 -0
- package/styles/ribbon/bootstrap4.css +11 -0
- package/styles/ribbon/bootstrap5-dark.css +11 -0
- package/styles/ribbon/bootstrap5.css +11 -0
- package/styles/ribbon/fabric-dark.css +11 -0
- package/styles/ribbon/fabric.css +11 -0
- package/styles/ribbon/fluent-dark.css +11 -0
- package/styles/ribbon/fluent.css +11 -0
- package/styles/ribbon/highcontrast-light.css +11 -0
- package/styles/ribbon/highcontrast.css +11 -0
- package/styles/ribbon/material-dark.css +11 -0
- package/styles/ribbon/material.css +11 -0
- package/styles/ribbon/tailwind-dark.css +11 -0
- package/styles/ribbon/tailwind.css +11 -0
- package/styles/tailwind-dark.css +11 -0
- package/styles/tailwind.css +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-ribbon.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","../../src/global.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","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonFileMenu);\nexport * from './index';\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","beforeTooltipRender","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","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","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","VERTICAL_DDB","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","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","wireEvents","window","resizeHandler","activeContent","selectedTab","checkOverflow","scrollModule","scrollEle","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","eventArgs","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","previousIndex","selectedContent","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","groupContainer","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","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","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","expandItemsToMedium","parentEle","ele_4","Row","ele_5","container","ele_6","insertAdjacentElement","ele_7","Template","createTemplateContent","collapseOrder","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","elements","createGroups","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_POPUP_CONTROL","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","tabindex","aria-label","onkeydown","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","i_2","groupContent","replace","groupCollection","itemList","itemEle_1","ele_8","destroyFunction","size","i_3","alignType","createItems","itemsize","launcherIconClicked","groupElements","this_3","showLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","_a","itemElements","ribbonTooltipSettings","helpPaneTemplate","clearTemplate","ribbonTempEle","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","constants.DISABLED_CSS","renderItemTemplate","templateName","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","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","index.Ribbon","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonFileMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-ribbon.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","../../src/global.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_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', 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 * @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 * @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 * @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 * @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({\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.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 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 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","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonFileMenu);\nexport * from './index';\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","beforeTooltipRender","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","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","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","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","VERTICAL_DDB","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","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","wireEvents","window","resizeHandler","activeContent","selectedTab","checkOverflow","scrollModule","scrollEle","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","eventArgs","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","previousIndex","selectedContent","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","groupContainer","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","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","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","expandItemsToMedium","parentEle","ele_4","Row","ele_5","container","ele_6","insertAdjacentElement","ele_7","Template","createTemplateContent","collapseOrder","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","elements","createGroups","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_POPUP_CONTROL","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","tabindex","aria-label","role","onkeydown","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","i_2","groupContent","replace","groupCollection","itemList","itemEle_1","ele_8","destroyFunction","size","i_3","alignType","createItems","itemsize","launcherIconClicked","groupElements","this_3","showLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","_a","itemElements","ribbonTooltipSettings","helpPaneTemplate","clearTemplate","ribbonTempEle","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","constants.DISABLED_CSS","renderItemTemplate","templateName","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","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh","index.Ribbon","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonFileMenu"],"mappings":"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"}
|