@syncfusion/ej2-ribbon 21.1.37 → 22.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/.eslintrc.json +1 -0
  2. package/dist/ej2-ribbon.umd.min.js +2 -2
  3. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-ribbon.es2015.js +1344 -176
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +1367 -191
  7. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  8. package/dist/global/ej2-ribbon.min.js +2 -2
  9. package/dist/global/ej2-ribbon.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +12 -12
  12. package/src/ribbon/base/constant.d.ts +2 -0
  13. package/src/ribbon/base/constant.js +2 -0
  14. package/src/ribbon/base/interface.d.ts +6 -6
  15. package/src/ribbon/base/interface.js +6 -6
  16. package/src/ribbon/base/ribbon-model.d.ts +2 -2
  17. package/src/ribbon/base/ribbon.d.ts +43 -1
  18. package/src/ribbon/base/ribbon.js +1082 -169
  19. package/src/ribbon/base/utils.d.ts +2 -2
  20. package/src/ribbon/base/utils.js +11 -6
  21. package/src/ribbon/items/ribbon-button.js +1 -0
  22. package/src/ribbon/items/ribbon-checkbox.js +1 -0
  23. package/src/ribbon/items/ribbon-colorpicker.d.ts +7 -0
  24. package/src/ribbon/items/ribbon-colorpicker.js +41 -3
  25. package/src/ribbon/items/ribbon-combobox.js +5 -1
  26. package/src/ribbon/items/ribbon-dropdown.d.ts +7 -1
  27. package/src/ribbon/items/ribbon-dropdown.js +173 -3
  28. package/src/ribbon/items/ribbon-splitbutton.js +45 -2
  29. package/src/ribbon/models/ribbon-combobox-settings-model.d.ts +10 -5
  30. package/src/ribbon/models/ribbon-combobox-settings.d.ts +10 -5
  31. package/src/ribbon/models/ribbon-file-menu-settings-model.d.ts +3 -1
  32. package/src/ribbon/models/ribbon-file-menu-settings.d.ts +3 -1
  33. package/src/ribbon/models/ribbon-item-model.d.ts +1 -1
  34. package/src/ribbon/models/ribbon-item.d.ts +1 -1
  35. package/styles/bootstrap-dark.css +62 -12
  36. package/styles/bootstrap.css +62 -12
  37. package/styles/bootstrap4.css +62 -12
  38. package/styles/bootstrap5-dark.css +62 -12
  39. package/styles/bootstrap5.css +62 -12
  40. package/styles/fabric-dark.css +62 -12
  41. package/styles/fabric.css +62 -12
  42. package/styles/fluent-dark.css +62 -12
  43. package/styles/fluent.css +62 -12
  44. package/styles/highcontrast-light.css +62 -12
  45. package/styles/highcontrast.css +66 -16
  46. package/styles/material-dark.css +62 -12
  47. package/styles/material.css +62 -12
  48. package/styles/material3-dark.css +1671 -0
  49. package/styles/material3-dark.scss +3 -0
  50. package/styles/material3.css +1727 -0
  51. package/styles/material3.scss +3 -0
  52. package/styles/ribbon/_bootstrap-dark-definition.scss +4 -0
  53. package/styles/ribbon/_bootstrap-definition.scss +4 -0
  54. package/styles/ribbon/_bootstrap4-definition.scss +4 -0
  55. package/styles/ribbon/_bootstrap5-definition.scss +4 -0
  56. package/styles/ribbon/_fabric-dark-definition.scss +4 -0
  57. package/styles/ribbon/_fabric-definition.scss +4 -0
  58. package/styles/ribbon/_fluent-definition.scss +4 -0
  59. package/styles/ribbon/_fusionnew-definition.scss +4 -0
  60. package/styles/ribbon/_highcontrast-definition.scss +6 -2
  61. package/styles/ribbon/_highcontrast-light-definition.scss +4 -0
  62. package/styles/ribbon/_layout.scss +88 -18
  63. package/styles/ribbon/_material-dark-definition.scss +4 -0
  64. package/styles/ribbon/_material-definition.scss +4 -0
  65. package/styles/ribbon/_material3-dark-definition.scss +1 -0
  66. package/styles/ribbon/_material3-definition.scss +210 -0
  67. package/styles/ribbon/_tailwind-definition.scss +4 -0
  68. package/styles/ribbon/bootstrap-dark.css +62 -12
  69. package/styles/ribbon/bootstrap.css +62 -12
  70. package/styles/ribbon/bootstrap4.css +62 -12
  71. package/styles/ribbon/bootstrap5-dark.css +62 -12
  72. package/styles/ribbon/bootstrap5.css +62 -12
  73. package/styles/ribbon/fabric-dark.css +62 -12
  74. package/styles/ribbon/fabric.css +62 -12
  75. package/styles/ribbon/fluent-dark.css +62 -12
  76. package/styles/ribbon/fluent.css +62 -12
  77. package/styles/ribbon/highcontrast-light.css +62 -12
  78. package/styles/ribbon/highcontrast.css +66 -16
  79. package/styles/ribbon/icons/_material3-dark.scss +1 -0
  80. package/styles/ribbon/material-dark.css +62 -12
  81. package/styles/ribbon/material.css +62 -12
  82. package/styles/ribbon/material3-dark.css +1671 -0
  83. package/styles/ribbon/material3-dark.scss +18 -0
  84. package/styles/ribbon/material3.css +1727 -0
  85. package/styles/ribbon/material3.scss +18 -0
  86. package/styles/ribbon/tailwind-dark.css +62 -12
  87. package/styles/ribbon/tailwind.css +62 -12
  88. package/styles/tailwind-dark.css +62 -12
  89. package/styles/tailwind.css +62 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @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"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","displayOptions","DisplayMode","Simplified","None","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP","trim","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","onclick","clicked","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","cancel","isNullOrUndefined","event","closest","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","setContent","splitButtonEle","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","wireEvents","window","resizeHandler","activeContent","selectedTab","constants.CONTENT_ID","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","eventArgs","previousIndex","selectedContent","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","groupContainer","constants.CONTAINER_ID","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","contains","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","shrinkColumns","querySelectorAll","reduceItemsToSmall","ele_1","reduceCollectionsToSmall","ele_2","setWidth","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemsToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","Template","createTemplateContent","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","tabindex","aria-label","role","onkeydown","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","ele_8","destroyFunction","size","i_3","alignType","constants.RIBBON_GROUP_HEADER","createItems","itemsize","launcherIconClicked","groupElements","_loop_3","this_3","constants.RIBBON_GROUP_CONTAINER","constants.RIBBON_GROUP_CONTENT","showLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","_a","itemElements","constants.DISABLED_CSS","ribbonTooltipSettings","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","renderItemTemplate","list","initId","listitem","setCommonProperties","_i","_b","_c","_d","_e","getItemModuleName","removeLauncherIcon","containerId","containerEle","clearOverflowResize","selectTab","tabId","addTab","isAfter","tabItem","removeTab","groups_1","addGroup","ribbonGroups","targetEle","removeGroup","removeItemElement","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","enableItem","enableDisableItem","disableItem","isDisabled","toggleAttribute","unwireEvents","undefined","removeClass","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","focus","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-ribbon.umd.min.js","sources":["../src/ribbon/base/utils.js","../src/ribbon/base/interface.js","../src/ribbon/models/ribbon-button-settings.js","../src/ribbon/models/ribbon-checkbox-settings.js","../src/ribbon/models/ribbon-colorpicker-settings.js","../src/ribbon/models/ribbon-combobox-settings.js","../src/ribbon/models/ribbon-dropdown-settings.js","../src/ribbon/models/ribbon-splitbutton-settings.js","../src/ribbon/models/ribbon-tooltip.js","../src/ribbon/models/ribbon-item.js","../src/ribbon/models/ribbon-collection.js","../src/ribbon/models/ribbon-group.js","../src/ribbon/models/ribbon-tab.js","../src/ribbon/models/ribbon-file-menu-settings.js","../src/ribbon/base/constant.js","../src/ribbon/items/ribbon-button.js","../src/ribbon/items/ribbon-checkbox.js","../src/ribbon/items/ribbon-colorpicker.js","../src/ribbon/items/ribbon-combobox.js","../src/ribbon/items/ribbon-dropdown.js","../src/ribbon/items/ribbon-splitbutton.js","../src/ribbon/base/ribbon.js","../src/ribbon/modules/ribbon-filemenu.js"],"sourcesContent":["import { compile, getComponent, select } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @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 if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.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 classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Picker')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n buttonEle.setAttribute('aria-label', btnSettings.content);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n 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 inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n overflowButton.toggle();\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: colorPickerSettings.change,\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function (e) {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }, buttonEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var items = target.querySelectorAll('.e-control');\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n overflowButton.toggle();\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings } 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';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox);\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 this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this] }, { 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 var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n createTooltip(this.element, this);\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var ribbonControls = activeContent.querySelectorAll('.e-control');\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this)\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function () {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n };\n Ribbon.prototype.tabCreated = function () {\n this.addExpandCollapse();\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.checkOverflow(selectedIndex, e.selectedContent.firstChild);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (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.Auto) ||\n (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 if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\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.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _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 k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n 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 expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('afterend', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('afterend', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.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, this_1.enableRtl);\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\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 _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n 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 var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n items[this.itemIndex].querySelector('.e-control').focus();\n }\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n if (e.key === 'ArrowLeft') {\n this.enableRtl ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus() :\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n 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.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_1 = 0; i_1 < groupList.length; i_1++) {\n var group = groupList[parseInt(i_1.toString(), 10)];\n var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_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.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n item.setProperties({ activeSize: size }, true);\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_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 itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle) {\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.createLauncherIcon = function (groupId, groupContainer) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\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.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n 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 this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n listitem.setProperties({ id: initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n 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 if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\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) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n };\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n var group = groups_1[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (!(this.activeLayout === RibbonLayout.Simplified && ribbonItem.displayOptions === DisplayMode.Overflow)) {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n else {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n 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 this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\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 if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab':\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n break;\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs();\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu':\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n case 'helpPaneTemplate':\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.addFileMenuTooltip(fileMenuOptions);\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","tab","j","groups","group","k","collections","collection","l","items","item","tabIndex","groupIndex","collectionIndex","itemIndex","getCollection","getGroup","destroyControl","element","moduleName","getComponent","destroy","updateCommonProperty","commonProp","setProperties","updateControlDisabled","disable","enabled","disabled","getItemElement","parent","itemProp","contentEle","tabObj","activeLayout","RibbonLayout","Classic","displayOptions","DisplayMode","ribbonDropDownModule","getOverflowDropDownPopup","querySelector","ele","Simplified","enableGroupOverflow","constants.GROUPOF_BUTTON_ID","DropDownButton","overflowDDB","target","isTooltipPresent","tooltip","iconCss","title","cssClass","setToolTipContent","args","tooltipData","targetId","getAttribute","data","filter","createElement","constants.RIBBON_TOOLTIP_CONTAINER","append","header","className","constants.RIBBON_TOOLTIP_TITLE","appendChild","textContainer","constants.RIBBON_TEXT_CONTAINER","customCss","constants.RIBBON_TOOLTIP_ICON","tooltipContent","constants.RIBBON_TOOLTIP_CONTENT","createTooltip","ribbon","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP","trim","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","appendTo","destroyTooltip","updateTooltipProp","prop","ItemOrientation","RibbonItemSize","RibbonItemType","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","value","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","ITEM_VERTICAL_CENTER","EXPAND_COLLAPSE_ICON","OVERFLOW_ICON","VERTICAL_DDB","DISABLED_CSS","RTL_CSS","RIBBON_HOVER","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","RIBBON_POPUP_OPEN","HORIZONTAL_SCROLLBAR","HIDE_CSS","RIBBON_TAB_ACTIVE","RIBBON_TAB_ITEM","RIBBON_COLLAPSE_BUTTON","RIBBON_EXPAND_BUTTON","RIBBON_COLLAPSIBLE","RIBBON_OVERALL_OF_BUTTON","RIBBON_GROUP_OF_BUTTON","RIBBON_OVERFLOW_TARGET","RIBBON_OVERFLOW","TAB_CONTENT","RIBBON_MINIMIZE","RIBBON_GROUP","RIBBON_GROUP_CONTAINER","RIBBON_OF_TAB_CONTAINER","RIBBON_OF_GROUP_CONTAINER","RIBBON_GROUP_CONTENT","RIBBON_GROUP_HEADER","RIBBON_OVERFLOW_HEADER","RIBBON_GROUP_OVERFLOW","RIBBON_GROUP_OVERFLOW_DDB","RIBBON_LAUNCHER","RIBBON_LAUNCHER_ICON_ELE","RIBBON_LAUNCHER_ICON","RIBBON_COLLECTION","RIBBON_ITEM","RIBBON_ROW","RIBBON_COLUMN","RIBBON_LARGE_ITEM","RIBBON_MEDIUM_ITEM","RIBBON_SMALL_ITEM","RIBBON_CONTENT_HEIGHT","RIBBON_TEMPLATE","RIBBON_HELP_TEMPLATE","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","RIBBON_SIMPLIFIED_MODE","COLLAPSE_BUTTON_ID","OVRLOF_BUTTON_ID","GROUPOF_BUTTON_ID","HEADER_ID","LAUNCHER_ID","CONTENT_ID","CONTAINER_ID","OVERFLOW_ID","DROPDOWN_ID","RIBBON_FILE_MENU_LIST","RIBBON_HELP_PANE_TEMPLATE_ID","RIBBON_FILE_MENU_WIDTH","RIBBON_HELP_PANE_TEMPLATE_WIDTH","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","isPrimary","isToggle","created","onclick","clicked","setAttribute","addOverFlowEvents","overflowButton","type","buttonObj","toggle","removeOverFlowEvents","split","join","click","controlId","updateButton","merge","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","classList","remove","beforeOpen","beforeTileRender","open","add","wrapper","EventHandler","toggleWrapperHover","isAdd","colorPickerEle","colorPickerObj","splitBtn","event","close","closest","getColorPickerObj","getValue","updateColorPicker","unwireColorPickerEvents","RibbonComboBox","createComboBox","comboBoxSettings","ComboBox","allowCustom","floatLabelType","ignoreAccent","ignoreCase","allowFiltering","autofill","dataSource","fields","filterType","footerTemplate","groupTemplate","headerTemplate","index","itemTemplate","noRecordsTemplate","placeholder","popupHeight","popupWidth","showClearButton","sortOrder","width","filtering","comboBoxObj","getComboBoxObj","query","hidePopup","showPopup","updateComboBox","RibbonDropDown","createDropDown","dropDownSettings","closeActionEvents","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","querySelectorAll","comboBoxElements","contains","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","insertBefore","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","updateSplitButton","updateSplitButtonSize","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","idIndex","isAddRemove","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","getUniqueID","addClass","concat","constants.RTL_CSS","style","formatUnit","renderTabs","ribbonFileMenuModule","createFileMenu","fileMenu","createHelpPaneTemplate","refreshOverflow","wireEvents","wireKeyboardEvent","currentControlIndex","window","resizeHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","activeContent","selectedTab","constants.CONTENT_ID","ribbonControls","action","prevGroupId","prevGroupContainer","constants.RIBBON_GROUP_CONTAINER","checkOverflow","scrollModule","scrollEle","constants.HORIZONTAL_SCROLLBAR","scrollStep","offsetWidth","tabsInternal","slice","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","selected","ribbonTabSelected","selecting","ribbonTabSelecting","setProperty","constants.RIBBON_FILE_MENU_WIDTH","constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH","toolbarEle","Toolbar","isMinimized","constants.RIBBON_MINIMIZE","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","addExpandCollapse","renderInitialTab","selectedTabId","selectedIndex","eventArgs","previousIndex","selectedContent","firstChild","overflowTarget","ofTabContainer","constants.RIBBON_TAB_ACTIVE","activeTab","constants.OVERFLOW_ID","constants.HIDE_CSS","tabContent","constants.TAB_CONTENT","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","constants.CONTAINER_ID","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","collectionEle","Overflow","createOverflowPopup","DropDown","updatePopupItems","constants.RIBBON_ITEM","isGroupOF","isMenu","dropDownPopup","isLeft","position","X","Y","offsetX","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","getInstance","groupEle_1","removeOverflowEvent","childElementCount","removeOverflowButton","ofGroupContainer","groupId","groupHeader","addOverflowButton","constants.RIBBON_GROUP_OF_BUTTON","createGroupContainer","createOfTabContainer","constants.OVRLOF_BUTTON_ID","collapseButton","constants.RIBBON_OVERALL_OF_BUTTON","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","constants.RIBBON_OF_TAB_CONTAINER","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","count","ind","checkClassicCollection","n","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","attrs","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","canExpandItem","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","Template","createTemplateContent","constants.RIBBON_CONTENT_HEIGHT","constants.RIBBON_LARGE_ITEM","constants.RIBBON_MEDIUM_ITEM","constants.RIBBON_SMALL_ITEM","collapseOrder","_loop_1","this_1","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","groupIconCss","expandOrder","_loop_2","this_2","removeDropdown","state_1","constants.DROPDOWN_ID","isCollapse","isUndefined","isCollapsible","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","previousItem","nextIndex","isInteracted","selectedTabContent","constants.RIBBON_GROUP","elements","createGroups","ribbonTab","constants.HEADER_ID","ondblclick","constants.RIBBON_TAB_ITEM","constants.RIBBON_SIMPLIFIED_MODE","btnId","constants.RIBBON_OVERFLOW_TARGET","tabindex","constants.OVERFLOW_ICON","constants.DROPDOWNBUTTON_HIDE","constants.RIBBON_GROUP_OVERFLOW_DDB","constants.RIBBON_POPUP_CONTROL","constants.RIBBON_OVERFLOW","isGroupOf","upDownKeyHandler","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","checkBoxEle","checkBox","isIncrease","constants.RIBBON_OF_GROUP_CONTAINER","ofGroupHeader","constants.RIBBON_OVERFLOW_HEADER","constants.RIBBON_COLLAPSE_BUTTON","constants.EXPAND_COLLAPSE_ICON","constants.COLLAPSE_BUTTON_ID","aria-label","role","constants.RIBBON_COLLAPSIBLE","constants.RIBBON_EXPAND_BUTTON","removeExpandCollapse","splice","reRenderTabs","destroyTabItems","groupList","i_1","alignType","i_2","groupContent","replace","constants.RIBBON_COLUMN","groupCollection","itemList","itemEle_1","destroyFunction","size","createItems","i_3","constants.RIBBON_GROUP_HEADER","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","constants.RIBBON_LAUNCHER_ICON","constants.LAUNCHER_ID","constants.RIBBON_LAUNCHER","launcherIconClicked","groupElements","constants.RIBBON_GROUP_CONTENT","showLauncherIcon","createCollection","collectionList","ribbonitem","sizeVal","collectionElements","constants.RIBBON_COLLECTION","createRibbonItem","_a","itemElements","constants.DISABLED_CSS","ribbonTooltipSettings","helpPaneTemplate","templateName","clearTemplate","ribbonTempEle","constants.RIBBON_HELP_TEMPLATE","constants.RIBBON_HELP_PANE_TEMPLATE_ID","templateFunction","isStringTemplate","after","renderReactTemplates","itemElement","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","setCommonProperties","_i","_b","_c","_d","_e","getItemModuleName","removeLauncherIcon","containerId","containerEle","clearOverflowResize","selectTab","tabId","addTab","isAfter","tabItem","removeTab","groups_1","addGroup","ribbonGroups","targetEle","removeGroup","removeItemElement","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","updateTab","groups_2","forEach","innerText","updateGroup","removeCss","match","removeClass","ribbongroup","overflowHeader","updateCollection","ribboncollection","updateItem","enableDisableItem","enableItem","disableItem","isDisabled","toggleAttribute","unwireEvents","undefined","onPropertyChanged","newProp","oldProp","keys","animation","tabAnimation","updateFileMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","visible","ddbElement","ddbBeforeEvent","ddbAfterEvent","popupTemplate","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","isOpen","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","constants.RIBBON_FILE_MENU_LIST","menuctrl","Menu","animationSettings","menuItems","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","insertAfter","enableItems","disableItems","setItem","refresh"],"mappings":"2tBAaA,SAAgBA,EAASC,EAAKC,GAC1B,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAIG,OAAQD,IAC5B,GAAID,EAAUD,EAAII,SAASF,EAAEG,WAAY,KAAMH,GAC3C,OAAOA,EAGf,OAAQ,EASZ,SAAgBI,EAAoBC,GAChC,GAAwB,iBAAbA,EAAuB,CAC9B,IAAIC,EAAU,GACd,IACI,IAAIC,EAAUC,SAAOH,GAGjBC,EAFAC,EAE8B,WAApBA,EAAQE,QAAuBF,EAAQG,UAAYH,EAAQI,UAG3DN,EAGlB,MAAOO,GACHN,EAAUD,EAEd,OAAOQ,UAAQP,GAIf,OAAOO,UAAQR,GAWvB,SAAgBS,EAAQC,EAAMC,GAC1B,IAAK,IAAIhB,EAAI,EAAGA,EAAIe,EAAKd,OAAQD,IAE7B,IAAK,IADDiB,EAAMF,EAAKb,SAASF,EAAEG,WAAY,KAC7Be,EAAI,EAAGA,EAAID,EAAIE,OAAOlB,OAAQiB,IAEnC,IAAK,IADDE,EAAQH,EAAIE,OAAOjB,SAASgB,EAAEf,WAAY,KACrCkB,EAAI,EAAGA,EAAID,EAAME,YAAYrB,OAAQoB,IAE1C,IAAK,IADDE,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KACjDqB,EAAI,EAAGA,EAAID,EAAWE,MAAMxB,OAAQuB,IAAK,CAC9C,IAAIE,EAAOH,EAAWE,MAAMvB,SAASsB,EAAErB,WAAY,KACnD,GAAIuB,EAAKV,KAAOA,EACZ,OACIU,KAAMA,EAAMH,WAAYA,EAAYH,MAAOA,EAC3CO,SAAU3B,EAAG4B,WAAYV,EAAGW,gBAAiBR,EAAGS,UAAWN,GAOnF,OAAO,KAUX,SAAgBO,EAAchB,EAAMC,GAChC,IAAK,IAAIhB,EAAI,EAAGA,EAAIe,EAAKd,OAAQD,IAE7B,IAAK,IADDiB,EAAMF,EAAKb,SAASF,EAAEG,WAAY,KAC7Be,EAAI,EAAGA,EAAID,EAAIE,OAAOlB,OAAQiB,IAEnC,IAAK,IADDE,EAAQH,EAAIE,OAAOjB,SAASgB,EAAEf,WAAY,KACrCkB,EAAI,EAAGA,EAAID,EAAME,YAAYrB,OAAQoB,IAAK,CAC/C,IAAIE,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KAC1D,GAAIoB,EAAWP,KAAOA,EAClB,OACIO,WAAYA,EAAYH,MAAOA,EAC/BO,SAAU3B,EAAG4B,WAAYV,EAAGW,gBAAiBR,GAMjE,OAAO,KAUX,SAAgBW,EAASjB,EAAMC,GAC3B,IAAK,IAAIhB,EAAI,EAAGA,EAAIe,EAAKd,OAAQD,IAE7B,IAAK,IADDiB,EAAMF,EAAKb,SAASF,EAAEG,WAAY,KAC7Be,EAAI,EAAGA,EAAID,EAAIE,OAAOlB,OAAQiB,IAAK,CACxC,IAAIE,EAAQH,EAAIE,OAAOjB,SAASgB,EAAEf,WAAY,KAC9C,GAAIiB,EAAMJ,KAAOA,EACb,OACII,MAAOA,EAAOO,SAAU3B,EAAG4B,WAAYV,GAKvD,OAAO,KAQX,SAAgBe,EAAeC,EAASC,GACtBC,eAAaF,EAASC,GAC5BE,UAWZ,SAAgBC,EAAqBJ,EAASC,EAAYI,GACxCH,eAAaF,EAASC,GAC5BK,cAAcD,GAW1B,SAAgBE,EAAsBP,EAASC,EAAYO,GACzCN,eAAaF,EAASC,GAC5BK,cAA6B,aAAfL,GAA8BQ,SAAUD,IAAcE,SAAUF,IAW1F,SAAgBG,EAAeC,EAAQ9B,EAAI+B,GACvC,IAAKA,KACDA,EAAWjC,EAAQgC,EAAO/B,KAAMC,IAE5B,OAAO,KAGf,IAAIgC,EAAaF,EAAOG,OAAOxB,MAAMsB,EAASpB,UAAUrB,QACxD,GAA6B,KAAzB0C,EAAWtC,UACX,OAAO,KAEX,GAAIoC,EAAOI,eAAiBC,eAAaC,QACrC,OAAIL,EAASrB,KAAK2B,eAAiBC,cAAYF,SAC3CJ,EAAcD,EAAS3B,MAAiB,YAAI0B,EAAOS,qBAAqBC,yBAAyBT,EAAUC,GACrGA,GACYS,cAAc,IAAMzC,GAG/B,KAKX,IAAI0C,EAAOX,EAASrB,KAAK2B,eAAiBC,cAAYK,WAClDX,EAAWS,cAAc,IAAMV,EAASrB,KAAKV,IAAM,KAEvD,IAAK0C,EAAK,CAINA,GAHeX,EAAS3B,MAAMwC,oBAC1BxB,eAAaY,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA8BC,kBAC5FhB,EAAOiB,aACEC,OAAOP,cAAc,IAAMV,EAASrB,KAAKV,IAE5D,OAAO0C,EAQf,SAAgBO,EAAiBC,GAC7B,SAAQA,EAAQ5D,SAAW4D,EAAQC,SAAWD,EAAQE,OAASF,EAAQlD,IAAMkD,EAAQG,UAWzF,SAAgBC,EAAkBC,EAAML,EAASM,GAC7C,IAAIC,EAAWF,EAAKP,OAAOU,aAAa,MAEpCC,EADUH,EAAYI,OAAO,SAAUhE,GAAK,OAAOA,EAAEI,KAAOyD,IAAa,GAC1DE,KACfrE,EAAU4D,EAAQW,cAAc,OAChC7D,GAAI2D,EAAK3D,GAAK8D,GAAqC,IAAMH,EAAK3D,GAAK8D,KAGvE,GADAZ,EAAQhC,QAAQ6C,OAAOzE,GACnBqE,EAAKP,MAAO,CACZ,IAAIY,EAASd,EAAQW,cAAc,OAC/BnE,UAAWiE,EAAKP,MAChBa,UAAWC,KAEf5E,EAAQ6E,YAAYH,GAExB,IAAII,EAAgBlB,EAAQW,cAAc,OACtCI,UAAWI,KAGf,GADA/E,EAAQ6E,YAAYC,GAChBT,EAAKR,QAAS,CACd,IAAImB,EAAYpB,EAAQW,cAAc,OAClCI,UAAWN,EAAKN,SAAWM,EAAKN,SAAW,IAAMM,EAAKR,QAAU,IAAMoB,GAAgCZ,EAAKR,QAAU,IAAMoB,KAE/HH,EAAcD,YAAYG,GAE9B,GAAIX,EAAKrE,QAAS,CACd,IAAIkF,EAAiBtB,EAAQW,cAAc,OACvCnE,UAAWiE,EAAKrE,QAChB2E,UAAWQ,KAEfL,EAAcD,YAAYK,GAE9BtB,EAAQ1B,eACJlC,QAASA,IAWjB,SAAgBoF,EAAcxD,EAASyD,GACnC,IAAIC,EAAgB,IAAIC,WACpBxB,UAAWyB,GAA2B,IAAMH,EAAOtB,UAAU0B,OAC7D/B,OAAQ,IAAMgC,GACdC,aAQJ,SAA6B1B,GACzBD,EAAkBC,EAAMqB,EAAeD,EAAOnB,cATZ0B,KAAKC,QAE3CP,EAAcQ,SAASlE,GAiB3B,SAAgBmE,EAAenE,GACbE,eAAaF,EAAS2D,WAC5BxD,UAUZ,SAAgBiE,EAAkBpE,EAASqE,GACzBnE,eAAaF,EAAS2D,WAC5BrD,cAAc+D,IC9S1B,SAAWpD,GAIPA,EAAsB,QAAI,UAI1BA,EAAyB,WAAI,aARjC,CASGA,iBAAiBA,oBAKpB,SAAWqD,GAIPA,EAAqB,IAAI,MAIzBA,EAAwB,OAAI,SARhC,CASGA,oBAAoBA,uBAOvB,SAAWC,GAIPA,EAAeA,EAAsB,MAAI,GAAK,QAI9CA,EAAeA,EAAuB,OAAI,GAAK,SAI/CA,EAAeA,EAAsB,MAAI,GAAK,QAZlD,CAaGA,mBAAmBA,sBAOtB,SAAWnD,GAIPA,EAAYA,EAAqB,QAAI,GAAK,UAI1CA,EAAYA,EAAwB,WAAI,GAAK,aAI7CA,EAAYA,EAAsB,SAAI,GAAK,WAI3CA,EAAYA,EAAkB,KAAI,GAAK,OAhB3C,CAiBGA,gBAAgBA,mBAKnB,SAAWoD,GAIPA,EAAuB,OAAI,SAI3BA,EAAyB,SAAI,WAI7BA,EAA4B,YAAI,cAIhCA,EAAyB,SAAI,WAI7BA,EAAyB,SAAI,WAI7BA,EAA4B,YAAI,cAIhCA,EAAyB,SAAI,WA5BjC,CA6BGA,mBAAmBA,sBCzGtB,IAAIC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAM5DK,EAAsC,SAAUC,GAEhD,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAgC/D,OAlCAQ,EAAUyB,EAAsBC,GAUhCD,EAAqBb,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAC3DF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVL,EAAqBb,UAAW,eAAW,GAC9CE,GACIgB,WAAS,KACVL,EAAqBb,UAAW,gBAAY,GAC/CE,GACIgB,WAAS,KACVL,EAAqBb,UAAW,eAAW,GAC9CE,GACIgB,YAAS,IACVL,EAAqBb,UAAW,gBAAY,GAC/CE,GACIgB,YAAS,IACVL,EAAqBb,UAAW,iBAAa,GAChDE,GACIiB,WACDN,EAAqBb,UAAW,eAAW,GAC9CE,GACIiB,WACDN,EAAqBb,UAAW,eAAW,GACvCa,GACTO,iBC3DEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAM5Da,EAAwC,SAAUP,GAElD,SAASO,IACL,OAAkB,OAAXP,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KA6B/D,OA/BAQ,EAAUiC,EAAwBP,GAUlCO,EAAuBrB,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAC7DF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,YAAS,IACVG,EAAuBrB,UAAW,eAAW,GAChDE,GACIgB,WAAS,KACVG,EAAuBrB,UAAW,gBAAY,GACjDE,GACIgB,WAAS,KACVG,EAAuBrB,UAAW,aAAS,GAC9CE,GACIgB,WAAS,UACVG,EAAuBrB,UAAW,qBAAiB,GACtDE,GACIiB,WACDE,EAAuBrB,UAAW,eAAW,GAChDE,GACIiB,WACDE,EAAuBrB,UAAW,cAAU,GACxCqB,GACTD,iBCxDEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAM5Dc,EAA2C,SAAUR,GAErD,SAASQ,IACL,OAAkB,OAAXR,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KA2D/D,OA7DAQ,EAAUkC,EAA2BR,GAUrCQ,EAA0BtB,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAChEF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVI,EAA0BtB,UAAW,eAAW,GACnDE,GACIgB,WAAS,KACVI,EAA0BtB,UAAW,gBAAY,GACpDE,GACIgB,YAAS,IACVI,EAA0BtB,UAAW,qBAAiB,GACzDE,GACIgB,WAAS,WACVI,EAA0BtB,UAAW,YAAQ,GAChDE,GACIgB,YAAS,IACVI,EAA0BtB,UAAW,oBAAgB,GACxDE,GACIgB,YAAS,IACVI,EAA0BtB,UAAW,eAAW,GACnDE,GACIgB,WAAS,OACVI,EAA0BtB,UAAW,oBAAgB,GACxDE,GACIgB,YAAS,IACVI,EAA0BtB,UAAW,mBAAe,GACvDE,GACIgB,WAAS,cACVI,EAA0BtB,UAAW,aAAS,GACjDE,GACIiB,WACDG,EAA0BtB,UAAW,mBAAe,GACvDE,GACIiB,WACDG,EAA0BtB,UAAW,kBAAc,GACtDE,GACIiB,WACDG,EAA0BtB,UAAW,wBAAoB,GAC5DE,GACIiB,WACDG,EAA0BtB,UAAW,eAAW,GACnDE,GACIiB,WACDG,EAA0BtB,UAAW,cAAU,GAClDE,GACIiB,WACDG,EAA0BtB,UAAW,YAAQ,GAChDE,GACIiB,WACDG,EAA0BtB,UAAW,cAAU,GAC3CsB,GACTF,iBCtFEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5De,EAAwC,SAAUT,GAElD,SAASS,IACL,OAAkB,OAAXT,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KA4F/D,OA9FAQ,EAAUmC,EAAwBT,GAUlCS,EAAuBvB,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAC7DF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,YAAS,IACVK,EAAuBvB,UAAW,sBAAkB,GACvDE,GACIgB,YAAS,IACVK,EAAuBvB,UAAW,gBAAY,GACjDE,GACIgB,WAAS,KACVK,EAAuBvB,UAAW,gBAAY,GACjDE,GACIgB,gBACDK,EAAuBvB,UAAW,kBAAc,GACnDE,GACIsB,WAAUC,KAAM,KAAMC,MAAO,KAAM9E,QAAS,KAAM+E,QAAS,MAAQC,kBACpEL,EAAuBvB,UAAW,cAAU,GAC/CE,GACIgB,WAAS,aACVK,EAAuBvB,UAAW,kBAAc,GACnDE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,sBAAkB,GACvDE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,qBAAiB,GACtDE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,sBAAkB,GACvDE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,aAAS,GAC9CE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,oBAAgB,GACrDE,GACIgB,WAAS,qBACVK,EAAuBvB,UAAW,yBAAqB,GAC1DE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,mBAAe,GACpDE,GACIgB,WAAS,UACVK,EAAuBvB,UAAW,mBAAe,GACpDE,GACIgB,WAAS,SACVK,EAAuBvB,UAAW,kBAAc,GACnDE,GACIgB,YAAS,IACVK,EAAuBvB,UAAW,uBAAmB,GACxDE,GACIgB,WAAS,SACVK,EAAuBvB,UAAW,iBAAa,GAClDE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,YAAQ,GAC7CE,GACIgB,WAAS,OACVK,EAAuBvB,UAAW,aAAS,GAC9CE,GACIgB,WAAS,UACVK,EAAuBvB,UAAW,aAAS,GAC9CE,GACIiB,WACDI,EAAuBvB,UAAW,kBAAc,GACnDE,GACIiB,WACDI,EAAuBvB,UAAW,cAAU,GAC/CE,GACIiB,WACDI,EAAuBvB,UAAW,aAAS,GAC9CE,GACIiB,WACDI,EAAuBvB,UAAW,eAAW,GAChDE,GACIiB,WACDI,EAAuBvB,UAAW,iBAAa,GAClDE,GACIiB,WACDI,EAAuBvB,UAAW,YAAQ,GAC7CE,GACIiB,WACDI,EAAuBvB,UAAW,cAAU,GACxCuB,GACTH,iBCxHEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5DqB,EAAwC,SAAUf,GAElD,SAASe,IACL,OAAkB,OAAXf,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAkD/D,OApDAQ,EAAUyC,EAAwBf,GAUlCe,EAAuB7B,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAC7DF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVW,EAAuB7B,UAAW,yBAAqB,GAC1DE,GACIgB,WAAS,KACVW,EAAuB7B,UAAW,eAAW,GAChDE,GACIgB,WAAS,KACVW,EAAuB7B,UAAW,gBAAY,GACjDE,GACIgB,WAAS,KACVW,EAAuB7B,UAAW,eAAW,GAChDE,GACI4B,gBAAeC,SAChBF,EAAuB7B,UAAW,aAAS,GAC9CE,GACIgB,WAAS,KACVW,EAAuB7B,UAAW,cAAU,GAC/CE,GACIiB,WACDU,EAAuB7B,UAAW,mBAAe,GACpDE,GACIiB,WACDU,EAAuB7B,UAAW,wBAAoB,GACzDE,GACIiB,WACDU,EAAuB7B,UAAW,kBAAc,GACnDE,GACIiB,WACDU,EAAuB7B,UAAW,aAAS,GAC9CE,GACIiB,WACDU,EAAuB7B,UAAW,eAAW,GAChDE,GACIiB,WACDU,EAAuB7B,UAAW,YAAQ,GAC7CE,GACIiB,WACDU,EAAuB7B,UAAW,cAAU,GACxC6B,GACTT,iBC9EEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5DwB,EAA2C,SAAUlB,GAErD,SAASkB,IACL,OAAkB,OAAXlB,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAqD/D,OAvDAQ,EAAU4C,EAA2BlB,GAUrCkB,EAA0BhC,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAChEF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVc,EAA0BhC,UAAW,yBAAqB,GAC7DE,GACIgB,WAAS,KACVc,EAA0BhC,UAAW,eAAW,GACnDE,GACIgB,WAAS,KACVc,EAA0BhC,UAAW,gBAAY,GACpDE,GACIgB,WAAS,KACVc,EAA0BhC,UAAW,eAAW,GACnDE,GACI4B,gBAAeC,SAChBC,EAA0BhC,UAAW,aAAS,GACjDE,GACIgB,WAAS,KACVc,EAA0BhC,UAAW,cAAU,GAClDE,GACIiB,WACDa,EAA0BhC,UAAW,mBAAe,GACvDE,GACIiB,WACDa,EAA0BhC,UAAW,wBAAoB,GAC5DE,GACIiB,WACDa,EAA0BhC,UAAW,kBAAc,GACtDE,GACIiB,WACDa,EAA0BhC,UAAW,aAAS,GACjDE,GACIiB,WACDa,EAA0BhC,UAAW,aAAS,GACjDE,GACIiB,WACDa,EAA0BhC,UAAW,eAAW,GACnDE,GACIiB,WACDa,EAA0BhC,UAAW,YAAQ,GAChDE,GACIiB,WACDa,EAA0BhC,UAAW,cAAU,GAC3CgC,GACTZ,iBCjFEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAM5DyB,EAA+B,SAAUnB,GAEzC,SAASmB,IACL,OAAkB,OAAXnB,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAiB/D,OAnBAQ,EAAU6C,EAAenB,GAIzBZ,GACIgB,WAAS,KACVe,EAAcjC,UAAW,gBAAY,GACxCE,GACIgB,WAAS,KACVe,EAAcjC,UAAW,UAAM,GAClCE,GACIgB,WAAS,KACVe,EAAcjC,UAAW,aAAS,GACrCE,GACIgB,WAAS,KACVe,EAAcjC,UAAW,eAAW,GACvCE,GACIgB,WAAS,KACVe,EAAcjC,UAAW,eAAW,GAChCiC,GACTb,iBC5CEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAc5D0B,EAA4B,SAAUpB,GAEtC,SAASoB,IACL,OAAkB,OAAXpB,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAwD/D,OA1DAQ,EAAU8C,EAAYpB,GAUtBoB,EAAWlC,UAAU/E,cAAgB,SAAU+D,EAAMgC,GACjDF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAShC,iBAAeiD,SACzBD,EAAWlC,UAAW,kBAAc,GACvCE,GACIgB,WAAShC,iBAAekD,MAAQlD,iBAAeiD,OAASjD,iBAAemD,QACxEH,EAAWlC,UAAW,oBAAgB,GACzCE,GACIgB,WAAS,KACVgB,EAAWlC,UAAW,UAAM,GAC/BE,GACIgB,WAAS,KACVgB,EAAWlC,UAAW,gBAAY,GACrCE,GACIgB,YAAS,IACVgB,EAAWlC,UAAW,gBAAY,GACrCE,GACIgB,WAAS,KACVgB,EAAWlC,UAAW,oBAAgB,GACzCE,GACIgB,WAAS,WACVgB,EAAWlC,UAAW,YAAQ,GACjCE,GACIgB,WAASnF,cAAYuG,OACtBJ,EAAWlC,UAAW,sBAAkB,GAC3CE,GACIsB,aAAYS,IACbC,EAAWlC,UAAW,6BAAyB,GAClDE,GACIsB,aAAYX,IACbqB,EAAWlC,UAAW,sBAAkB,GAC3CE,GACIsB,aAAYK,IACbK,EAAWlC,UAAW,wBAAoB,GAC7CE,GACIsB,aAAYH,IACba,EAAWlC,UAAW,wBAAoB,GAC7CE,GACIsB,aAAYF,IACbY,EAAWlC,UAAW,2BAAuB,GAChDE,GACIsB,aAAYD,IACbW,EAAWlC,UAAW,wBAAoB,GAC7CE,GACIsB,aAAYQ,IACbE,EAAWlC,UAAW,2BAAuB,GACzCkC,GACTd,iBC3FEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5D+B,EAAkC,SAAUzB,GAE5C,SAASyB,IACL,OAAkB,OAAXzB,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAoB/D,OAtBAQ,EAAUmD,EAAkBzB,GAU5ByB,EAAiBvC,UAAU/E,cAAgB,SAAU+D,EAAMgC,GACvDF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVqB,EAAiBvC,UAAW,UAAM,GACrCE,GACIgB,WAAS,KACVqB,EAAiBvC,UAAW,gBAAY,GAC3CE,GACI4B,gBAAeI,IAChBK,EAAiBvC,UAAW,aAAS,GACjCuC,GACTnB,iBChDEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5DgC,EAA6B,SAAU1B,GAEvC,SAAS0B,IACL,OAAkB,OAAX1B,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KA4C/D,OA9CAQ,EAAUoD,EAAa1B,GAUvB0B,EAAYxC,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAClDF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACI4B,gBAAeS,IAChBC,EAAYxC,UAAW,mBAAe,GACzCE,GACIgB,WAAS,KACVsB,EAAYxC,UAAW,gBAAY,GACtCE,GACIgB,WAAS,KACVsB,EAAYxC,UAAW,UAAM,GAChCE,GACIgB,YAAS,IACVsB,EAAYxC,UAAW,mBAAe,GACzCE,GACIgB,YAAS,IACVsB,EAAYxC,UAAW,qBAAiB,GAC3CE,GACIgB,YAAS,IACVsB,EAAYxC,UAAW,2BAAuB,GACjDE,GACIgB,WAAS,KACVsB,EAAYxC,UAAW,oBAAgB,GAC1CE,GACIgB,WAAS,KACVsB,EAAYxC,UAAW,cAAU,GACpCE,GACIgB,WAAS,WACVsB,EAAYxC,UAAW,mBAAe,GACzCE,GACIgB,WAAS,IACVsB,EAAYxC,UAAW,gBAAY,GACtCE,GACIgB,YAAS,IACVsB,EAAYxC,UAAW,wBAAoB,GACvCwC,GACTpB,iBCxEEhC,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAO5DiC,GAA2B,SAAU3B,GAErC,SAAS2B,IACL,OAAkB,OAAX3B,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAuB/D,OAzBAQ,EAAUqD,EAAW3B,GAUrB2B,EAAUzC,UAAU/E,cAAgB,SAAU+D,EAAMgC,GAChDF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,GACIgB,WAAS,KACVuB,EAAUzC,UAAW,UAAM,GAC9BE,GACIgB,WAAS,KACVuB,EAAUzC,UAAW,gBAAY,GACpCE,GACI4B,gBAAeU,IAChBC,EAAUzC,UAAW,cAAU,GAClCE,GACIgB,WAAS,KACVuB,EAAUzC,UAAW,cAAU,GAC3ByC,GACTrB,iBCnDEhC,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAQ5DkC,GAAkC,SAAU5B,GAE5C,SAAS4B,IACL,OAAkB,OAAX5B,GAAmBA,EAAOC,MAAMnC,KAAM2B,YAAc3B,KAqD/D,OAvDAQ,GAAUsD,EAAkB5B,GAU5B4B,EAAiB1C,UAAU/E,cAAgB,SAAU+D,EAAMgC,GACvDF,EAAOd,UAAU/E,cAAcgG,KAAKrC,KAAMI,EAAMgC,IAEpDd,IACIgB,WAAS,SACVwB,EAAiB1C,UAAW,YAAQ,GACvCE,IACIgB,YAAS,IACVwB,EAAiB1C,UAAW,eAAW,GAC1CE,IACI4B,gBAAea,aAChBD,EAAiB1C,UAAW,iBAAa,GAC5CE,IACIgB,YAAS,IACVwB,EAAiB1C,UAAW,uBAAmB,GAClDE,IACIsB,aAAYoB,0BACbF,EAAiB1C,UAAW,yBAAqB,GACpDE,IACIgB,WAAS,KACVwB,EAAiB1C,UAAW,oBAAgB,GAC/CE,IACIgB,WAAS,KACVwB,EAAiB1C,UAAW,qBAAiB,GAChDE,IACIsB,aAAYS,IACbS,EAAiB1C,UAAW,6BAAyB,GACxDE,IACIiB,WACDuB,EAAiB1C,UAAW,mBAAe,GAC9CE,IACIiB,WACDuB,EAAiB1C,UAAW,kBAAc,GAC7CE,IACIiB,WACDuB,EAAiB1C,UAAW,wBAAoB,GACnDE,IACIiB,WACDuB,EAAiB1C,UAAW,aAAS,GACxCE,IACIiB,WACDuB,EAAiB1C,UAAW,YAAQ,GACvCE,IACIiB,WACDuB,EAAiB1C,UAAW,cAAU,GAClC0C,GACTtB,iBC9ESyB,GAAuB,2BAEvBC,GAAuB,sBAEvBC,GAAgB,8BAEhBC,GAAe,aAEfC,GAAe,aAEfC,GAAU,QAEVC,GAAe,iBAEfC,GAAiB,mBAEjBC,GAAuB,yBAEvBC,GAAoB,gBAIpBC,GAAuB,gBAEvBC,GAAW,gBAIXC,GAAoB,kBAEpBC,GAAkB,oBAElBC,GAAyB,wBAEzBC,GAAuB,sBAEvBC,GAAqB,uBAErBC,GAA2B,0BAE3BC,GAAyB,wBAEzBC,GAAyB,2BAEzBC,GAAkB,oBAElBC,GAAc,YAEdC,GAAkB,oBAElBC,GAAe,iBAEfC,GAAyB,2BAEzBC,GAA0B,kBAE1BC,GAA4B,8BAE5BC,GAAuB,yBAEvBC,GAAsB,wBAEtBC,GAAyB,2BAEzBC,GAAwB,0BAExBC,GAA4B,8BAE5BC,GAAkB,oBAElBC,GAA2B,yBAE3BC,GAAuB,qBAEvBC,GAAoB,sBAEpBC,GAAc,gBAEdC,GAAa,eAEbC,GAAgB,kBAEhBC,GAAoB,sBAEpBC,GAAqB,uBAErBC,GAAoB,sBAEpBC,GAAwB,0BAMxBC,GAAkB,oBAElBC,GAAuB,yBAEvBC,GAAiB,mBAEjBC,GAAwB,0BAExBC,GAAuB,yBAEvBC,GAAyB,2BAEzBC,GAAsB,wBAEtBC,GAA2B,6BAE3BC,GAAwB,0BAExBC,GAAyB,2BAUzBC,GAAqB,kBAErBC,GAAmB,qBAEnBC,GAAoB,oBAEpBC,GAAY,UAEZC,GAAc,YAEdC,GAAa,WAEbC,GAAe,aAEfC,GAAc,YAEdC,GAAc,YAIdC,GAAwB,gBAExBC,GAA+B,oBAE/BC,GAAyB,kBAEzBC,GAAkC,sBCjJzCC,GAA8B,WAC9B,SAASA,EAAaxL,GAClBqD,KAAKrD,OAASA,EA+IlB,OA7IAwL,EAAa/G,UAAUgH,cAAgB,WACnC,MAAO,gBAEXD,EAAa/G,UAAUlF,QAAU,WAC7B8D,KAAKrD,OAAS,MAUlBwL,EAAa/G,UAAUiH,aAAe,SAAU9M,EAAM+M,GAClD,IAAIC,EAAQvI,KACRwI,EAAYxI,KAAKrD,OAAO+B,cAAc,UACtC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYwJ,GACpB,IAAIC,EAAclN,EAAKmN,eACvB,IAAIC,UACAC,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/BC,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,OACjEzF,QAASyK,EAAYzK,QACrBvB,SAAUlB,EAAKkB,SACfyB,UAAW+F,GDfJ,ICemCO,GDfnC,KCe6DiE,EAAYvK,SAAWuK,EAAYvK,SAAW,KAAK0B,OACvHzF,QAASoB,EAAKyN,aAAe1I,iBAAekD,MAAQ,GAAKiF,EAAYtO,QACrE8O,UAAWR,EAAYQ,UACvBC,SAAUT,EAAYS,SACtBC,QAASV,EAAYU,SACtBX,GACHA,EAAUY,QAAU,SAAU3O,GACtBgO,EAAYY,SACZZ,EAAYY,QAAQhH,KAAKkG,EAAO9N,IAGxC+N,EAAUc,aAAa,aAAcb,EAAYtO,UAWrDgO,EAAa/G,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GAChE,IAAIjB,EAAQvI,KACRwI,EAAYF,EAAQhL,cAAc,IAAM/B,EAAKV,IACjD2N,EAAUc,aAAa,eAAgB/N,EAAKkO,KAAKzP,YACjD,IAAI0P,EAAYzN,eAAauM,EAAWG,UACxCe,EAAUrN,eAAgB6B,SAAUwL,EAAUxL,SD1CnC,IC0CsDuG,KACjE+D,EAAUY,QAAU,SAAU3O,GACtBc,EAAKmN,eAAeW,SACpB9N,EAAKmN,eAAeW,QAAQhH,KAAKkG,EAAO9N,GAE5C+O,EAAeG,WAWvBxB,EAAa/G,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC1D,IAAIC,EAAQvI,KACRwI,EAAYF,EAAQhL,cAAc,IAAM/B,EAAKV,IAC7C6O,EAAYzN,eAAauM,EAAWG,UACpCzK,EAAWwL,EAAUxL,SAAS2L,MD9DvB,KC+DX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/DiF,EAAUrN,eAAgB6B,SAAUA,EAAS4L,KDhElC,OCiEXtB,EAAUY,QAAU,SAAU3O,GACtBc,EAAKmN,eAAeW,SACpB9N,EAAKmN,eAAeW,QAAQhH,KAAKkG,EAAO9N,KAUpD0N,EAAa/G,UAAU2I,MAAQ,SAAUC,GACrC,IAAIxB,EAAY9L,EAAesD,KAAKrD,OAAQqN,GAC5C,GAAKxB,EAAL,CAGgBvM,eAAauM,EAAWG,UAC9BoB,UASd5B,EAAa/G,UAAU6I,aAAe,SAAU7J,EAAMvF,GAClD,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAKmN,eAAgBtI,GACpC,IAAIoI,EAAY9L,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAChD,GAAK4L,EAAL,CAGA,IAAIkB,EAAYzN,eAAauM,EAAWG,UACpCvI,EAAKlC,WACLkC,EAAKlC,UAAY+F,GDxGV,ICwGyCO,GDxGzC,ICwGkEpE,EAAKlC,UAAU0B,QAExFQ,EAAKjG,UACLiG,EAAKjG,QAAUyC,EAASrB,KAAKyN,aAAe1I,iBAAekD,MAAQ,GAAKpD,EAAKjG,QAC7EqO,EAAUc,aAAa,aAAclJ,EAAKjG,iBAEvCiG,EAAKiJ,QACZK,EAAUrN,cAAc+D,MAU5B+H,EAAa/G,UAAU+I,iBAAmB,SAAUpO,EAASR,GACzCU,eAAaF,EAAS4M,UAC5BtM,eACN0M,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,OACjEtJ,QAASoB,EAAKyN,aAAe1I,iBAAekD,MAAQ,GAAKjI,EAAKmN,eAAevO,WAG9EgO,KClJPiC,GAAgC,WAChC,SAASA,EAAezN,GACpBqD,KAAKrD,OAASA,EA2HlB,OAzHAyN,EAAehJ,UAAUgH,cAAgB,WACrC,MAAO,kBAEXgC,EAAehJ,UAAUlF,QAAU,WAC/B8D,KAAKrD,OAAS,MAUlByN,EAAehJ,UAAUiJ,eAAiB,SAAU9O,EAAM+M,GACtD,IAAIC,EAAQvI,KACRsK,EAAWtK,KAAKrD,OAAO+B,cAAc,SACrC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYsL,GACpB,IAAIC,EAAmBhP,EAAKgP,iBAC5B,IAAIC,YACA5B,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/B2B,QAASF,EAAiBE,QAC1BvM,UAAWsG,GFZJ,KEY8B+F,EAAiBrM,SAAWqM,EAAiBrM,SAAW,KAAK0B,OAClG8K,MAAOH,EAAiBG,MACxBC,cAAeJ,EAAiBI,cAChClO,SAAUlB,EAAKkB,SACf0M,QAASoB,EAAiBpB,QAC1ByB,OAAQ,SAAUnQ,GACV8P,EAAiBK,QACjBL,EAAiBK,OAAOvI,KAAKkG,EAAO9N,KAG7C6P,IAWPF,EAAehJ,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GAClE,IAAIjB,EAAQvI,KACRsK,EAAWhC,EAAQhL,cAAc,IAAM/B,EAAKV,IAChDyP,EAAShB,aAAa,eAAgB/N,EAAKkO,KAAKzP,YAChD,IAAI6Q,EAAc5O,eAAaqO,EAAUE,YACzCK,EAAY3M,SAAW2M,EAAY3M,SFtCxB,IEsC2CuG,GACtDoG,EAAYC,WACZD,EAAYD,OAAS,SAAUnQ,GACvBc,EAAKgP,iBAAiBK,QACtBrP,EAAKgP,iBAAiBK,OAAOvI,KAAKkG,EAAO9N,GAE7C+O,EAAeG,WAWvBS,EAAehJ,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC5D,IAAIC,EAAQvI,KACRsK,EAAWhC,EAAQhL,cAAc,IAAM/B,EAAKV,IAC5CgQ,EAAc5O,eAAaqO,EAAUE,YACrCtM,EAAW2M,EAAY3M,SAAS2L,MF3DzB,KE4DX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/DoG,EAAY3M,SAAWA,EAAS4L,KF7DrB,KE8DXe,EAAYC,WACZD,EAAYD,OAAS,SAAUnQ,GACvBc,EAAKgP,iBAAiBK,QACtBrP,EAAKgP,iBAAiBK,OAAOvI,KAAKkG,EAAO9N,KAUrD2P,EAAehJ,UAAU2I,MAAQ,SAAUC,GACvC,IAAIM,EAAW5N,EAAesD,KAAKrD,OAAQqN,GAC3C,GAAKM,EAAL,CAGkBrO,eAAaqO,EAAUE,YAC7BT,UAShBK,EAAehJ,UAAU2J,eAAiB,SAAU3K,EAAMvF,GACtD,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAKgP,iBAAkBnK,GACtC,IAAIkK,EAAW5N,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAC/C,GAAK0N,EAAL,CAGIlK,EAAKlC,WACLkC,EAAKlC,UAAYsG,GFrGV,IEqGmCpE,EAAKlC,UAAU0B,eAEtDQ,EAAKwK,OACM3O,eAAaqO,EAAUE,YAC7BnO,cAAc+D,MAEvBgK,KC5HPY,GAAmC,WACnC,SAASA,EAAkBrO,GACvBqD,KAAKrD,OAASA,EA4LlB,OA1LAqO,EAAkB5J,UAAUgH,cAAgB,WACxC,MAAO,qBAEX4C,EAAkB5J,UAAUlF,QAAU,WAClC8D,KAAKrD,OAAS,MAUlBqO,EAAkB5J,UAAU6J,kBAAoB,SAAU1P,EAAM+M,GAC5D,IAAIC,EAAQvI,KACRsK,EAAWtK,KAAKrD,OAAO+B,cAAc,SACrC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYsL,GACpB,IAAIY,EAAsB3P,EAAK2P,oBAC3BC,EAAc,IAAIC,eAClBxC,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/BuC,QAASH,EAAoBG,QAC7BnN,UAAWsG,GHbJ,KGa8B0G,EAAoBhN,SAAWgN,EAAoBhN,SAAW,KAAK0B,OACxGnD,SAAUlB,EAAKkB,SACf6O,cAAeJ,EAAoBI,cACnCC,KAAML,EAAoBK,KAC1BC,aAAcN,EAAoBM,aAClCC,QAASP,EAAoBO,QAC7BC,aAAcR,EAAoBQ,aAClCC,YAAaT,EAAoBS,YACjC7I,MAAOoI,EAAoBpI,MAC3B8I,YAAa,WACTT,EAAYpP,QAAQ8P,cAAcC,UAAUC,OAAOrH,IAC/CwG,EAAoBU,aACpBV,EAAoBU,YAAYvJ,KAAKkG,IAG7CyD,WAAYd,EAAoBc,WAChCC,iBAAkBf,EAAoBe,iBACtC9C,QAAS+B,EAAoB/B,QAC7ByB,OAAQM,EAAoBN,OAC5BsB,KAAM,WACFf,EAAYpP,QAAQ8P,cAAcC,UAAUK,IAAIzH,IAC5CwG,EAAoBgB,MACpBhB,EAAoBgB,KAAK7J,KAAKkG,IAGtClO,OAAQ6Q,EAAoB7Q,QAC7BiQ,GACC8B,EAAUjB,EAAYpP,QAAQ8P,cAClCQ,eAAaF,IAAIC,EAAS,aAAcpM,KAAKsM,mBAAmBvM,KAAKC,KAAMoM,GAAS,GAAOpM,MAC3FqM,eAAaF,IAAIC,EAAS,aAAcpM,KAAKsM,mBAAmBvM,KAAKC,KAAMoM,GAAS,GAAQpM,OAEhGgL,EAAkB5J,UAAUkL,mBAAqB,SAAUF,EAASG,GAC5DA,EACAH,EAAQN,UAAUK,IAAI5H,IAGtB6H,EAAQN,UAAUC,OAAOxH,KAYjCyG,EAAkB5J,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GACrE,IAAIjB,EAAQvI,KACRwM,EAAiBlE,EAAQhL,cAAc,IAAM/B,EAAKV,IACtD2R,EAAelD,aAAa,eAAgB/N,EAAKkO,KAAKzP,YACtD,IAAIyS,EAAiBxQ,eAAauQ,EAAgBpB,eAClDqB,EAAepQ,eAAgB6B,SAAUuO,EAAevO,SHlE7C,IGkEgEuG,KAE3E,IACI5G,EADA6O,EAAWD,EAAyB,SAExCA,EAAeb,YAAc,SAAUnR,GACnCoD,EAASpD,EAAEkS,MAAQlS,EAAEkS,MAAM9O,OAAS,KACpC4O,EAAe1Q,QAAQ8P,cAAcC,UAAUC,OAAOrH,IAClDnJ,EAAK2P,oBAAoBU,aACzBrQ,EAAK2P,oBAAoBU,YAAYvJ,KAAKkG,IAGlDmE,EAASE,MAAQ,WACT/O,IAAWA,EAAOgP,QAAQ,iCAC1BrD,EAAeG,WAY3BqB,EAAkB5J,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC/D,IAAIC,EAAQvI,KACRwM,EAAiBlE,EAAQhL,cAAc,IAAM/B,EAAKV,IAClD4R,EAAiBxQ,eAAauQ,EAAgBpB,eAC9ClN,EAAWuO,EAAevO,SAAS2L,MH/F5B,KGgGX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/DgI,EAAepQ,eAAgB6B,SAAUA,EAAS4L,KHjGvC,OGkGI2C,EAAyB,SAE/BG,MAAQ,KACjBH,EAAeb,YAAc,SAAUnR,GACnCgS,EAAe1Q,QAAQ8P,cAAcC,UAAUC,OAAOrH,IAClDnJ,EAAK2P,oBAAoBU,aACzBrQ,EAAK2P,oBAAoBU,YAAYvJ,KAAKkG,KAItDyC,EAAkB5J,UAAU0L,kBAAoB,SAAU9C,GACtD,IAAIM,EAAW5N,EAAesD,KAAKrD,OAAQqN,GAC3C,OAAOM,EAAWrO,eAAaqO,EAAUc,eAAe,MAU5DJ,EAAkB5J,UAAU2L,SAAW,SAAU/C,EAAWlH,EAAO2G,GAC/D,IAAIgD,EAAiBzM,KAAK8M,kBAAkB9C,GAC5C,OAAOyC,EAAiBA,EAAeM,SAASjK,EAAO2G,GAAQ,IAQnEuB,EAAkB5J,UAAUuI,OAAS,SAAUK,GAC3C,IAAIyC,EAAiBzM,KAAK8M,kBAAkB9C,GACvCyC,GAGLA,EAAe9C,UASnBqB,EAAkB5J,UAAU4L,kBAAoB,SAAU5M,EAAMvF,GAC5D,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAKgP,iBAAkBnK,GACtC,IAAIkK,EAAW5N,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAC/C,GAAK0N,EAAL,CAGIlK,EAAKlC,WACLkC,EAAKlC,UAAYsG,GH3JV,IG2JmCpE,EAAKlC,UAAU0B,eAEtDQ,EAAKwL,mBACLxL,EAAK8L,KACSjQ,eAAaqO,EAAUc,eAC7B/O,cAAc+D,MAOjC4K,EAAkB5J,UAAU6L,wBAA0B,SAAUlR,GAC5D,IACIqQ,EADiBnQ,eAAaF,EAASqP,eACdrP,QAAQ8P,cACrCQ,eAAaN,OAAOK,EAAS,aAAcpM,KAAKsM,oBAChDD,eAAaN,OAAOK,EAAS,aAAcpM,KAAKsM,qBAE7CtB,KC/LPkC,GAAgC,WAChC,SAASA,EAAevQ,GACpBqD,KAAKrD,OAASA,EAiLlB,OA/KAuQ,EAAe9L,UAAUgH,cAAgB,WACrC,MAAO,kBAEX8E,EAAe9L,UAAUlF,QAAU,WAC/B8D,KAAKrD,OAAS,MAUlBuQ,EAAe9L,UAAU+L,eAAiB,SAAU5R,EAAM+M,GACtD,IAAIC,EAAQvI,KACRsK,EAAWtK,KAAKrD,OAAO+B,cAAc,SACrC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYsL,GACpB,IAAI8C,EAAmB7R,EAAK6R,iBAC5B,IAAIC,YACAzE,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/BwE,aAAa,EACbC,eAAgB,QAChBC,cAAc,EACdC,YAAY,EACZC,eAAgBN,EAAiBM,eACjCC,SAAUP,EAAiBO,SAC3BzP,UAAWsG,GJjBJ,KIiB8B4I,EAAiBlP,SAAWkP,EAAiBlP,SAAW,KAAK0B,OAClGgO,WAAYR,EAAiBQ,WAC7BpR,SAAUjB,EAAKkB,SACfoR,OAAQT,EAAiBS,OACzBC,WAAYV,EAAiBU,WAC7BC,eAAgBX,EAAiBW,eACjCC,cAAeZ,EAAiBY,cAChCC,eAAgBb,EAAiBa,eACjCC,MAAOd,EAAiBc,MACxBC,aAAcf,EAAiBe,aAC/BC,kBAAmBhB,EAAiBgB,kBACpCC,YAAajB,EAAiBiB,YAC9BC,YAAalB,EAAiBkB,YAC9BC,WAAYnB,EAAiBmB,WAC7BC,gBAAiBpB,EAAiBoB,gBAClCC,UAAWrB,EAAiBqB,UAC5B5L,KAAMuK,EAAiBvK,KACvBC,MAAOsK,EAAiBtK,MACxB4L,MAAOtB,EAAiBsB,MACxB1C,WAAYoB,EAAiBpB,WAC7BE,KAAMkB,EAAiBlB,KACvBU,MAAO,SAAUnS,GACT2S,EAAiBR,OACjBQ,EAAiBR,MAAMvK,KAAKkG,EAAO9N,IAG3CkU,UAAWvB,EAAiBuB,UAC5B/D,OAAQwC,EAAiBxC,OACzBvQ,OAAQ+S,EAAiB/S,OACzB8O,QAASiE,EAAiBjE,SAC3BmB,IAWP4C,EAAe9L,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GAClE,IAAIjB,EAAQvI,KACRsK,EAAWhC,EAAQhL,cAAc,IAAM/B,EAAKV,IAChDyP,EAAShB,aAAa,eAAgB/N,EAAKkO,KAAKzP,YAChD,IAAI4U,EAAc3S,eAAaqO,EAAU+C,YACzCuB,EAAYvS,eAAgB6B,SAAU0Q,EAAY1Q,SJ/DvC,II+D0DuG,KACrEmK,EAAYhC,MAAQ,SAAUnS,GAC1B,IAAIoD,EAASpD,EAAEkS,MAAQlS,EAAEkS,MAAM9O,OAAS,KACpCtC,EAAK6R,iBAAiBR,OACtBrR,EAAK6R,iBAAiBR,MAAMvK,KAAKkG,EAAO9N,GAExCoD,IAAWA,EAAOgP,QAAQ,iCAC1BrD,EAAeG,WAY3BuD,EAAe9L,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC5D,IAAIC,EAAQvI,KACRsK,EAAWhC,EAAQhL,cAAc,IAAM/B,EAAKV,IAC5C+T,EAAc3S,eAAaqO,EAAU+C,YACrCnP,EAAW0Q,EAAY1Q,SAAS2L,MJtFzB,KIuFX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/DmK,EAAYvS,eAAgB6B,SAAUA,EAAS4L,KJxFpC,OIyFX8E,EAAYhC,MAAQ,SAAUnS,GACtBc,EAAK6R,iBAAiBR,OACtBrR,EAAK6R,iBAAiBR,MAAMvK,KAAKkG,EAAO9N,KAIpDyS,EAAe9L,UAAUyN,eAAiB,SAAU7E,GAChD,IAAIM,EAAW5N,EAAesD,KAAKrD,OAAQqN,GAC3C,OAAOM,EAAWrO,eAAaqO,EAAU+C,YAAY,MAWzDH,EAAe9L,UAAU3C,OAAS,SAAUuL,EAAW4D,EAAYkB,EAAOjB,GACtE7N,KAAK6O,eAAe7E,GAAWvL,OAAOmP,EAAYkB,EAAOjB,IAQ7DX,EAAe9L,UAAU2N,UAAY,SAAU/E,GAC3C,IAAI4E,EAAc5O,KAAK6O,eAAe7E,GACjC4E,GAGLA,EAAYG,aAQhB7B,EAAe9L,UAAU4N,UAAY,SAAUhF,GAC3C,IAAI4E,EAAc5O,KAAK6O,eAAe7E,GACjC4E,GAGLA,EAAYI,aAShB9B,EAAe9L,UAAU6N,eAAiB,SAAU7O,EAAMvF,GACtD,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAK6R,iBAAkBhN,GACtC,IAAIkK,EAAW5N,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAC/C,GAAK0N,EAAL,CAGIlK,EAAKlC,WACLkC,EAAKlC,UAAYsG,GJ3JV,II2JmCpE,EAAKlC,UAAU0B,eAEtDQ,EAAKwM,MACM3Q,eAAaqO,EAAU+C,YAC7BhR,cAAc+D,MAEvB8M,KCjLPgC,GAAgC,WAChC,SAASA,EAAevS,GACpBqD,KAAKrD,OAASA,EAwalB,OAtaAuS,EAAe9N,UAAUgH,cAAgB,WACrC,MAAO,kBAEX8G,EAAe9N,UAAUlF,QAAU,WAC/B8D,KAAKrD,OAAS,MAUlBuS,EAAe9N,UAAU+N,eAAiB,SAAU5T,EAAM+M,GACtD,IAAIC,EAAQvI,KACRwI,EAAYxI,KAAKrD,OAAO+B,cAAc,UACtC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYwJ,GACpB,IAAI4G,EAAmB7T,EAAK6T,iBACxBlR,GAAY+F,GLTL,IKSoCO,GLTpC,KKS8D4K,EAAiBlR,SACtFkR,EAAiBlR,SAAW,KAAK0B,OACrC,IAAIjC,kBACAiL,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/BC,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,OACjE4L,kBAAmBD,EAAiBC,kBACpClV,QAASoB,EAAKyN,aAAe1I,iBAAekD,MAAQ,GAAK4L,EAAiBjV,QAC1E+D,SAAUA,GAAa3C,EAAKyN,aAAe1I,iBAAemD,MLlBnD,IKkBqEW,GAAgB,IAC5F3H,SAAUlB,EAAKkB,SACfuB,QAASoR,EAAiBpR,QAC1B1C,MAAO8T,EAAiB9T,MACxBuC,OAAQuR,EAAiBvR,OACzB+N,YAAa,SAAUnR,GACf2U,EAAiBxD,aACjBwD,EAAiBxD,YAAYvJ,KAAKkG,EAAO9N,IAGjD6U,iBAAkBF,EAAiBE,iBACnCtD,WAAYoD,EAAiBpD,WAC7BY,MAAO,SAAUnS,GACT2U,EAAiBxC,OACjBwC,EAAiBxC,MAAMvK,KAAKkG,EAAO9N,IAG3C0O,QAASiG,EAAiBjG,QAC1B+C,KAAMkD,EAAiBlD,KACvB7R,OAAQ+U,EAAiB/U,QAC1BmO,IAWP0G,EAAe9N,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GAClE,IAAIjB,EAAQvI,KACRuP,EAAkBjH,EAAQhL,cAAc,IAAM/B,EAAKV,IACvD0U,EAAgBjG,aAAa,eAAgB/N,EAAKkO,KAAKzP,YACvD,IAAIwV,EAAWvT,eAAasT,EAAiB5R,kBAC7C6R,EAAStR,SAAWsR,EAAStR,SLtDlB,IKsDqCuG,GAChD+K,EAAS1E,WACT,IAAIjN,EACJ2R,EAAS5D,YAAc,SAAUnR,GACzBc,EAAK6T,iBAAiBxD,aACtBrQ,EAAK6T,iBAAiBxD,YAAYvJ,KAAKkG,EAAO9N,GAElDoD,EAASpD,EAAEkS,MAAQlS,EAAEkS,MAAM9O,OAAS,MAExC2R,EAAS5C,MAAQ,SAAUnS,GACnBc,EAAK6T,iBAAiBxC,OACtBrR,EAAK6T,iBAAiBxC,MAAMvK,KAAKkG,EAAO9N,GAExCoD,IAAWA,EAAOgP,QAAQ,iCAC1BrD,EAAeG,WAY3BuF,EAAe9N,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC5D,IAAIC,EAAQvI,KACRuP,EAAkBjH,EAAQhL,cAAc,IAAM/B,EAAKV,IACnD2U,EAAWvT,eAAasT,EAAiB5R,kBACzCO,EAAWsR,EAAStR,SAAS2L,MLpFtB,KKqFX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/D+K,EAAStR,SAAWA,EAAS4L,KLtFlB,KKuFX0F,EAAS1E,WACT0E,EAAS5C,MAAQ,SAAUnS,GACnBc,EAAK6T,iBAAiBxC,OACtBrR,EAAK6T,iBAAiBxC,MAAMvK,KAAKkG,EAAO9N,IAGhD+U,EAAS5D,YAAc,SAAUnR,GACzBc,EAAK6T,iBAAiBxD,aACtBrQ,EAAK6T,iBAAiBxD,YAAYvJ,KAAKkG,EAAO9N,KAe1DyU,EAAe9N,UAAUqO,uBAAyB,SAAU5U,EAAI6U,EAAM1R,EAAS2R,EAAUC,EAAa/G,GAClG,IAAIN,EAAQvI,KACZA,KAAK6I,UAAYA,EACjB,IAAIL,EAAYxI,KAAKrD,OAAO+B,cAAc,UACtC7D,GAAIA,EAAKgN,GAAcC,KAE3B6H,EAASrG,aAAa,WAAY,KAClCsG,EAAY5Q,YAAYwJ,GACxB,IAAIgH,EAAW,IAAI7R,kBACfK,QAASA,EACTH,OAAQ8R,EACR/G,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/B5K,SAAUkG,GL5HH,IK4H0B4B,GACjC+C,aAAc,MACd5O,QAASuV,EACT9D,YAAa,SAAUxN,GACnBA,EAAKyR,QAAUC,oBAAkB1R,EAAKuO,OAASE,UAAQzO,EAAKuO,MAAM9O,OAAQ,IAAM4G,OAErF+D,GAKH,OAJAjJ,EAAcoQ,EAAU3P,KAAKrD,QAC7B6L,EAAUY,QAAUZ,EAAUuH,UAAY,WAAcxH,EAAM5M,UAAY,GAE1EgU,EAASI,UAAY,SAAUtV,GAAK8N,EAAMyH,iBAAiBvV,EAAGkV,IACvDH,GAEXN,EAAe9N,UAAU4O,iBAAmB,SAAUvV,EAAGoD,GACrD,IAEIoS,EAFA3U,EAAQuC,EAAOqS,iBAAiB,cAChCC,EAAmBtS,EAAOqS,iBAAiB,eAE/C,GAAIC,EACA,IAAK,IAAItW,EAAI,EAAGA,EAAIsW,EAAiBrW,OAAQD,IACrCsW,EAAiBpW,SAASF,EAAEG,WAAY,KAAK6S,QAAQ,oBACrDoD,EAAcE,EAAiBpW,SAASF,EAAEG,WAAY,MAIlE,GAAIiW,EACA,IAASpW,EAAI,EAAGA,EAAIyB,EAAMxB,OAAQD,IAC1ByB,EAAMvB,SAASF,EAAEG,WAAY,KAAK8R,UAAUsE,SAAS,eACjD9U,EAAMvB,SAASF,EAAEG,WAAY,KAAK6S,QAAQ,oBAC1C7M,KAAKrE,UAAY9B,IAK7BY,EAAEoD,OAAOiO,UAAUsE,SAAS,cAAgB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,2BACxE3V,EAAEoD,OAAOiO,UAAUsE,SAAS,uBAAyB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,2BACnE,eAAV3V,EAAE+G,MAA0B/G,EAAE4V,UAAsB,QAAV5V,EAAE+G,MAC5CxB,KAAKsQ,iBAAiB7V,GAAIuF,KAAK6I,UAAWvN,IAEhC,cAAVb,EAAE+G,KAAwB/G,EAAE4V,UAAsB,QAAV5V,EAAE+G,MAC1CxB,KAAKsQ,iBAAiB7V,EAAGuF,KAAK6I,UAAWvN,KAIrD4T,EAAe9N,UAAUkP,iBAAmB,SAAU7V,EAAGoO,EAAWvN,GAOhE,GANMA,EAAM,GAAGwQ,UAAUsE,SAAS,wBAC9B9U,EAAM,GAAGwQ,UAAUK,IAAI,uBAErB7Q,EAAMA,EAAMxB,OAAS,GAAGgS,UAAUsE,SAAS,uBAC7C9U,EAAMA,EAAMxB,OAAS,GAAGgS,UAAUK,IAAI,sBAEtCtD,EAAW,CAUX,GATuB,IAAnB7I,KAAKrE,WAAmBL,EAAMvB,SAASiG,KAAKrE,UAAU3B,WAAY,KAAK8R,UAAUsE,SAAS,wBAC1FpQ,KAAKuQ,gBAAgB9V,EAAGa,GAAO,GAE9Bb,EAAEoD,OAAOiO,UAAUsE,SAAS,eAAkB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,uBAC1E3V,EAAEoD,OAAOiO,UAAUsE,SAAS,8BAAgC3V,EAAEoD,OAAOiO,UAAUsE,SAAS,wBACnE,IAAnBpQ,KAAKrE,YAAoBlB,EAAEoD,OAAOiO,UAAUsE,SAAS,eACxDpQ,KAAKrE,YACLqE,KAAKuQ,gBAAgB9V,EAAGa,GAAO,IAE/Bb,EAAEoD,OAAOiO,UAAUsE,SAAS,sBAAuB,CAEpCpQ,KAAKwQ,kBAAkB/V,EAAGa,KAErC0E,KAAKrE,UAAY,EACjBqE,KAAKuQ,gBAAgB9V,EAAGa,GAAO,IAGnCb,EAAEoD,OAAOiO,UAAUsE,SAAS,4BAC5BpQ,KAAKrE,UAAY,EACjBqE,KAAKuQ,gBAAgB9V,EAAGa,GAAO,QAGlC,CAKD,GAJKb,EAAEoD,OAAOiO,UAAUsE,SAAS,eAAoC,IAAnBpQ,KAAKrE,YACnDqE,KAAKrE,YACLqE,KAAKuQ,gBAAgB9V,EAAGa,GAAO,IAE/Bb,EAAEoD,OAAOiO,UAAUsE,SAAS,uBAAwB,CAErCpQ,KAAKwQ,kBAAkB/V,EAAGa,KAErC0E,KAAKrE,UAAYL,EAAMxB,OAAS,EAChCkG,KAAKuQ,gBAAgB9V,EAAGa,GAAO,IAGnCb,EAAEoD,OAAOiO,UAAUsE,SAAS,4BAC5BpQ,KAAKrE,UAAYL,EAAMxB,OAAS,EAChCkG,KAAKuQ,gBAAgB9V,EAAGa,GAAO,IAGnCb,EAAEoD,OAAOiO,UAAUsE,SAAS,eAA4B,QAAV3V,EAAE+G,MAC5CqH,EACI7I,KAAKrE,UAAYL,EAAMxB,OAAS,GAChCkG,KAAKrE,YAILqE,KAAKrE,UAAY,GACjBqE,KAAKrE,cAKrBuT,EAAe9N,UAAUoP,kBAAoB,SAAU/V,EAAGa,GACtD,IACImV,EADAC,EAAiBpV,EAAMvB,SAASiG,KAAKrE,UAAU3B,WAAY,KAAK6S,QAAQ,6BAK5E,OAHI6D,IACAD,EAAkBC,EAAepT,cAAc,8BAE/CmT,IACc,QAAVhW,EAAE+G,KACF/G,EAAEkW,iBAEND,EAAepT,cAAc,2BAA2BsT,SACjD,IAMf1B,EAAe9N,UAAUmP,gBAAkB,SAAU9V,EAAGa,EAAOuN,GAE3D,IADA,IAAIgI,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBACxCgE,GAAcA,EAAW/E,UAAUsE,SAAS,eAAe,CAC9D,GAAIvH,EACA,GAAI7I,KAAKrE,UAAYL,EAAMxB,OAAS,EAChCkG,KAAKrE,gBAEJ,CAGD,GADeqE,KAAKwQ,kBAAkB/V,EAAGa,GAErC,MAEJ0E,KAAKrE,UAAY,OAIrB,GAAIqE,KAAKrE,UAAY,EACjBqE,KAAKrE,gBAEJ,CAGD,GADeqE,KAAKwQ,kBAAkB/V,EAAGa,GAErC,MAEJ0E,KAAKrE,UAAYL,EAAMxB,OAAS,EAGxC+W,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAEjC,QAAVpS,EAAE+G,KACF/G,EAAEkW,iBAENrV,EAAMvB,SAASiG,KAAKrE,UAAU3B,WAAY,KAAK4W,SASnD1B,EAAe9N,UAAU0P,uBAAyB,SAAUvB,GACxD,IAAIC,EAAWvT,eAAasT,EAAiB5R,kBAC/B1B,eAAauT,EAAS3R,OAAQ6B,WACpCxD,UACRqT,EAAgB1D,cAAcA,cAAckF,aAAavB,EAAS3R,OAAQ0R,EAAgB1D,eAC1F2D,EAAStT,UACT6P,SAAOwD,IAUXL,EAAe9N,UAAU4P,kBAAoB,SAAUzB,EAAiB1U,GAGpE,OAFeoB,eAAasT,EAAiB5R,kBAChBsT,SAASlV,QACjBuB,cAAc,IAAMzC,IAU7CqU,EAAe9N,UAAU/D,yBAA2B,SAAUT,EAAUC,GACpE,IAAI0S,EAAkB1S,EAAWS,cAAc,IAAM0C,KAAKrD,OAAO/B,KAAKgC,EAASpB,UAAUR,OAAO4B,EAASnB,YAAYZ,GAAKgN,GAAcC,IAExI,OADe7L,eAAasT,EAAiB5R,kBAC7BsT,SAASlV,SAE7BmT,EAAe9N,UAAU8P,eAAiB,SAAUlH,GAChD,IAAImH,EAAczU,EAAesD,KAAKrD,OAAQqN,GAC9C,OAAOmH,EAAclV,eAAakV,EAAaxT,kBAAkB,MAWrEuR,EAAe9N,UAAUgQ,SAAW,SAAUpH,EAAWqH,EAAOxO,GAC5D7C,KAAKkR,eAAelH,GAAWoH,SAASC,EAAOxO,IAUnDqM,EAAe9N,UAAUkQ,YAAc,SAAUtH,EAAWqH,EAAOE,GAC/DvR,KAAKkR,eAAelH,GAAWsH,YAAYD,EAAOE,IAQtDrC,EAAe9N,UAAUuI,OAAS,SAAUK,GACxChK,KAAKkR,eAAelH,GAAWL,UASnCuF,EAAe9N,UAAUoQ,eAAiB,SAAUpR,EAAMvF,GACtD,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAK6T,iBAAkBhP,GACtC,IAAIqR,EAAS/U,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAC7C,GAAK6U,EAAL,CAGA,IAAIC,EAAUzV,eAAawV,EAAQ9T,kBAC/ByC,EAAKlC,WACLkC,EAAKlC,UAAYsG,GLzXV,IKyXmCP,GLzXnC,IKyXkE7D,EAAKlC,UAAU0B,OACxFQ,EAAKlC,SAAWtB,EAASrB,KAAKyN,aAAe1I,iBAAemD,OACvDW,GL3XE,IK2XqBhE,EAAKlC,UAAU0B,OAASQ,EAAKlC,SACzDwT,EAAQxT,SAAWkC,EAAKlC,iBAErBkC,EAAKwM,aACLxM,EAAKwL,YACRxL,EAAKjG,UACLiG,EAAKjG,QAAUyC,EAASrB,KAAKyN,aAAe1I,iBAAekD,MAAQ,GAAKpD,EAAKjG,SAEjFuX,EAAQrV,cAAc+D,MAU1B8O,EAAe9N,UAAUuQ,mBAAqB,SAAU5V,EAASR,GAC7D,IAAImW,EAAUzV,eAAaF,EAAS4B,kBAChCO,EAAWwT,EAAQxT,SAAS2L,ML/YrB,KKgZPtO,EAAKyN,aAAe1I,iBAAemD,MACnCvF,EAAS0T,KAAKxN,IAGdlG,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAUsB,KAEnEsN,EAAQxT,SAAWA,EAAS4L,KLtZjB,KKuZX4H,EAAQrV,eAAgB0M,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,SACzFiO,EAAQrV,eAAgBlC,QAASoB,EAAKyN,aAAe1I,iBAAekD,MAAQ,GAAKjI,EAAK6T,iBAAiBjV,WAEpG+U,KC3aP2C,GAAmC,WACnC,SAASA,EAAkBlV,GACvBqD,KAAKrD,OAASA,EAiQlB,OA/PAkV,EAAkBzQ,UAAUgH,cAAgB,WACxC,MAAO,qBAEXyJ,EAAkBzQ,UAAUlF,QAAU,WAClC8D,KAAKrD,OAAS,MAUlBkV,EAAkBzQ,UAAU0Q,kBAAoB,SAAUvW,EAAM+M,GAC5D,IAAIC,EAAQvI,KACRwI,EAAYxI,KAAKrD,OAAO+B,cAAc,UACtC7D,GAAIU,EAAKV,KAEbyN,EAAQtJ,YAAYwJ,GACpB,IAAIuJ,EAAsBxW,EAAKwW,oBAC3B7T,GAAY+F,GNRL,IMQoCO,GNRpC,KMQ8DuN,EAAoB7T,SACzF6T,EAAoB7T,SAAW,KAAK0B,OACpCoS,EAAc,IAAIC,eAClBrJ,OAAQ5I,KAAKrD,OAAOiM,OACpBC,UAAW7I,KAAKrD,OAAOkM,UACvBC,kBAAmB9I,KAAKrD,OAAOmM,kBAC/BC,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,OACjE4L,kBAAmB0C,EAAoB1C,kBACvCnR,SAAUA,GAAa3C,EAAKyN,aAAe1I,iBAAemD,MNhBnD,IMgBqEW,GAAgB,IAC5F3H,SAAUlB,EAAKkB,SACfuB,QAAS+T,EAAoB/T,QAC7B1C,MAAOyW,EAAoBzW,MAC3BuC,OAAQkU,EAAoBlU,OAC5B+N,YAAa,SAAUnR,GACfsX,EAAoBnG,aACpBmG,EAAoBnG,YAAYvJ,KAAKkG,EAAO9N,IAGpD6U,iBAAkByC,EAAoBzC,iBACtCtD,WAAY+F,EAAoB/F,WAChCY,MAAO,WACHoF,EAAqB,QAAElG,UAAUC,OAAOrH,IACpCqN,EAAoBnF,OACpBmF,EAAoBnF,MAAMvK,KAAKkG,IAGvCY,QAAS4I,EAAoB5I,QAC7B+C,KAAM,WACF8F,EAAqB,QAAElG,UAAUK,IAAIzH,IACjCqN,EAAoB7F,MACpB6F,EAAoB7F,KAAK7J,KAAKkG,IAGtClO,OAAQ0X,EAAoB1X,OAC5B0P,MAAO,SAAUtP,GACTsX,EAAoBhI,OACpBgI,EAAoBhI,MAAM1H,KAAKkG,EAAO9N,KAG/C+N,GACC0J,EAAc1J,EAAUqD,cAAcvO,cAAc,mBACxD4U,EAAYnC,UAAY,SAAUtV,GAChB,UAAVA,EAAE+G,MACF/G,EAAE0X,2BACFD,EAAYnI,UAGpB/J,KAAKoS,WAAW7W,EAAMyW,GACtB,IAAI5F,EAAU4F,EAAqB,QACnC3F,eAAaF,IAAIC,EAAS,aAAc,WAAcA,EAAQN,UAAUK,IAAI5H,KAAkBvE,MAC9FqM,eAAaF,IAAIC,EAAS,aAAc,WAAcA,EAAQN,UAAUC,OAAOxH,KAAkBvE,OAWrG6R,EAAkBzQ,UAAUmI,kBAAoB,SAAUhO,EAAM+M,EAASkB,GACrE,IAAIjB,EAAQvI,KACRqS,EAAiB/J,EAAQhL,cAAc,IAAM/B,EAAKV,IACtDwX,EAAe/I,aAAa,eAAgB/N,EAAKkO,KAAKzP,YACtD,IAAIgY,EAAc/V,eAAaoW,EAAgBJ,eAC/CD,EAAY9T,SAAW8T,EAAY9T,SN1ExB,IM0E2CuG,GACtDuN,EAAYlH,WACZ,IAAIoH,EAAcG,EAAexG,cAAcvO,cAAc,mBACzDgV,EAAQJ,EAAY3T,aAAa,MACjCgU,EAAWC,SAASlV,cAAc,IAAMgV,EAAQ,UACpDJ,EAAYnC,UAAY,SAAUtV,GAChB,UAAVA,EAAE+G,MACF/G,EAAE0X,2BACFD,EAAYnI,UAGpBwI,EAASxC,UAAY,SAAUtV,GACb,UAAVA,EAAE+G,MACF/G,EAAEkW,iBACFqB,EAAqB,QAAElG,UAAUC,OAAO,iBACxCwG,EAASjV,cAAc,cAAcyM,UAG7C,IAAIlM,EACJmU,EAAYpG,YAAc,SAAUnR,GAC5Bc,EAAKwW,oBAAoBnG,aACzBrQ,EAAKwW,oBAAoBnG,YAAYvJ,KAAKkG,EAAO9N,GAErDoD,EAASpD,EAAEkS,MAAQlS,EAAEkS,MAAM9O,OAAS,MAExCmU,EAAYjI,MAAQ,SAAUtP,GACtBc,EAAKwW,oBAAoBhI,OACzBxO,EAAKwW,oBAAoBhI,MAAM1H,KAAKkG,EAAO9N,GAE/C+O,EAAeG,UAEnBqI,EAAYpF,MAAQ,SAAUnS,GACtBc,EAAKwW,oBAAoBnF,OACzBrR,EAAKwW,oBAAoBnF,MAAMvK,KAAKkG,EAAO9N,GAE/CuX,EAAqB,QAAElG,UAAUC,OAAOrH,IACpC7G,IAAWA,EAAOgP,QAAQ,iCAC1BrD,EAAeG,WAY3BkI,EAAkBzQ,UAAUwI,qBAAuB,SAAUrO,EAAM+M,GAC/D,IAAIC,EAAQvI,KACRqS,EAAiB/J,EAAQhL,cAAc,IAAM/B,EAAKV,IAClDmX,EAAc/V,eAAaoW,EAAgBJ,eAC3C/T,EAAW8T,EAAY9T,SAAS2L,MN/HzB,KMgIX3L,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAU2B,KAC/DuN,EAAY9T,SAAWA,EAAS4L,KNjIrB,KMkIXkI,EAAYlH,WACZkH,EAAYpG,YAAc,SAAUnR,GAC5Bc,EAAKwW,oBAAoBnG,aACzBrQ,EAAKwW,oBAAoBnG,YAAYvJ,KAAKkG,EAAO9N,IAGzDuX,EAAYjI,MAAQ,SAAUtP,GACtBc,EAAKwW,oBAAoBhI,OACzBxO,EAAKwW,oBAAoBhI,MAAM1H,KAAKkG,EAAO9N,IAGnDuX,EAAYpF,MAAQ,SAAUnS,GACtBc,EAAKwW,oBAAoBnF,OACzBrR,EAAKwW,oBAAoBnF,MAAMvK,KAAKkG,EAAO9N,GAE/CuX,EAAqB,QAAElG,UAAUC,OAAOrH,MAGhDmN,EAAkBzQ,UAAUgR,WAAa,SAAU7W,EAAMmW,GACrDA,EAAuB,cAAErV,eAAgBlC,QAAUoB,EAAKyN,aAAe1I,iBAAeiD,OAAUhI,EAAKwW,oBAAoB5X,QAAU,KACnIuX,EAAyB,gBAAErV,eAAgBlC,QAAUoB,EAAKyN,aAAe1I,iBAAemD,MAASlI,EAAKwW,oBAAoB5X,QAAU,MAExI0X,EAAkBzQ,UAAUqR,kBAAoB,SAAUzI,GACtD,IAAIqI,EAAiB3V,EAAesD,KAAKrD,OAAQqN,GACjD,OAAO/N,eAAaoW,EAAgBJ,gBAWxCJ,EAAkBzQ,UAAUgQ,SAAW,SAAUpH,EAAWqH,EAAOxO,GAC/D7C,KAAKyS,kBAAkBzI,GAAWoH,SAASC,EAAOxO,IAUtDgP,EAAkBzQ,UAAUkQ,YAAc,SAAUtH,EAAWqH,EAAOE,GAClEvR,KAAKyS,kBAAkBzI,GAAWsH,YAAYD,EAAOE,IAQzDM,EAAkBzQ,UAAUuI,OAAS,SAAUK,GAC3ChK,KAAKyS,kBAAkBzI,GAAWL,UAStCkI,EAAkBzQ,UAAUsR,kBAAoB,SAAUtS,EAAMvF,GAC5D,IAAI+B,EAAWjC,EAAQqF,KAAKrD,OAAO/B,KAAMC,GACzC,GAAK+B,EAAL,CAGAsN,QAAMtN,EAASrB,KAAKwW,oBAAqB3R,GACzC,IAAIqR,EAAS/U,EAAesD,KAAKrD,OAAQ9B,EAAI+B,GAC7C,GAAK6U,EAAL,CAGA,IAAIC,EAAUzV,eAAawV,EAAQQ,eAC/B7R,EAAKlC,WACLkC,EAAKlC,UAAYsG,GN/MV,IM+MmCP,GN/MnC,IM+MkE7D,EAAKlC,UAAU0B,OACxFQ,EAAKlC,SAAWtB,EAASrB,KAAKyN,aAAe1I,iBAAemD,OACvDW,GNjNE,IMiNqBhE,EAAKlC,UAAU0B,OAASQ,EAAKlC,SACzDwT,EAAQxT,SAAWkC,EAAKlC,iBAErBkC,EAAK8L,YACL9L,EAAK2J,aACL3J,EAAKwM,aACLxM,EAAKwL,YACZ8F,EAAQrV,cAAc+D,GAClBA,EAAKjG,SACL6F,KAAKoS,WAAWxV,EAASrB,KAAMmW,MAWvCG,EAAkBzQ,UAAUuR,sBAAwB,SAAU5W,EAASR,GACnE,IAAImW,EAAUzV,eAAaF,EAASkW,eAChC/T,EAAWwT,EAAQxT,SAAS2L,MNvOrB,KMwOPtO,EAAKyN,aAAe1I,iBAAemD,MACnCvF,EAAS0T,KAAKxN,IAGdlG,EAAWA,EAASO,OAAO,SAAUqE,GAAS,OAAOA,IAAUsB,KAEnEsN,EAAQxT,SAAWA,EAAS4L,KN9OjB,KM+OX4H,EAAQrV,eAAgB0M,aAAcxN,EAAKyN,aAAe1I,iBAAemD,MAAQ,MAAQ,SACzFzD,KAAKoS,WAAW7W,EAAMmW,IAEnBG,KC1QPrR,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,wBAA2BC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOlB,KAAKmB,YAAcT,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEU,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAY1D,EAAQ2D,EAAKC,GAC7E,IAA2Hf,EAAvHgB,EAAIC,UAAU7H,OAAQ8H,EAAIF,EAAI,EAAI7D,EAAkB,OAAT4D,EAAgBA,EAAOb,OAAOiB,yBAAyBhE,EAAQ2D,GAAOC,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAY1D,EAAQ2D,EAAKC,QACpH,IAAK,IAAI5H,EAAI0H,EAAWzH,OAAS,EAAGD,GAAK,EAAGA,KAAS6G,EAAIa,EAAW1H,MAAI+H,GAAKF,EAAI,EAAIhB,EAAEkB,GAAKF,EAAI,EAAIhB,EAAE7C,EAAQ2D,EAAKI,GAAKlB,EAAE7C,EAAQ2D,KAASI,GAChJ,OAAOF,EAAI,GAAKE,GAAKhB,OAAOoB,eAAenE,EAAQ2D,EAAKI,GAAIA,GAgB5DgR,GAAwB,SAAU1Q,GAQlC,SAAS0Q,EAAOC,EAAS9W,GAIrB,OAFA+W,EAASC,OAAO5K,GAAciC,GAAgB8E,GAAgB2C,GAAmB3E,IACzEhL,EAAOG,KAAKrC,KAAM6S,EAAS9W,IAAYiE,KAVnDQ,GAAUoS,EAAQ1Q,GAalB4Q,EAAWF,EAOXA,EAAOxR,UAAU4R,OAAS,WACtBhT,KAAKiT,cAETL,EAAOxR,UAAU8R,UAAY,WACzBlT,KAAKmT,QAAU,EACfnT,KAAK3B,eACL2B,KAAKoT,aAAc,EACnBpT,KAAKqT,YACDC,UAAW,YACXC,WAAY,aACZzY,IAAK,MACL0Y,SAAU,cAQlBZ,EAAOxR,UAAUqS,eAAiB,WAC9B,OAAOzT,KAAK0T,cAAc,kBAQ9Bd,EAAOxR,UAAUgH,cAAgB,WAC7B,MAAO,UAQXwK,EAAOxR,UAAUuS,gBAAkB,WAC/B,IAAIC,KAEJ,OADAA,EAAQhC,MAAOiC,OAAQ,eAAgBzV,MAAO4B,QAAW6T,OAAQ,iBAAkBzV,MAAO4B,QAAW6T,OAAQ,oBAAqBzV,MAAO4B,QAAW6T,OAAQ,iBAAkBzV,MAAO4B,QAAW6T,OAAQ,oBAAqBzV,MAAO4B,QAAW6T,OAAQ,iBAAkBzV,MAAO4B,QAAW6T,OAAQ,iBAAkBzV,MAAO4B,QACrT4T,GAEXhB,EAAOxR,UAAU6R,WAAa,WAC1BjT,KAAKjE,QAAQlB,GAAKmF,KAAKjE,QAAQlB,IAAMiZ,cAAY,KAAO9T,KAAKoI,iBAC7D2L,YAAU/T,KAAKjE,UAAW,SAASiY,OAAQhU,KAAK9B,SAAW8B,KAAK9B,SAAS2L,MP1E9D,UO2EP7J,KAAK6I,WACL7I,KAAKjE,QAAQ+P,UAAUK,IAAI8H,IAE/BjU,KAAKjE,QAAQmY,MAAMxF,MAAQyF,aAAWnU,KAAK0O,OAC3C1O,KAAKoU,aACDpU,KAAKqU,sBACLrU,KAAKqU,qBAAqBC,eAAetU,KAAKuU,UAElDvU,KAAKwU,yBACSxU,KAAKlD,OAAc,MACzB2X,kBACRlV,EAAcS,KAAKjE,QAASiE,MAC5BA,KAAK0U,aACL1U,KAAK2U,oBACL3U,KAAK4U,oBAAsB,GAE/BhC,EAAOxR,UAAUsT,WAAa,WAC1BrI,eAAaF,IAAI0I,OAAQ,SAAU7U,KAAK8U,cAAe9U,OAE3D4S,EAAOxR,UAAUuT,kBAAoB,WACjC3U,KAAK+U,qBAAuB,IAAIC,iBAAehV,KAAKjE,SAChDkZ,UAAWjV,KAAKgQ,iBAAiBjQ,KAAKC,MACtCqT,WAAYrT,KAAKqT,WACjB6B,UAAW,aAGnBtC,EAAOxR,UAAU4O,iBAAmB,SAAUvV,GAC1B,QAAVA,EAAE+G,KAAqB/G,EAAEoD,OAAOiO,UAAUsE,SAAS,eAAoB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,eACrG3V,EAAEkW,iBAEN,IAGIV,EAHAkF,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKoF,KAAKoV,aAAava,GAAKwa,IACzFC,EAAiBH,EAAcjF,iBAAiB,cAChDC,EAAmBgF,EAAcjF,iBAAiB,eAEtD,GAAIC,EACA,IAAK,IAAItW,EAAI,EAAGA,EAAIsW,EAAiBrW,OAAQD,IACrCsW,EAAiBpW,SAASF,EAAEG,WAAY,KAAK6S,QAAQ,oBACrDoD,EAAcE,EAAiBpW,SAASF,EAAEG,WAAY,MAIlE,GAAIiW,EACA,IAASpW,EAAI,EAAGA,EAAIyb,EAAexb,OAAQD,IACnCyb,EAAevb,SAASF,EAAEG,WAAY,KAAK8R,UAAUsE,SAAS,eAC1DkF,EAAevb,SAASF,EAAEG,WAAY,KAAK6S,QAAQ,oBACnD7M,KAAK4U,oBAAsB/a,GAK3C,GAAiC,IAA7BmG,KAAK4U,oBAEL,IADA,IAAIrZ,EAAO+Z,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBACrDtR,GAAQA,EAAKuQ,UAAUsE,SAAS,eACnCpQ,KAAK4U,sBACLrZ,EAAO+Z,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAGhE,GAAIpS,EAAEoD,OAAOiO,UAAUsE,SAAS,cAAgB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,2BACxE3V,EAAEoD,OAAOiO,UAAUsE,SAAS,0BAA4B3V,EAAEoD,OAAOiO,UAAUsE,SAAS,uBACpF3V,EAAEoD,OAAOiO,UAAUsE,SAAS,wBAA0B3V,EAAEoD,OAAOiO,UAAUsE,SAAS,0BAClF3V,EAAEoD,OAAOiO,UAAUsE,SAAS,2BAC5B,OAAQ3V,EAAE8a,QACN,IAAK,aACDvV,KAAKsQ,iBAAiB7V,GAAIuF,KAAK6I,UAAWyM,GAC1C,MACJ,IAAK,YACDtV,KAAKsQ,iBAAiB7V,EAAGuF,KAAK6I,UAAWyM,GACzC,MACJ,IAAK,MACG7a,EAAEoD,OAAOiO,UAAUsE,SAAS,eACxBpQ,KAAK4U,oBAAsBU,EAAexb,OAAS,GACnDkG,KAAK4U,sBAGb,MACJ,IAAK,WACGna,EAAEoD,OAAOiO,UAAUsE,SAAS,cACxBpQ,KAAK4U,oBAAsB,GAC3B5U,KAAK4U,uBAIT5U,KAAKlD,OAAOf,QAAQuB,cAAc,4BAA4BA,cAAc,eAAesT,QAC3F5Q,KAAK4U,oBAAsB,KAK/ChC,EAAOxR,UAAUkP,iBAAmB,SAAU7V,EAAGoO,EAAWyM,GACxD,IAAI5E,EACA8E,EAWJ,GAVI3M,EACI7I,KAAK4U,oBAAsBU,EAAexb,OAAS,GAAKwb,EAAetV,KAAK4U,oBAAsB,GAAG9I,UAAUsE,SAAS,kBACxHpQ,KAAK4U,sBAIL5U,KAAK4U,oBAAsB,GAAKU,EAAetV,KAAK4U,oBAAsB,GAAG9I,UAAUsE,SAAS,kBAChGpQ,KAAK4U,uBAGP/L,GAAc7I,KAAK4U,oBAAsB,GAAQ/L,GAAc7I,KAAK4U,oBAAsBU,EAAexb,OAAS,GACpH,IAAKW,EAAEoD,OAAOiO,UAAUsE,SAAS,eAAiB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,eAAiB3V,EAAEoD,OAAOiO,UAAUsE,SAAS,sBAAuB,CAC9I,GAAIvH,EACA7I,KAAK4U,0BAEJ,CACD,IAAIa,EAAqBH,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK6S,QAAQ,IAAM6I,IACrGD,IACAD,EAAcC,EAAmBlX,aAAa,OAElDyB,KAAK4U,sBAGT,IADA,IAAIrZ,EAAO+Z,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBACrDtR,GAAQA,EAAKuQ,UAAUsE,SAAS,eAAe,CAClD,IAAMvH,GAAa7I,KAAK4U,sBAAwBU,EAAexb,OAAS,IAClE+O,GAA0C,IAA7B7I,KAAK4U,sBAChBU,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAAkBf,UAAUsE,SAAS,cAAe,CACrGpQ,KAAKlD,OAAOf,QAAQuB,cAAc,0BAA0BsT,QAC5D,MAIR/H,EAAY7I,KAAK4U,sBAAwB5U,KAAK4U,sBAC9CrZ,EAAO+Z,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAG5D,GADAyI,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,QACxC,YAAtB5Q,KAAKjD,cAEL,GADA2T,EAAiB4E,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK6S,QAAQ,IAAM6I,IAC7F7M,EAAW,CACX,IAAI4H,OAAkB,EAItB,GAHIC,IACAD,EAAkBC,EAAepT,cAAc,4BAE/CmT,EAAiB,CACjB,IAAInV,EAAQoV,EAAeR,iBAAiB,kBAC5C5U,EAAMA,EAAMxB,OAAS,GAAGwD,cAAc,cAAcwO,UAAUK,IAAI,4BAItE,GAAIuE,EAAgB,CAEhB,GAAI8E,IADmB9E,EAAenS,aAAa,MACb,EAC9BkS,EAAkBC,EAAepT,cAAc,6BAE/CgY,EAAevb,UAAUiG,KAAK4U,oBAAsB,GAAG5a,WAAY,KAAK8R,UAAUK,IAAI,8BAOlGmJ,EAAevb,SAAUiG,KAAwB,oBAAEhG,WAAY,KAAK8R,UAAUsE,SAAS,uBACvFkF,EAAevb,SAAUiG,KAAwB,oBAAEhG,WAAY,KAAK8R,UAAUC,OAAO,uBAEhFuJ,EAAevb,SAAUiG,KAAwB,oBAAEhG,WAAY,KAAK8R,UAAUsE,SAAS,uBAC5FkF,EAAevb,SAAUiG,KAAwB,oBAAEhG,WAAY,KAAK8R,UAAUC,OAAO,4BASjG,GAH0B,YAAtB/L,KAAKjD,cACLiD,KAAKlD,OAAOf,QAAQuB,cAAc,0BAA0BsT,QAEtC,eAAtB5Q,KAAKjD,aAA+B,CACpC,IAAIyM,EAAiBxJ,KAAKlD,OAAOf,QAAQuB,cAAc,4BACnDuL,GAAcW,IAAmBA,EAAesC,UAAUsE,SAAS,iBACnE5G,EAAeoH,QAGf5Q,KAAKlD,OAAOf,QAAQuB,cAAc,0BAA0BsT,QAcxE,GAVInW,EAAEoD,OAAOiO,UAAUsE,SAAS,wBACxBvH,GACA6H,EAAiB4E,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK6S,QAAQ,IAAM6I,KAClFpY,cAAc,2BAA2BsT,SAGxD5Q,KAAK4U,sBACLU,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,WAGrE/H,GAAapO,EAAEoD,OAAOiO,UAAUsE,SAAS,uBAAwB,EAE9DK,GADJC,EAAiB4E,EAAevb,UAAUiG,KAAK4U,oBAAsB,GAAG5a,WAAY,KAAK6S,QAAQ,IAAM6I,KAClEpY,cAAc,6BAE/CoT,EAAepT,cAAc,2BAA2BsT,QAiBhE,GAdInW,EAAEoD,OAAOiO,UAAUsE,SAAS,4BACxBvH,GACA7I,KAAK4U,sBACLU,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,QAC9D0E,EAAevb,UAAUiG,KAAK4U,oBAAsB,GAAG5a,WAAY,KAAK8R,UAAUsE,SAAS,uBAC3FkF,EAAevb,UAAUiG,KAAK4U,oBAAsB,GAAG5a,WAAY,KAAK8R,UAAUC,OAAO,wBAK7F/L,KAAK4U,oBACLU,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,UAGtEnW,EAAEoD,OAAOiO,UAAUsE,SAAS,yBAC5B,GAAIvH,EAAW,CACX7I,KAAK4U,oBAAsB,EAE3B,IADA,IAAI/D,EAAayE,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAC3DgE,GAAcA,EAAW/E,UAAUsE,SAAS,eAC/CpQ,KAAK4U,sBACL/D,EAAayE,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAElEyI,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,YAEjE,CAED,IADIpH,EAAiBxJ,KAAKlD,OAAOf,QAAQuB,cAAc,+BAC/BkM,EAAesC,UAAUsE,SAAS,iBACtD5G,EAAeoH,YAEd,CACD5Q,KAAK4U,oBAAsBU,EAAexb,OAAS,EAEnD,IADI+W,EAAayE,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAC3DgE,GAAcA,EAAW/E,UAAUsE,SAAS,eAC/CpQ,KAAK4U,sBACL/D,EAAayE,EAAetV,KAAK4U,qBAAqB/H,QAAQ,kBAElEyI,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,SAIpD,eAAtB5Q,KAAKjD,cAAiCtC,EAAEoD,OAAOiO,UAAUsE,SAAS,6BAC9DvH,EACA7I,KAAKlD,OAAOf,QAAQuB,cAAc,0BAA0BsT,SAG5D5Q,KAAK4U,oBAAsBU,EAAexb,OAAS,EACnDwb,EAAevb,SAASiG,KAAK4U,oBAAoB5a,WAAY,KAAK4W,WAI9EgC,EAAOxR,UAAU0T,cAAgB,WAC7B,IAAIK,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKoF,KAAKoV,aAAava,GAAKwa,IAE7F,GADArV,KAAK2V,cAAc3V,KAAKoV,YAAaD,GACjCnV,KAAK4V,aAAc,CACnB,IAAIC,EAAY7V,KAAKlD,OAAOf,QAAQuB,cAAc,IAAMwY,IACxD9V,KAAK4V,aAAaG,WAAaF,EAAUG,cAGjDpD,EAAOxR,UAAUgT,WAAa,WAC1BpU,KAAKiW,aAAejW,KAAKpF,KAAKsb,QAC9BlW,KAAKiW,aAAejW,KAAKmW,QAAQnW,KAAKiW,aAAc,MAAOjW,KAAKjE,QAAQlB,IACxEmF,KAAK3D,eAAgBzB,KAAMoF,KAAKiW,eAAgB,GAChD,IAAIG,EAASpW,KAAKtB,cAAc,OAC5B7D,GAAImF,KAAKjE,QAAQlB,GP5OT,SO8OZmF,KAAKjE,QAAQiD,YAAYoX,GACzBpW,KAAKqW,mBACL,IAAIC,EAAWtW,KAAKuW,eAAevW,KAAKpF,MACxCoF,KAAKlD,OAAS,IAAI0Z,OACdtY,SP1UY,eO2UZuY,aAAczW,KAAKoV,YACnBsB,aAAc,QACdhI,MAAO1O,KAAK0O,MACZpT,MAAOgb,EACPzN,UAAW7I,KAAK6I,UAChBM,QAASnJ,KAAK2W,WAAW5W,KAAKC,MAC9B4W,SAAU5W,KAAK6W,kBAAkB9W,KAAKC,MACtC8W,UAAW9W,KAAK+W,mBAAmBhX,KAAKC,QAE5CA,KAAKlD,OAAOmD,SAASmW,GAErBpW,KAAKjE,QAAQmY,MAAM8C,YAAYC,GAAkC,OACjEjX,KAAKjE,QAAQmY,MAAM8C,YAAYE,GAA2C,OAC1E,IAAIC,EAAaf,EAAO9Y,cAAc,cACxBrB,eAAakb,EAAYC,WAC/B/a,eAAgBqS,MAAO,iEAC/B1O,KAAKjE,QAAQ+P,UAAU9L,KAAKqX,YAAc,MAAQ,UAAUC,KAEhE1E,EAAOxR,UAAUmW,SAAW,SAAUC,GAClC,IAAIjP,EAAQvI,KACZ,GAAIwX,IAAQxX,KAAKqX,YAAjB,CAIArX,KAAKyX,QAAQD,EAAM,mBAAqB,mBADtB3H,QAAQ,GAC4C,SAAUzR,GACxEA,EAAKyR,SAGTtH,EAAMlM,eAAgBgb,YAAaG,IAAO,GAC1CjP,EAAMxM,QAAQ+P,UAAUnC,OAAO2N,GAA2B/O,EAAM8O,aAEhE9O,EAAMzL,OAAOf,QAAQuB,cAAc,cAAc4W,MAAMwD,QAAUF,EAAM,OAAS,QAC3EA,GACDjP,EAAMoP,qBAIlB/E,EAAOxR,UAAUwW,aAAe,WAC5B5X,KAAK3D,eAAgBU,aAAoC,eAAtBiD,KAAKjD,aAAgC,UAAY,eAAgB,GACpGiD,KAAK6X,gBAETjF,EAAOxR,UAAUuV,WAAa,WAC1B3W,KAAK8X,oBACL9X,KAAK+X,iBAAiB/X,KAAKoV,cAE/BxC,EAAOxR,UAAUyV,kBAAoB,SAAUpc,GAC3CuF,KAAKoT,aAAc,EACnB,IAAI4E,EAAgBvd,EAAEgc,aAAalY,aAAa,WAC5C0Z,EAAgBve,EAASsG,KAAKpF,cAAiBE,GAAO,OAAQA,EAAID,KAAOmd,IAC7EC,GAAmC,IAAnBA,EAAuBjY,KAAKoV,YAAc6C,EAC1D,IAAIC,GAAcC,cAAenY,KAAKoV,YAAa6C,cAAeA,GAGlE,GAFAjY,KAAK3D,eAAgB+Y,YAAa6C,IAAiB,GACnDjY,KAAK2V,cAAcsC,EAAexd,EAAE2d,gBAAgBC,YAC1B,eAAtBrY,KAAKjD,cAAiCiD,KAAKpC,YAAa,CACxD,IAAI0a,EAAiBtY,KAAKpC,YAAYC,OAClC0a,EAAiBD,EAAehb,cAAc,IAAMkb,IACpDD,GACAA,EAAezM,UAAUC,OAAOyM,IAEpC,IAAIC,EAAYH,EAAehb,cAAc,IAAM0a,EAAgBU,IAC/DD,GACAA,EAAU3M,UAAUK,IAAIqM,IACxBxY,KAAKpC,YAAY7B,QAAQ+P,UAAUC,OAAO4M,KAG1C3Y,KAAKpC,YAAY7B,QAAQ+P,UAAUK,IAAIwM,IAG/C3Y,KAAKyX,QAAQ,cAAeS,IAEhCtF,EAAOxR,UAAUuU,cAAgB,SAAUna,EAAU2Z,GACjD,IAAIyD,EAAazD,EAActI,QAAQ,IAAMgM,IACzCC,EAAaF,EAAW5C,YAAcb,EAAca,YACxD,GAAI8C,IAAe9Y,KAAK4V,aAAc,CAClC,GAA0B,YAAtB5V,KAAKjD,aAA4B,CAEjC,IAAIgc,GAAU,IACdA,EAAU/Y,KAAKgZ,oBAAoBxd,EAAUod,EAAYzD,GAAe,KACvDyD,EAAW5C,YAAcb,EAAca,cACpD+C,EAAU/Y,KAAKgZ,oBAAoBxd,EAAUod,EAAYzD,GAAe,IAExEyD,EAAW5C,YAAcb,EAAca,aACvChW,KAAKiZ,uBAAuBzd,EAAUod,EAAYzD,QAItDnV,KAAKkZ,6BAA6B1d,EAAUod,EAAYzD,GACpDyD,EAAW5C,YAAcb,EAAca,aACvChW,KAAKmZ,wBAAwBP,EAAYzD,EAAe3Z,GAI3Dod,EAAW5C,YAAcb,EAAca,cAAkBhW,KAAK4V,eAC/D5V,KAAK4V,aAAe,IAAIwD,WACpBvQ,UAAW7I,KAAK6I,WACjB7I,KAAKlD,OAAOf,QAAQuB,cAAc,IAAMub,WAG9C,IAAKC,EAEN,GADA9Y,KAAKqZ,gBACqB,YAAtBrZ,KAAKjD,aAA4B,CAC7Bgc,GAAU,IACdA,EAAU/Y,KAAKsZ,uBAAuBV,EAAYzD,GAAe,EAAO3Z,KAEvDod,EAAW5C,YAAcb,EAAca,cACpD+C,EAAU/Y,KAAKuZ,oBAAoB/d,EAAUod,EAAYzD,GAAe,KAGvE4D,GAAYH,EAAW5C,YAAcb,EAAca,cACpD+C,EAAU/Y,KAAKuZ,oBAAoB/d,EAAUod,EAAYzD,GAAe,SAI5EnV,KAAKwZ,wBAAwBZ,EAAYzD,EAAe3Z,GACpDod,EAAW5C,YAAcb,EAAca,aACvChW,KAAKyZ,6BAA6Bje,EAAUod,EAAYzD,IAKxEvC,EAAOxR,UAAU8X,6BAA+B,SAAU1d,EAAUod,EAAYzD,GAE5E,IAAK,IADDra,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KACzCH,EAAKiB,EAAIE,OAAOlB,OAAS,EAAKD,GAAK,EAAIA,IAG5C,IAAK,IAFDoB,EAAQH,EAAIE,OAAOjB,SAASF,EAAEG,WAAY,KAC1C0W,EAAiBkI,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAK6e,IACtD3e,EAAI,EAAKA,EAAIE,EAAME,YAAYrB,QAAY8e,EAAW5C,YAAcb,EAAca,YAAejb,IAEtG,IAAK,IADDK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KACjDkB,EAAIE,EAAWE,MAAMxB,OAAUoB,GAAK,GAAO0d,EAAW5C,YAAcb,EAAca,YAAe9a,IAAK,CAC3G,IAAIK,EAAOH,EAAWE,MAAMJ,EAAI,GAChC,GAAMK,EAAKoe,aAAerZ,iBAAekD,OAAWjI,EAAKoe,aAAerZ,iBAAeiD,QAC/EhI,EAAKyN,aAAe1I,iBAAeiD,QAAYhI,EAAK2B,eAAiBC,cAAYK,WAAa,CAClG,IAAIoc,EAAgBlJ,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,IACjE,GAAIE,EAAe,CACf,IAAItR,EAAUsR,EAActc,cAAc,IAAM/B,EAAKV,IACrD+e,EAActQ,aAAa,oBAAqB6L,EAAca,YAAYhc,YAC1EuB,EAAKc,eAAgB2M,WAAY1I,iBAAekD,QAAS,GACzDxD,KAAK6Z,YAAYvR,EAAS/M,OAOlDqX,EAAOxR,UAAUqY,6BAA+B,SAAUje,EAAUod,EAAYzD,GAE5E,IAAK,IADDra,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KACzCH,EAAKiB,EAAIE,OAAOlB,OAAS,EAAKD,GAAK,EAAIA,IAG5C,IAAK,IAFDoB,EAAQH,EAAIE,OAAOjB,SAASF,EAAEG,WAAY,KAC1C0W,EAAiBkI,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAK6e,IACtD3e,EAAI,EAAKA,EAAIE,EAAME,YAAYrB,QAAY8e,EAAW5C,YAAcb,EAAca,YAAejb,IAEtG,IAAK,IADDK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KACjDkB,EAAIE,EAAWE,MAAMxB,OAAUoB,GAAK,GAAO0d,EAAW5C,YAAcb,EAAca,YAAe9a,IAAK,CAC3G,IAAIK,EAAOH,EAAWE,MAAMJ,EAAI,GAChC,GAAMK,EAAKoe,aAAerZ,iBAAekD,OAAWjI,EAAKoe,aAAerZ,iBAAeiD,QAC/EhI,EAAKyN,aAAe1I,iBAAekD,OAAWjI,EAAK2B,eAAiBC,cAAYK,WAAa,CACjG,IAAIoc,EAAgBlJ,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,IACjE,GAAIE,EAAe,CACf,IAAIE,EAAYF,EAAcrb,aAAa,qBACvCuE,EAAQgX,EAAY/f,SAAS+f,EAAW,IAAM,KAClD,GAAIhX,GAAU8V,EAAW5C,YAAclT,EAAQ,CAC3C8W,EAAcG,gBAAgB,qBAC9B,IAAIzR,EAAUsR,EAActc,cAAc,IAAM/B,EAAKV,IACrDU,EAAKc,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GAC1DvD,KAAK6Z,YAAYvR,EAAS/M,QAQtDqX,EAAOxR,UAAU+X,wBAA0B,SAAUP,EAAYzD,EAAe3Z,GAE5E,IAAK,IADDwe,EAAgBha,KAAKia,qBAAoB,EAAMze,GAC1C3B,EAAI,EAAKA,EAAImgB,EAAclgB,QAAY8e,EAAW5C,YAAcb,EAAca,YAAenc,IAAK,CAIvG,IAAK,IAHDoB,EAAQ+e,EAAcjgB,SAASF,EAAEG,WAAY,KAC7C2V,EAAWiJ,EAAWtb,cAAc,IAAMrC,EAAMJ,IAChD6V,EAAiBf,EAASrS,cAAc,IAAMrC,EAAMJ,GAAK6e,IACpD3e,EAAIE,EAAME,YAAYrB,OAAUiB,GAAK,GAAO6d,EAAW5C,YAAcb,EAAca,YAAejb,IAGvG,IAAK,IAFDK,EAAaH,EAAME,YAAYpB,UAAUgB,EAAI,GAAGf,WAAY,KAC5DkgB,EAAgBvK,EAASrS,cAAc,IAAMlC,EAAWP,IACnDK,EAAIE,EAAWE,MAAMxB,OAAUoB,GAAK,GAAO0d,EAAW5C,YAAcb,EAAca,YAAe9a,IAAK,CAC3G,IAAIK,EAAOH,EAAWE,MAAMJ,EAAI,GAC5B0e,EAAgBM,EAAc5c,cAAc,IAAM/B,EAAKV,GAAK6e,IAChE,IAAMne,EAAK2B,iBAAmBC,cAAYuG,MACrCnI,EAAK2B,kBAAoBC,cAAYK,WAAaL,cAAYgd,aAAgBrK,oBAAkB8J,GAAgB,CAGjH,GAFAA,EAActQ,aAAa,wBAAyB6L,EAAca,YAAYhc,YAC9EgG,KAAKoa,oBAAoB7e,EAAMC,EAAUP,EAAMwC,oBAAqBxC,EAAMJ,GAAII,EAAM4D,OAAQ+a,EAAelJ,GACvGnV,EAAKyN,aAAe1I,iBAAekD,MAAO,CAC1C,IAAI8E,EAAUsR,EAActc,cAAc,IAAM/B,EAAKV,IACrDU,EAAKc,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GAC1DvD,KAAK6Z,YAAYvR,EAAS/M,GAEzBA,EAAKkO,OAASlJ,iBAAe8Z,UAAc9e,EAAKkO,OAASlJ,iBAAe0R,aACzEjS,KAAKsa,iBAAiB/e,EAAMqe,EAAe3e,EAAMwC,qBAAqB,IAKhFxC,EAAMwC,qBAAuBkS,EAASrS,cAAc,IAAMid,KAC5D5K,EAAS7D,UAAUK,IAAI,8BAInCyG,EAAOxR,UAAUkZ,iBAAmB,SAAU/e,EAAM+M,EAASkS,EAAWC,GACpE,IAAIjL,EAAWvT,eAAaqM,EAAQhL,cAAc,IAAM/B,EAAKV,IAAMU,EAAKkO,OAASlJ,iBAAe8Z,SAAY1c,iBAAiBsU,eACzHyI,EAAgBlL,EAASyB,SAIzB0J,GAAUH,GAAaC,KAAYza,KAAK6I,UAC5C6R,EAAcre,eAAgBue,UAAYC,EAAGF,EAAS,OAAS,QAASG,EAAGL,EAAS,MAAQ,YAAc,GACtGA,EACAjL,EAASxD,WAAa,WACd2O,IACAD,EAAc3e,QAAQmY,MAAM8C,YAAY,aAAc,UACtD0D,EAAc3e,QAAQmY,MAAM8C,YAAY,UAAW,SACnD0D,EAAcre,eAAgB0e,SAAU,EAAIL,EAAc3e,QAAQia,cAClE0E,EAAc3e,QAAQmY,MAAM8G,eAAe,WAC3CN,EAAc3e,QAAQmY,MAAM8G,eAAe,iBAKnDN,EAAcre,eAAgB0e,QAAS,IAAK,GAC5CvL,EAASxD,WAAa,OAG9B4G,EAAOxR,UAAUoY,wBAA0B,SAAUZ,EAAYzD,EAAe3Z,EAAUyf,QACtE,IAAZA,IAAsBA,GAAU,GAGpC,IAAK,IAFDjB,EAAgBha,KAAKia,qBAAoB,EAAOze,GAChD0f,GAAO,EACFrhB,EAAI,EAAKA,EAAImgB,EAAclgB,QAAWohB,EAAOrhB,IAAK,CACvD,IAAIoB,EAAQ+e,EAAcjgB,SAASF,EAAEG,WAAY,KAC7C4D,OAAc,EACdud,OAAiB,EACrB,GAAIlgB,EAAMwC,oBAAqB,CAC3B,IAAI2d,EAAiBxC,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAK6C,IAC3D0d,IAEAD,GADAvd,EAAcyd,cAAYD,EAAgBzd,mBACbE,aAIjCD,EAAcoC,KAAKpC,YACnBud,EAAiBnb,KAAKpC,YAAcoC,KAAKpC,YAAYC,OAAS,KAElE,IAAK,IAAI9C,EAAI,EAAKA,EAAIE,EAAME,YAAYrB,QAAWohB,EAAOngB,IAGtD,IAAK,IAFDK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KAEjDkB,EAAI,EAAKA,EAAIE,EAAWE,MAAMxB,QAAWohB,IAASD,GAAYrC,EAAW5C,YAAcb,EAAca,YAAe9a,IAAK,CAC9H,IAAIK,EAAOH,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,KAC/C4f,OAAgB,EAIpB,GAHIuB,IACAvB,EAAgBuB,EAAe7d,cAAc,IAAM/B,EAAKV,GAAK6e,MAE3Dne,EAAK2B,iBAAmBC,cAAYuG,MACrCnI,EAAK2B,kBAAoBC,cAAYK,WAAaL,cAAYgd,aAAgBrK,oBAAkB8J,GAAgB,CACjH,IAAIlL,EAAQ3U,SAAS6f,EAAcrb,aAAa,yBAA0B,IAC1E,IAAK0c,GAAYrC,EAAW5C,YAActH,EAAQ,CAC9CwM,GAAO,EACP,MAEJ,IAAII,EAAa1C,EAAWtb,cAAc,IAAMlC,EAAWP,IACtDU,EAAKkO,OAASlJ,iBAAe8Z,UAAc9e,EAAKkO,OAASlJ,iBAAe0R,aACzEjS,KAAKsa,iBAAiB/e,EAAMqe,EAAe3e,EAAMwC,qBAAqB,GAE1E6d,EAAW1c,OAAOgb,GAClB5Z,KAAKub,oBAAoBhgB,EAAMqe,GAC3Bre,EAAKoe,aAAerZ,iBAAekD,QACnCjI,EAAKc,eAAgB2M,WAAY1I,iBAAekD,QAAS,GACzDxD,KAAK6Z,YAAYD,EAActc,cAAc,IAAM/B,EAAKV,IAAKU,KAK7E,IAAIoU,EAAWiJ,EAAWtb,cAAc,IAAMrC,EAAMJ,IAChDyN,EAAUqH,EAASrS,cAAc,IAAMid,IAI3C,GAHI5K,EAAS7D,UAAUsE,SAAS,6BAA2C,OAAZ9H,GAC3DqH,EAAS7D,UAAUC,OAAO,4BAE1BnO,EACA,GAAI3C,EAAMwC,oBACmC,IAArC0d,EAAeK,mBACfxb,KAAKyb,qBAAqB7d,OAG7B,CACD,IAAI8d,EAAmBP,EAAe7d,cAAc,IAAMrC,EAAMJ,GAAK6e,IACjEgC,GAA2D,IAAvCA,EAAiBF,mBACrCE,EAAiB3P,SAErB,IAAIwM,EAAiB4C,EAAe7d,cAAc,IAAM0C,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKa,GAAK6d,IACtGH,GAAuD,IAArCA,EAAeiD,oBACjCjD,EAAexM,SACf/L,KAAKpC,YAAY7B,QAAQ+P,UAAUK,IAAIwM,MAKvD,GAAI3Y,KAAKpC,YAAa,CAEoB,IADpBoC,KAAKpC,YAAYC,OACnB2d,oBACZxb,KAAKyb,qBAAqBzb,KAAKpC,aAC/BoC,KAAKpC,YAAc,QAI/BgV,EAAOxR,UAAUgZ,oBAAsB,SAAU7e,EAAMC,EAAUgf,EAAWmB,EAASC,EAAatT,EAASoI,GACvG,IAAIlH,EACJ,GAAIgR,EAAW,CACX,IAAI5c,EAAc8S,EAAepT,cAAc,IAAMqe,EAAUje,IAC1DE,EAMD4L,EAAiB6R,cAAYzd,EAAaD,oBAL1C6L,EAAiBxJ,KAAK6b,kBAAkBF,EAAUje,KACnC3B,QAAQ+P,UAAUK,IAAI2P,IACrCpL,EAAe1R,YAAYwK,EAAezN,UAK9CyN,EAAe3L,OAAOe,OAAO0J,OAE5B,CACD,GAAKtI,KAAKpC,YAML,CACDoC,KAAKpC,YAAY7B,QAAQ+P,UAAUC,OAAO4M,IAC1C,IAAI/I,EAAc5P,KAAKpC,YAAYC,OAC/B0a,EAAiB3I,EAAYtS,cAAc,IAAM0C,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKa,GAAK6d,IACvG,GAAIH,EAAgB,CAChB,IAAImD,EAAmB9L,EAAYtS,cAAc,IAAMqe,EAAUjC,IAC5DgC,IACDA,EAAmB1b,KAAK+b,qBAAqBJ,EAASC,GACtDrD,EAAe3Z,OAAO8c,IAE1BA,EAAiB9c,OAAO0J,QAGxBtI,KAAKgc,qBAAqBL,EAASC,EAAatT,EAAS9M,QAlB7DwE,KAAKpC,YAAcoC,KAAK6b,kBAAkB7b,KAAKlD,OAAOf,QAAQlB,GAAKohB,IACnEjc,KAAKlD,OAAOf,QAAQgV,aAAa/Q,KAAKpC,YAAY7B,QAASiE,KAAKkc,gBAChElc,KAAKpC,YAAY7B,QAAQ+P,UAAUK,IAAIgQ,IACvCnc,KAAKgc,qBAAqBL,EAASC,EAAatT,EAAS9M,GAkB7DgO,EAAiBxJ,KAAKpC,YAEV,OAAZ0K,GACAtI,KAAKoc,kBAAkB7gB,EAAM+M,EAASkB,IAG9CoJ,EAAOxR,UAAUgb,kBAAoB,SAAU7gB,EAAM+M,EAASkB,GAC1D,OAAQjO,EAAKkO,MACT,IAAK,SACDzJ,KAAKqc,mBAAmB9S,kBAAkBhO,EAAM+M,EAASkB,GACzD,MACJ,IAAK,WACDxJ,KAAK5C,qBAAqBmM,kBAAkBhO,EAAM+M,EAASkB,GAC3D,MACJ,IAAK,cACDxJ,KAAKsc,wBAAwB/S,kBAAkBhO,EAAM+M,EAASkB,GAC9D,MACJ,IAAK,WACDxJ,KAAKuc,qBAAqBhT,kBAAkBhO,EAAM+M,EAASkB,GAC3D,MACJ,IAAK,cACDxJ,KAAKwc,wBAAwBjT,kBAAkBhO,EAAM+M,EAASkB,GAC9D,MACJ,IAAK,WACDxJ,KAAKyc,qBAAqBlT,kBAAkBhO,EAAM+M,EAASkB,KAIvEoJ,EAAOxR,UAAU4a,qBAAuB,SAAUL,EAASC,EAAatT,EAAS9M,GAC7E,IAAI+c,EAAiBvY,KAAKtB,cAAc,OACpC7D,GAAImF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKa,GAAK6d,GACtD5Z,UAAW4d,KAEM1c,KAAKpC,YAAYC,OACvBe,OAAO2Z,GACtB,IAAImD,EAAmB1b,KAAK+b,qBAAqBJ,EAASC,GAC1DF,EAAiB9c,OAAO0J,GACxBiQ,EAAe3Z,OAAO8c,GAClBlgB,IAAawE,KAAKoV,aAClBmD,EAAezM,UAAUK,IAAIqM,KAGrC5F,EAAOxR,UAAU4X,oBAAsB,SAAUxd,EAAUod,EAAYzD,EAAewH,GAIlF,IAAK,IAHD7D,GAAa,EACbC,GAAU,EACVje,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KACzCe,EAAKD,EAAIE,OAAOlB,OAAS,EAAKgf,GAAe/d,GAAK,EAAKA,IAG5D+d,IADAC,EAAU4D,EAAU3c,KAAK4c,mBAAmBphB,EAAUV,EAAKC,EAAG6d,EAAYzD,GAAiBnV,KAAK6c,mBAAmBrhB,EAAUV,EAAKC,EAAG6d,EAAYzD,KACvHyD,EAAW5C,YAAcb,EAAca,YAErE,OAAO+C,GAEXnG,EAAOxR,UAAU0b,2BAA6B,SAAU3hB,GAEpD,IAAK,IADD4hB,EAAQ,EACHljB,EAAI,EAAGA,EAAIsB,EAAYrB,OAAQD,IAAK,CAEzC,IAAK,IADDyB,EAAQH,EAAYpB,SAASF,EAAEG,WAAY,KAAKsB,MAC3C0hB,EAAM,EAAGA,EAAM1hB,EAAMxB,OAAQkjB,IAClC,GAAI1hB,EAAMvB,SAASijB,EAAIhjB,WAAY,KAAKkD,eAAiBC,cAAYF,QAAS,CAC1E8f,IACA,MAGR,GAAIA,EAAQ,EACR,OAAO,EAGf,OAAiB,IAAVA,GAEXnK,EAAOxR,UAAU6b,uBAAyB,SAAU9hB,EAAa+hB,EAAGC,GAEhE,IAAK,IADD7hB,EAAQH,EAAYpB,SAASmjB,EAAEljB,WAAY,KAAKsB,MAC3C0hB,EAAM,EAAGA,EAAM1hB,EAAMxB,OAAQkjB,IAClC,GAAI1hB,EAAMvB,SAASijB,EAAIhjB,WAAY,KAAKkD,eAAiBC,cAAYF,QACjE,OAAOigB,EAIf,OADAA,EAAIC,EAAcD,EAAI,EAAIA,EAAI,EAC1BC,EACQD,IAAM/hB,EAAYrB,OAAUojB,EAAIld,KAAKid,uBAAuB9hB,EAAa+hB,EAAGC,GAG5ED,EAAI,EAAKA,EAAIld,KAAKid,uBAAuB9hB,EAAa+hB,EAAGC,IAGzEvK,EAAOxR,UAAUgc,iBAAmB,SAAU9hB,EAAO4hB,EAAGC,GAEpD,OADW7hB,EAAMvB,SAASmjB,EAAEljB,WAAY,KAC/BkD,eAAiBC,cAAYF,QAC3BigB,GAEXA,EAAIC,EAAcD,EAAI,EAAIA,EAAI,EAC1BC,EACQD,IAAM5hB,EAAMxB,OAAUojB,EAAIld,KAAKod,iBAAiB9hB,EAAO4hB,EAAGC,GAG1DD,EAAI,EAAKA,EAAIld,KAAKod,iBAAiB9hB,EAAO4hB,EAAGC,KAG7DvK,EAAOxR,UAAUwb,mBAAqB,SAAUphB,EAAUV,EAAKW,EAAYmd,EAAYzD,EAAekI,GAClG,IAAI9U,EAAQvI,UACO,IAAfqd,IAAyBA,GAAa,GAC1C,IAAIpiB,EAAQH,EAAIE,OAAOjB,SAAS0B,EAAWzB,WAAY,KACvD,GAAIiB,EAAMqiB,cAAgBD,EACtB,OAAO,EAEX,IAAIE,EAAsB,SAAUniB,GAChC,OAAoC,IAA5BA,EAAWE,MAAMxB,QAAiB0jB,EAAcpiB,EAAWE,MAAM,KAEzEkiB,EAAgB,SAAUjiB,GAC1B,OAAQA,EAAKoe,aAAerZ,iBAAeiD,QAAYhI,EAAKyN,aAAe1I,iBAAemD,OAE1Fga,EAAkB,SAAU5iB,EAAI6iB,EAAWC,EAAOC,GAClD,IAAIC,EAAYtV,EAAM7J,cAAc,OAChCI,UAAW,mBAAsCgf,GACjDjjB,GAAIA,EAAK,oBAAsB8iB,EAC/BI,OAASC,aAAcL,EAAM3jB,WAAYikB,WAAYL,EAAI5jB,cAM7D,OAJA0jB,EAAU7R,cAAckF,aAAa8M,EAAWH,GAC3CL,GACDQ,EAAUvU,aAAa,mBAAoB6L,EAAca,YAAYhc,YAElE6jB,GAEPK,EAAmB,SAAUP,EAAOC,GAMpC,IAAK,IALDxiB,EAAamN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACrDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAAY,GACzDuiB,EAAYvI,EAAc7X,cAAc,IAAMlC,EAAWE,MAAMvB,SAAS4jB,EAAM3jB,WAAY,KAAKa,GAAK6e,IACpGmE,EAAYR,EAAalI,EAAc7X,cAAc,IAAMlC,EAAWP,GAAK,oBAAsB8iB,GACjGF,EAAgBriB,EAAWP,GAAI6iB,EAAWC,EAAOC,GAC5C/jB,EAAI8jB,EAAO9jB,GAAK+jB,EAAK/jB,IAAK,CAC/B,IAAI0B,EAAOH,EAAWE,MAAMvB,SAASF,EAAEG,WAAY,KACnD,GAAMuB,EAAK2B,eAAiBC,cAAYF,QAAxC,CAGA,IAAIM,EAAM4X,EAAc7X,cAAc,IAAM/B,EAAKV,GAAK6e,IACtDmE,EAAU7e,YAAYzB,GACtBhC,EAAKc,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GAC1DgF,EAAMsR,YAAYtc,EAAID,cAAc,IAAM/B,EAAKV,IAAKU,MAGxD4iB,EAAyB,SAAUR,EAAOC,GAM1C,IAAK,IALD3iB,EAAQsN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KAChDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KACxC0jB,EAAYvI,EAAc7X,cAAc,IAAMrC,EAAME,YAAYpB,SAAS4jB,EAAM3jB,WAAY,KAAKa,IAChGgjB,EAAYR,EAAalI,EAAc7X,cAAc,IAAMrC,EAAMJ,GAAK,oBAAsB8iB,GAC5FF,EAAgBxiB,EAAMJ,GAAI6iB,EAAWC,EAAOC,GACvC/jB,EAAI8jB,EAAO9jB,GAAK+jB,EAAK/jB,IAAK,CAC/B,IAAIuB,EAAaH,EAAME,YAAYpB,SAASF,EAAEG,WAAY,KACtDuD,EAAM4X,EAAc7X,cAAc,IAAMlC,EAAWP,IACvDgjB,EAAU7e,YAAYzB,GACtBnC,EAAWE,MAAM,GAAGe,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GACzEgF,EAAMsR,YAAYtc,EAAID,cAAc,IAAMlC,EAAWE,MAAM,GAAGT,IAAKO,EAAWE,MAAM,MAI5F,GADkBL,EAAMmjB,cACJ/d,kBAAgBge,OAChC,IAAK,IAAInjB,EAAKD,EAAME,YAAYrB,OAAS,EAAIoB,EAAI,EAAGA,IAAK,CAKrD,IAFIG,GADJH,EAAI8E,KAAKid,uBAAuBhiB,EAAME,YAAaD,GAAG,IAC1C,IAEF,GAAMqiB,EAAoBtiB,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,MAGzE,IAFAqB,EAAI2E,KAAKid,uBAAuBhiB,EAAME,YAAaE,GAAG,KAE5C,GAAMkiB,EAAoBtiB,EAAME,YAAYpB,SAASsB,EAAErB,WAAY,MAAO,CAahF,IAZIskB,EAAIjjB,EAAI,IACH,IACLijB,EAAIte,KAAKid,uBAAuBhiB,EAAME,YAAamjB,GAAG,IAGrDA,GAAK,GAAMf,EAAoBtiB,EAAME,YAAYpB,SAASukB,EAAEtkB,WAAY,MACzEmkB,EAAuBG,EAAGpjB,GAG1BijB,EAAuB9iB,EAAGH,GAE9BA,EAAIojB,GACCjB,GAAezE,EAAW5C,YAAcb,EAAca,YACvD,OAAO,OAIX9a,EAAIG,OAMhB,GAAI2E,KAAK8c,2BAA2B7hB,EAAME,aAEjC,CAAA,IADDC,EAAaH,EAAME,YAAY,GACnC,IAASD,EAAKE,EAAWE,MAAMxB,OAAS,EAAIoB,EAAI,EAAGA,IAAK,CAGpD,IAAIG,EAEJ,IAFIA,GADJH,EAAI8E,KAAKod,iBAAiBhiB,EAAWE,MAAOJ,GAAG,IACnC,IAEF,GAAMsiB,EAAcpiB,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,MAGlE,IAFAqB,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOD,GAAG,KAErC,GAAMmiB,EAAcpiB,EAAWE,MAAMvB,SAASsB,EAAErB,WAAY,MAAO,CACzE,IAAIskB,EAYJ,IAZIA,EAAIjjB,EAAI,IAEH,IACLijB,EAAIte,KAAKod,iBAAiBhiB,EAAWE,MAAOgjB,GAAG,IAE9CA,GAAK,GAAMd,EAAcpiB,EAAWE,MAAMvB,SAASukB,EAAEtkB,WAAY,MAClEkkB,EAAiBI,EAAGpjB,GAGpBgjB,EAAiB7iB,EAAGH,GAExBA,EAAIojB,GACCjB,GAAezE,EAAW5C,YAAcb,EAAca,YACvD,OAAO,OAIX9a,EAAIG,GAMxB,OAAO,GAEXuX,EAAOxR,UAAUyb,mBAAqB,SAAUrhB,EAAUV,EAAKW,EAAYmd,EAAYzD,EAAekI,GAClG,IAAI9U,EAAQvI,UACO,IAAfqd,IAAyBA,GAAa,GAC1C,IAAIpiB,EAAQH,EAAIE,OAAOjB,SAAS0B,EAAWzB,WAAY,KACvD,GAAIiB,EAAMqiB,cAAgBD,EACtB,OAAO,EAEX,IAAIe,EAAcnjB,EAAMmjB,YAEpBG,EADMpJ,EAAc7X,cAAc,IAAMrC,EAAMJ,IAC1BqV,iBAAiB,oBACrCsN,EAAgB,SAAUjiB,GAC1B,OAAQA,EAAKoe,aAAerZ,iBAAekD,OAAWjI,EAAKyN,aAAe1I,iBAAeiD,QAEzFib,EAAqB,SAAU9iB,EAAiBiiB,EAAOC,EAAKa,QAC7C,IAAXA,IAAqBA,EAAS,MAClC,IAAIrjB,EAAamN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACrDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAAYpB,SAAS2B,EAAgB1B,WAAY,KAC9F0kB,EAAS,SAAU7kB,GACnB,IAAI0B,EAAOH,EAAWE,MAAMvB,SAASF,EAAEG,WAAY,KACnD,GAAIuB,EAAK2B,eAAiBC,cAAYF,QAAS,CAC3C,IAAI0hB,EAAQxJ,EAAc7X,cAAc,IAAM/B,EAAKV,IACnDU,EAAKc,eAAgB2M,WAAY1I,iBAAekD,QAAS,GACzD+E,EAAMsR,YAAY8E,EAAOpjB,KAGjCmjB,EAAOf,GACHc,GACAC,EAAOD,GAEXC,EAAOd,IAEPgB,EAA2B,SAAU1Q,EAAOyP,EAAOC,EAAKa,QACzC,IAAXA,IAAqBA,EAAS,MAClC,IAAIxjB,EAAQsN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KAChDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KACvCqjB,GACDkB,EAAcxkB,SAASmU,EAAMlU,WAAY,KAAKsP,aAAa,oBAAqB6L,EAAca,YAAYhc,YAE9G,IAAI0kB,EAAS,SAAU7kB,GACnB,IAAIuB,EAAaH,EAAME,YAAYpB,SAASF,EAAEG,WAAY,KAC1D,GAAIoB,EAAWE,MAAM,GAAG4B,eAAiBC,cAAYF,QAAS,CAC1D,IAAI4hB,EAAQ1J,EAAc7X,cAAc,IAAMlC,EAAWE,MAAM,GAAGT,IAClEO,EAAWE,MAAM,GAAGe,eAAgB2M,WAAY1I,iBAAekD,QAAS,GACxE+E,EAAMsR,YAAYgF,EAAOzjB,EAAWE,MAAM,MAGlDojB,EAAOf,GACHc,GACAC,EAAOD,GAEXC,EAAOd,IAEPkB,EAAW,SAAUjkB,GACrB,IAAKwiB,EAAY,CACDlI,EAAc7X,cAAc,IAAMzC,GACxCyO,aAAa,oBAAqB6L,EAAca,YAAYhc,cAG1E,GAAIokB,IAAgB/d,kBAAgBge,OAAQ,CACxC,GAAIE,EAAczkB,OAAS,EACvB,IAAK,IAAIoB,EAAKqjB,EAAczkB,OAAS,EAAIoB,GAAK,EAAGA,IAAK,CAClD,IAAIyiB,EAAQ5jB,SAASwkB,EAAcxkB,SAASmB,EAAElB,WAAY,KAAKuE,aAAa,cAAe,IACvFqf,EAAM7jB,SAASwkB,EAAcxkB,SAASmB,EAAElB,WAAY,KAAKuE,aAAa,YAAa,IAEnFlD,EAAI2E,KAAKid,uBAAuBhiB,EAAME,YAAawiB,EAAQ,GAAG,GAClE,GAAIH,EAAcviB,EAAME,YAAYpB,SAAS4jB,EAAM3jB,WAAY,KAAKsB,MAAM,KACnEkiB,EAAcviB,EAAME,YAAYpB,SAASsB,EAAErB,WAAY,KAAKsB,MAAM,MACjEsiB,IAAQviB,EACRujB,EAAyB1jB,EAAGyiB,EAAOC,GAE9BJ,EAAcviB,EAAME,YAAYpB,SAAS6jB,EAAI5jB,WAAY,KAAKsB,MAAM,KACzEsjB,EAAyB1jB,EAAGyiB,EAAOC,EAAKviB,IAEvCgiB,GAAezE,EAAW5C,YAAcb,EAAca,aACvD,OAAO,EAKvB,IAAS9a,EAAKD,EAAME,YAAYrB,OAAS,EAAIoB,GAAK,EAAGA,IAAK,CAGtD,IAAK,IAFDE,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KACtD+kB,KACKllB,EAAI,EAAGA,EAAIuB,EAAWE,MAAMxB,OAAQD,IACrCuB,EAAWE,MAAMvB,SAASF,EAAEG,WAAY,KAAKkD,eAAiBC,cAAYF,SAC1E8hB,EAAanN,KAAK/X,GAI1B,GAAKklB,EAAajlB,OAAS,GACnB0jB,EAAcpiB,EAAWE,MAAMyjB,EAAa,MAAQvB,EAAcpiB,EAAWE,MAAMyjB,EAAa,OACpE,IAAxBA,EAAajlB,QACbglB,EAAS1jB,EAAWP,IACpB2jB,EAAmBtjB,EAAG6jB,EAAa,GAAIA,EAAa,KAE/CvB,EAAcpiB,EAAWE,MAAMyjB,EAAa,OACjDD,EAAS1jB,EAAWP,IACpB2jB,EAAmBtjB,EAAG6jB,EAAa,GAAIA,EAAa,GAAIA,EAAa,MAEpE1B,GAAezE,EAAW5C,YAAcb,EAAca,aACvD,OAAO,QAOvB,GAAIhW,KAAK8c,2BAA2B7hB,EAAME,cACtC,GAAIojB,EAAczkB,OAAS,EACvB,IAASoB,EAAKqjB,EAAczkB,OAAS,EAAIoB,GAAK,EAAGA,IAAK,CAClD,IAAI8jB,EAAeT,EAAcxkB,SAASmB,EAAElB,WAAY,KACpD2jB,EAAQ5jB,SAASilB,EAAazgB,aAAa,cAAe,IAC1Dqf,EAAM7jB,SAASilB,EAAazgB,aAAa,YAAa,IAEtDnD,EAAaH,EAAME,YAAY,GAC/BE,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOqiB,EAAQ,GAAG,GAC3D,GAAIH,EAAcviB,EAAME,YAAY,GAAGG,MAAMvB,SAAS4jB,EAAM3jB,WAAY,OACjEwjB,EAAcviB,EAAME,YAAY,GAAGG,MAAMvB,SAASsB,EAAErB,WAAY,QAC/D4jB,IAAQviB,GACRyjB,EAASE,EAAankB,IACtB2jB,EAAmB,EAAGb,EAAOC,IAExBJ,EAAcviB,EAAME,YAAY,GAAGG,MAAMvB,SAAS6jB,EAAI5jB,WAAY,QACvE8kB,EAASE,EAAankB,IACtB2jB,EAAmB,EAAGb,EAAOC,EAAKviB,KAEjCgiB,GAAezE,EAAW5C,YAAcb,EAAca,aACvD,OAAO,QAOvB,IAAS9a,EAAKD,EAAME,YAAYrB,OAAS,EAAIoB,GAAK,EAAGA,IAEjD,IAASG,GADLD,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,MACjCsB,MAAMxB,OAAS,EAAIuB,GAAK,EAAGA,IAEhD,MADAA,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOD,GAAG,IACvC,GAAR,CAGA,IAAIE,EAAOH,EAAWE,MAAMvB,SAASsB,EAAErB,WAAY,KACnD,GAAIwjB,EAAcjiB,KACdujB,EAASvjB,EAAKV,IACd2jB,EAAmBtjB,EAAGG,EAAGA,IACpBgiB,GAAezE,EAAW5C,YAAcb,EAAca,aACvD,OAAO,EAO/B,OAAO,GAEXpD,EAAOxR,UAAUmY,oBAAsB,SAAU/d,EAAUod,EAAYzD,EAAe8J,GAGlF,IAAK,IAFDlG,GAAU,EACVje,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KACzCe,EAAI,GAAKge,GAAYhe,EAAID,EAAIE,OAAOlB,OAAUiB,IACnDge,EAAUkG,EAAUjf,KAAKkf,mBAAmB1jB,EAAUV,EAAKC,EAAG6d,EAAYzD,GAAe,GAAO,GAC5FnV,KAAKmf,mBAAmB3jB,EAAUV,EAAKC,EAAG6d,EAAYzD,GAAe,GAAO,GAEpF,OAAO4D,GAGXnG,EAAOxR,UAAU8d,mBAAqB,SAAU1jB,EAAUV,EAAKW,EAAYmd,EAAYzD,EAAekI,EAAY+B,GAC9G,IAAI7W,EAAQvI,KACR/E,EAAQH,EAAIE,OAAOjB,SAAS0B,EAAWzB,WAAY,KACnDokB,EAAcnjB,EAAMmjB,YAEpBG,EADMpJ,EAAc7X,cAAc,IAAMrC,EAAMJ,IAC1BqV,iBAAiB,oBACrCmP,EAAgB,SAAU9jB,GAC1B,OAAQA,EAAKoe,aAAerZ,iBAAeiD,QAAYhI,EAAKyN,aAAe1I,iBAAekD,OAE1F8b,EAAqB,SAAU5jB,EAAiBwS,EAAOqR,GACvD,IAEIhkB,EAFagN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACrDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAAYpB,SAAS2B,EAAgB1B,WAAY,KAC5EsB,MAAMvB,SAASmU,EAAMlU,WAAY,KACvD,GAAIuB,EAAK2B,eAAiBC,cAAYF,QAAS,CAC3C,IAAIuiB,EAAQD,EAAU1kB,KAAOU,EAAKV,GAAK0kB,EAAYA,EAAUjiB,cAAc,IAAM/B,EAAKV,IACtFU,EAAKc,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GAC1DgF,EAAMsR,YAAY2F,EAAOjkB,KAG7BkkB,EAA4B,SAAU5lB,GACtC,IAAIsB,EAAcoN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACtDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAEjD,GADWA,EAAYpB,SAASF,EAAEG,WAAY,KAAKsB,MAAM,GAChD4B,eAAiBC,cAAYF,QAAS,CAC3C,IAAIyiB,EAAQvK,EAAc7X,cAAc,IAAMnC,EAAYpB,SAASF,EAAEG,WAAY,KAAKsB,MAAM,GAAGT,IAC/FM,EAAYpB,SAASF,EAAEG,WAAY,KAAKsB,MAAM,GAAGe,eAAgB2M,WAAY1I,iBAAeiD,SAAU,GACtGgF,EAAMsR,YAAY6F,EAAOvkB,EAAYpB,SAASF,EAAEG,WAAY,KAAKsB,MAAM,MAG/E,GAAI8iB,IAAgB/d,kBAAgBsf,KAEhC,IAAK3f,KAAK8c,2BAA2B7hB,EAAME,aACvC,IAAK,IAAID,EAAI,EAAGA,EAAID,EAAME,YAAYrB,OAAQoB,IAE1C,IAAK,IADDE,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KACjDqB,EAAI,EAAGA,EAAID,EAAWE,MAAMxB,OAAQuB,IAEzC,IADAA,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOD,GAAG,MACrCD,EAAWE,MAAMxB,OAA3B,CAGA,IAAIyB,EAAOH,EAAWE,MAAMvB,SAASsB,EAAErB,WAAY,KACnD,GAAIqlB,EAAc9jB,GAAO,CAIrB,IADIuH,GADAgX,GADAxR,EAAU6M,EAAc7X,cAAc,IAAM/B,EAAKV,KAC7B0D,aAAa,sBACbxE,SAAS+f,EAAW,IAAM,QACpCuD,GAAezE,EAAW5C,YAAclT,GAClDwc,EAAmBpkB,EAAGG,EAAGiN,GACpB+U,IAAc+B,GACf9W,EAAQyR,gBAAgB,0BAG3B,GAAIjX,EACL,OAAO,SAQ3B,IAAS5H,EAAI,EAAGA,EAAID,EAAME,YAAYrB,OAAQoB,IAE1C,GAAKD,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KAAKsB,MAAMxB,OAAS,EAAI,CAC9DsB,EAAaH,EAAME,YAAYpB,SAASmB,EAAElB,WAAY,KAK1D,IAAK,IAJDsO,EAEAxF,GADAgX,GADAxR,EAAU6M,EAAc7X,cAAc,IAAMlC,EAAWP,KACnC0D,aAAa,sBACbxE,SAAS+f,EAAW,IAAM,KAC9CiF,KACKllB,EAAI,EAAGA,EAAIuB,EAAWE,MAAMxB,OAAQD,IACrCuB,EAAWE,MAAMvB,SAASF,EAAEG,WAAY,KAAKkD,eAAiBC,cAAYF,SAC1E8hB,EAAanN,KAAK/X,GAG1B,GAAKklB,EAAajlB,OAAS,GAAMgJ,IAAUua,GAAezE,EAAW5C,YAAclT,GAC/Ewc,EAAmBpkB,EAAG6jB,EAAa,GAAIzW,GACvCgX,EAAmBpkB,EAAG6jB,EAAa,GAAIzW,GACX,IAAxByW,EAAajlB,QACbwlB,EAAmBpkB,EAAG6jB,EAAa,GAAIzW,GAEtC+U,IAAc+B,GACf9W,EAAQyR,gBAAgB,0BAG3B,GAAIjX,EACL,OAAO,EAKvB,GAAIyb,EAAczkB,OAAS,EACvB,IAASoB,EAAI,EAAGA,EAAIqjB,EAAczkB,OAAQoB,IAAK,CAC3C,IACI4e,EADAkF,EAAeT,EAAcxkB,SAASmB,EAAElB,WAAY,KAGxD,IADI8I,GADAgX,EAAYkF,EAAazgB,aAAa,sBAClBxE,SAAS+f,EAAW,IAAM,QACpCuD,GAAezE,EAAW5C,YAAclT,GAAS,CAC3D,IAAI6a,EAAQ5jB,SAASilB,EAAazgB,aAAa,cAAe,IAC1Dqf,EAAM7jB,SAASilB,EAAazgB,aAAa,YAAa,IAC1D,GAAI6f,IAAgB/d,kBAAgBsf,IAAK,CACjCvkB,EAAaH,EAAME,YAAY,GAC/BE,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOqiB,EAAQ,GAAG,GAC3D2B,EAAmB,EAAG3B,EAAOqB,GAC7BM,EAAmB,EAAGjkB,EAAG2jB,GAErB3jB,IAAMuiB,GACN0B,EAAmB,EAAG1B,EAAKoB,OAG9B,CACD,IAAIV,EAAIte,KAAKid,uBAAuBhiB,EAAME,YAAawiB,EAAQ,GAAG,GAClE8B,EAA0B9B,GAC1B8B,EAA0BnB,GACtBA,IAAMV,GACN6B,EAA0B7B,GAG7BP,IAAc+B,GACfJ,EAAajF,gBAAgB,0BAGhC,GAAIjX,EACL,OAAO,EAInB,OAAO,GAEX8P,EAAOxR,UAAU+d,mBAAqB,SAAU3jB,EAAUV,EAAKW,EAAYmd,EAAYzD,EAAekI,EAAY+B,GAC9G,IAAI7W,EAAQvI,KACR/E,EAAQH,EAAIE,OAAOjB,SAAS0B,EAAWzB,WAAY,KACnDokB,EAAcnjB,EAAMmjB,YAEpBG,EADMpJ,EAAc7X,cAAc,IAAMrC,EAAMJ,IAC1BqV,iBAAiB,oBACzC,GAA6B,IAAzBqO,EAAczkB,OACd,OAAO,EA8CX,IAAK,IA5CD8lB,EAAqB,SAAUjC,EAAOC,EAAK2B,EAAWd,GACtD,IAAInjB,EAAQiN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACjDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAAY,GAAGG,MAC3DojB,EAAS,SAAU7kB,GACnB,IAAI0B,EAAOD,EAAMvB,SAASF,EAAEG,WAAY,KACxC,GAAIuB,EAAK2B,eAAiBC,cAAYF,QAAS,CAC3C,IAAI4iB,EAAYN,EAAUjiB,cAAc,IAAM/B,EAAKV,GAAK6e,IACpDoG,EAAQD,EAAUviB,cAAc,IAAM/B,EAAKV,IAC/CU,EAAKc,eAAgB2M,WAAY1I,iBAAemD,QAAS,GACzD8E,EAAMsR,YAAYiG,EAAOvkB,GACzBgkB,EAAUQ,sBAAsB,WAAYF,KAGpDnB,EAAOf,GACHc,GACAC,EAAOD,GAEXC,EAAOd,GACFP,IAAc+B,GACfrT,SAAOwT,IAGXS,EAA2B,SAAUrC,EAAOC,EAAK2B,EAAWd,GAC5D,IAAItjB,EAAcoN,EAAM3N,KAAKb,SAASyB,EAASxB,WAAY,KACvDgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKmB,YAC5CujB,EAAS,SAAU7kB,GACnB,IAAIuB,EAAaD,EAAYpB,SAASF,EAAEG,WAAY,KACpD,GAAIoB,EAAWE,MAAM,GAAG4B,eAAiBC,cAAYF,QAAS,CAC1D,IAAIid,EAAgBqF,EAAUjiB,cAAc,IAAMlC,EAAWP,IACzDolB,EAAQ/F,EAAc5c,cAAc,IAAMlC,EAAWE,MAAM,GAAGT,IAClEO,EAAWE,MAAM,GAAGe,eAAgB2M,WAAY1I,iBAAemD,QAAS,GACxE8E,EAAMsR,YAAYoG,EAAO7kB,EAAWE,MAAM,IAC1CikB,EAAUQ,sBAAsB,WAAY7F,KAGpDwE,EAAOf,GACHc,GACAC,EAAOD,GAEXC,EAAOd,GACFP,IAAc+B,GACfrT,SAAOwT,IAGNrkB,EAAI,EAAGA,EAAIqjB,EAAczkB,OAAQoB,IAAK,CAC3C,IAAI8jB,EAAeT,EAAcxkB,SAASmB,EAAElB,WAAY,KACpD8f,EAAYkF,EAAazgB,aAAa,oBACtCuE,EAAQgX,EAAY/f,SAAS+f,EAAW,IAAM,KAClD,GAAIhX,IAAUua,GAAezE,EAAW5C,YAAclT,GAAS,CAC3D,IAAI6a,EAAQ5jB,SAASilB,EAAazgB,aAAa,cAAe,IAC1Dqf,EAAM7jB,SAASilB,EAAazgB,aAAa,YAAa,IAC1D,GAAI6f,IAAgB/d,kBAAgBsf,IAAK,CACrC,IAAIvkB,EAAaH,EAAME,YAAY,GAC/BE,EAAI2E,KAAKod,iBAAiBhiB,EAAWE,MAAOqiB,EAAQ,GAAG,GACvDtiB,IAAMuiB,EACNgC,EAAmBjC,EAAOC,EAAKoB,GAG/BY,EAAmBjC,EAAOC,EAAKoB,EAAc3jB,OAGhD,CACD,IAAIijB,EAAIte,KAAKid,uBAAuBhiB,EAAME,YAAawiB,EAAQ,GAAG,GAC9DW,IAAMV,EACNoC,EAAyBrC,EAAOC,EAAKoB,GAGrCgB,EAAyBrC,EAAOC,EAAKoB,EAAcV,GAGtDjB,IAAc+B,GACfJ,EAAajF,gBAAgB,yBAGhC,GAAIjX,EACL,OAAO,EAGf,OAAO,GAEX8P,EAAOxR,UAAUyY,YAAc,SAAUvR,EAAS/M,GAC9C,IAAIqe,EAAgBtR,EAAQuE,QAAQ,IAAM0N,IACtChf,EAAKkO,OAASlJ,iBAAeoI,OAC7B3I,KAAKqc,mBAAmBlS,iBAAiB7B,EAAS/M,GAE7CA,EAAKkO,OAASlJ,iBAAe8Z,SAClCra,KAAK5C,qBAAqBuU,mBAAmBrJ,EAAS/M,GAEjDA,EAAKkO,OAASlJ,iBAAe0R,YAClCjS,KAAKsc,wBAAwB3J,sBAAsBrK,EAAS/M,GAEvDA,EAAKkO,OAASlJ,iBAAe2f,WAClCnU,SAAOzD,GACPtI,KAAKmgB,sBAAsB5kB,EAAMqe,IAErCA,EAAc9N,UAAUC,OAAOqU,GAAiCC,GAA6BC,GAA8BC,IACvHhlB,EAAKyN,aAAe1I,iBAAemD,MACnCmW,EAAc9N,UAAUK,IAAIkU,GAA6BD,IAGzDxG,EAAc9N,UAAUK,IAAK5Q,EAAKyN,aAAe1I,iBAAeiD,OAC5D+c,GAA+BC,KAG3C3N,EAAOxR,UAAU6X,uBAAyB,SAAUzd,EAAUod,EAAYzD,GACtE,IAAIqL,EAAgBxgB,KAAKia,qBAAoB,EAAMze,GACnD,GAA6B,IAAzBglB,EAAc1mB,OAkClB,IAAK,IA/BD2mB,EAAU,SAAU5mB,GACpB,IAAIoB,EAAQulB,EAAczmB,SAASF,EAAEG,WAAY,KAC7C2V,EAAW+Q,EAAO5jB,OAAOf,QAAQuB,cAAc,IAAMrC,EAAMJ,IAC/D8U,EAASrG,aAAa,sBAAuB6L,EAAca,YAAYhc,YACvE,IAAI0W,EAAiBf,EAASrS,cAAc,IAAMrC,EAAMJ,GAAK6e,IACzDiH,EAAgBD,EAAOhiB,cAAc,OACrCI,UAAW8hB,GPpyCR,IOoyC4DP,GAC/DxlB,GAAII,EAAMJ,GAAK6d,GAAwBgB,KAE3C/J,EAASoB,aAAa4P,EAAejQ,GACrC,IAAIjV,EAAa/B,EAASgnB,EAAO9lB,KAAKb,SAASyB,EAASxB,WAAY,KAAKgB,OAAQ,SAAUP,GAAK,OAAOA,EAAEI,KAAOI,EAAMJ,KAClHC,EAAM4lB,EAAO9lB,KAAKb,SAASyB,EAASxB,WAAY,KAEpD0mB,EAAOxB,mBAAmB1jB,EAAUV,EAAKW,EAAYmd,EAAYzD,GAAe,GAAM,GACtFuL,EAAOvB,mBAAmB3jB,EAAUV,EAAKW,EAAYmd,EAAYzD,GAAe,GAAM,GACtF,IAAI3F,EAAWkR,EAAOtjB,qBAAqBqS,uBAAuBxU,EAAMJ,GAAII,EAAM4D,OAAQ5D,EAAM4lB,aAAcnQ,EAAgBiQ,EAAeD,EAAO7X,WACpJ6X,EAAO9lB,KAAKb,SAASyB,EAASxB,WAAY,KACtCgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKqC,eAAgBihB,aAAa,IAAQ,GACrF,IAAK,IAAIviB,EAAI,EAAGA,EAAIE,EAAME,YAAYrB,OAAQiB,IAG1C,IAAK,IAFDK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KACtDkgB,EAAgBxJ,EAAepT,cAAc,IAAMlC,EAAWP,IACzDK,EAAI,EAAGA,EAAIE,EAAWE,MAAMxB,OAAQoB,IAAK,CAC9C,IAAIK,EAAOH,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,KAC/CsO,EAAU4R,EAAc5c,cAAc,IAAM/B,EAAKV,GAAK6e,IAC1C,OAAZpR,GACAoY,EAAOtE,kBAAkB7gB,EAAM+M,EAASkH,KAKpDkR,EAAS1gB,KACJnG,EAAI,EAAKA,EAAI2mB,EAAc1mB,QAAY8e,EAAW5C,YAAcb,EAAca,YAAenc,IAClG4mB,EAAQ5mB,IAIhB+Y,EAAOxR,UAAUkY,uBAAyB,SAAUV,EAAYzD,EAAe8F,EAASzf,QACpE,IAAZyf,IAAsBA,GAAU,GACpC,IAAI6F,EAAc9gB,KAAKia,qBAAoB,EAAOze,GAClD,GAA2B,IAAvBslB,EAAYhnB,OACZ,OAAO,EAiCX,IAAK,IA/BDinB,EAAU,SAAUlnB,GACpB,IAAIoB,EAAQ6lB,EAAY/mB,SAASF,EAAEG,WAAY,KAC3C2V,EAAWqR,EAAOlkB,OAAOf,QAAQuB,cAAc,IAAMrC,EAAMJ,IAC/D,IAAK8U,EACD,MAAO,QAEX,IAAIjB,EAAQ3U,SAAS4V,EAASpR,aAAa,uBAAwB,IACnE,IAAK0c,GAAYrC,EAAW5C,YAActH,EACtC,OAAS5L,OAAO,GAEpBke,EAAOC,eAAehmB,EAAMJ,IAC5B,IAAIY,EAAa/B,EAASsnB,EAAOpmB,KAAKb,SAASyB,EAASxB,WAAY,KAAKgB,OAAQ,SAAUP,GAAK,OAAOA,EAAEI,KAAOI,EAAMJ,KACtHmmB,EAAOpmB,KAAKb,SAASyB,EAASxB,WAAY,KACtCgB,OAAOjB,SAAS0B,EAAWzB,WAAY,KAAKqC,eAAgBihB,aAAa,IAAS,GACtF,IAAIxiB,EAAMkmB,EAAOpmB,KAAKb,SAASyB,EAASxB,WAAY,KAEpDgnB,EAAOpE,mBAAmBphB,EAAUV,EAAKW,EAAYmd,EAAYzD,GAAe,GAChF6L,EAAOnE,mBAAmBrhB,EAAUV,EAAKW,EAAYmd,EAAYzD,GAAe,GAChF,IAAK,IAAIpa,EAAI,EAAGA,EAAIE,EAAME,YAAYrB,OAAQiB,IAG1C,IAAK,IAFDK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KACtDkgB,EAAgBvK,EAASrS,cAAc,IAAMlC,EAAWP,IACnDK,EAAI,EAAGA,EAAIE,EAAWE,MAAMxB,OAAQoB,IAAK,CAC9C,IAAIK,EAAOH,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,KAC/CsO,EAAU4R,EAAc5c,cAAc,IAAM/B,EAAKV,GAAK6e,IAC1C,OAAZpR,GACA0Y,EAAOzF,oBAAoBhgB,EAAM+M,KAK7C0Y,EAAShhB,KACJnG,EAAI,EAAGA,EAAIinB,EAAYhnB,OAAQD,IAAK,CACzC,IAAIqnB,EAAUH,EAAQlnB,GACtB,GAAuB,iBAAZqnB,EACP,OAAOA,EAAQpe,MACnB,GAAgB,UAAZoe,EACA,MAER,OAAO,GAEXtO,EAAOxR,UAAU6f,eAAiB,SAAUtF,GACxC,IAAIpM,EAAkBvP,KAAKlD,OAAOf,QAAQuB,cAAc,IAAMqe,EAAUjD,GAAwByI,IAChG,GAAI5R,EAAiB,CACjB,IAAIoR,EAAgBpR,EAAgB1D,cACpC7L,KAAK5C,qBAAqB0T,uBAAuBvB,GACjDxD,SAAO4U,KAGf/N,EAAOxR,UAAU6Y,oBAAsB,SAAUmH,EAAY5lB,GACzD,IAAI+M,EAAQvI,KACRhF,EAASgF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKgB,OAW1D,OAVAA,EAASA,EAAOyD,OAAO,SAAUhE,GAI7B,MAA+B,YAAvB8N,EAAMxL,eAA+BskB,cAAY5mB,EAAE6mB,gBAAkB7mB,EAAE6mB,iBAAoBF,GAC/FC,cAAY5mB,EAAE6iB,eAAmB+D,cAAY5mB,EAAE6iB,cAAiB8D,IAAe3mB,EAAE6iB,gBAGlFiE,KAAK,SAAUC,EAAG7gB,GAAK,OAAO6gB,EAAEC,SAAW9gB,EAAE8gB,WAE7CL,EAAapmB,EAAO0mB,UAAY1mB,GAE3C4X,EAAOxR,UAAUiY,cAAgB,WACzBrZ,KAAK4V,eACL5V,KAAK4V,aAAa1Z,UAClB8D,KAAK4V,aAAe,OAG5BhD,EAAOxR,UAAUugB,sBAAwB,SAAUzT,GAC/C,IAAIiH,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKa,GAAKwa,IAC3G,GAAKF,EAAL,CAGA,IAAIyD,EAAazD,EAActI,QAAQ,IAAMgM,IACnB,eAAtB7Y,KAAKjD,aACLiD,KAAKwZ,wBAAwBrE,EAAeyD,EAAY1K,GAAO,GAG/DlO,KAAKsZ,uBAAuBnE,EAAeyD,GAAY,EAAM1K,KAGrE0E,EAAOxR,UAAU2V,mBAAqB,SAAUtc,GAC5C,IAAI8N,EAAQvI,KACZA,KAAK4U,oBAAsB,EAC3B,IAAIgN,EAAYnnB,EAAEonB,cAActjB,aAAa,WACzCujB,EAAgBrnB,EAAEsnB,aAAaxjB,aAAa,WAC5CyjB,EAAYtoB,EAASsG,KAAKpF,cAAiBE,GAAO,OAAQA,EAAID,KAAO+mB,IACrEzJ,EAAgBze,EAASsG,KAAKpF,cAAiBE,GAAO,OAAQA,EAAID,KAAOinB,IAC7EE,GAA2B,IAAfA,EAAmBhiB,KAAKoV,YAAc4M,EAClD,IAAI9J,GACArI,OAAQpV,EAAEoV,OAAQoS,aAAcxnB,EAAEwnB,aAAc9J,cAAeA,EAAeF,cAAe+J,GAEjGhiB,KAAKyX,QAAQ,eAAgBS,EAAW,SAAU9Z,GAC9C,IAAIA,EAAKyR,OAAT,CAGAtH,EAAM8Q,gBACD9Q,EAAM6K,cAAmC,IAAnB+E,GACvB5P,EAAMoZ,sBAAsBxJ,GAEhC,IAAI+J,EAAqB3Z,EAAMzL,OAAOxB,MAAMvB,SAASioB,EAAUhoB,WAAY,KAAKG,QAChF,IAAM+nB,EAAmB5kB,cAAc,IAAM6kB,KAA8F,IAAjE5Z,EAAM3N,KAAKb,SAASioB,EAAUhoB,WAAY,KAAKgB,OAAOlB,OAAe,CAC3I,IAAIsoB,EAAW7Z,EAAM8Z,aAAa9Z,EAAM3N,KAAKb,SAASioB,EAAUhoB,WAAY,KAAKgB,OAAQgnB,GACzFpjB,SAAOwjB,EAAUF,QAI7BtP,EAAOxR,UAAUmV,eAAiB,SAAU3b,GAGxC,IAAK,IAFD2N,EAAQvI,KACRsW,KACKzc,EAAI,EAAGA,EAAIe,EAAKd,OAAQD,IAAK,CAClC,IAAIyoB,EAAY1nB,EAAKb,SAASF,EAAEG,WAAY,KACxC6E,EAASmB,KAAKtB,cAAc,QAC5BnE,UAAW+nB,EAAUzjB,OACrBhE,GAAIynB,EAAUznB,GAAK0nB,KAEvB1jB,EAAOuK,QAAU,WAAcb,EAAMgP,UAAS,IAC9C1Y,EAAO2jB,WAAa,WAAcja,EAAMgP,UAAS,IACjD,IAAIzc,GAAQ+D,QAAUgE,KAAMhE,GAAUhE,GAAIynB,EAAUznB,GAAIqD,SAAUokB,EAAUpkB,UACxE/D,EAAU6F,KAAKtB,cAAc,OAC7BI,UAAWhE,EAAIoD,SACfrD,GAAIynB,EAAUznB,GAAKwa,KAEvBlb,EAAQ2R,UAAUK,IAAIsW,IACtB3nB,EAAIX,QAAUA,EACdmc,EAAS1E,KAAK9W,GAElB,OAAOwb,GAEX1D,EAAOxR,UAAU2W,iBAAmB,SAAU7J,GAC1C,IAAIkU,EAAWpiB,KAAKqiB,aAAariB,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKgB,OAAQkT,GAC/E/T,EAAU6F,KAAKlD,OAAOxB,MAAMvB,SAASmU,EAAMlU,WAAY,KAAKG,QAChEyE,SAAOwjB,EAAUjoB,GACS,eAAtB6F,KAAKjD,cACLiD,KAAKjE,QAAQ+P,UAAUK,IAAIuW,IAE/B,IAAIvN,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKoF,KAAKoV,aAAava,GAAKwa,IAC7FrV,KAAK2V,cAAc3V,KAAKoV,YAAaD,IAEzCvC,EAAOxR,UAAUya,kBAAoB,SAAU8G,GAC3C,IAAIpa,EAAQvI,KACRwJ,EAAiBxJ,KAAKtB,cAAc,UACpC7D,GAAI8nB,IAEJrK,EAAiBtY,KAAKtB,cAAc,OACpCI,UAAW8jB,GACX7E,OAAS8E,SAAY,OAErBjlB,EAAc,IAAID,kBAClBK,QAAS8kB,GACT5kB,SAAU6kB,gBAAkDC,GAC5DnlB,OAAQya,EACR1P,OAAQ5I,KAAK4I,OACbC,UAAW7I,KAAK6I,UAChBC,kBAAmB9I,KAAK8I,kBACxB8C,YAAa,SAAUxN,IACTA,EAAKuO,MAAQE,UAAQzO,EAAKuO,MAAM9O,OAAQ,IAAMolB,IAAkC,QAEtF7kB,EAAKyR,QAAS,KAGvBrG,GACHxJ,KAAKjE,QAAQ+P,UAAUK,IAAI+W,IAC3B3jB,EAAc+Y,EAAgBtY,MAC9B,IAAImjB,EAGJ,OAFA3Z,EAAeuG,UAAYvG,EAAeJ,QAAU,WAAcb,EAAM5M,WAAa,EAAGwnB,GAAY3Z,EAAesC,UAAUsE,SAAS,4BACtIkI,EAAevI,UAAY,SAAUtV,GAAK,OAAQ8N,EAAM6a,iBAAiB3oB,EAAG6d,EAAgB6K,GAAY5a,GACjG3K,GAEXgV,EAAOxR,UAAUgiB,iBAAmB,SAAU3oB,EAAGoD,EAAQslB,GACrD,IAAI7nB,EACJ,GAAI6nB,EACA7nB,EAAQuC,EAAOwlB,uBAAuB,qBAErC,CAED/nB,EADkBuC,EAAOP,cAAc,oCACnB+lB,uBAAuB,iBAE/C,IACIxS,EADAZ,EAAc3U,GAAQ0E,KAAKrE,WAAaqE,KAAKrE,UAAY,EAAK,EAAIqE,KAAKrE,WAAW2B,cAAc,cAAcwO,UAAUsE,SAAS,cAAgB9U,GAAQ0E,KAAKrE,WAAaqE,KAAKrE,UAAY,EAAK,EAAIqE,KAAKrE,WAAW2B,cAAc,eAAiB,MAEpO,OAAhB2S,GAAmC,QAAVxV,EAAE+G,KAAkBxB,KAAKrE,UAAY,KAChD,cAAVlB,EAAE+G,MAAyB/G,EAAE4V,UAAsB,QAAV5V,EAAE+G,KACrCxB,KAAKrE,WAAgC,IAAnBqE,KAAKrE,WAAoBqE,KAAKrE,UAAY,GAAKqE,KAAKrE,YAAcL,EAAMxB,OAAS,GACrGkG,KAAKrE,UAAY,EACjBkV,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAC3C7M,KAAKsjB,iBAAiBzS,EAAYvV,GAAO,GACrC2U,GAAyB,QAAVxV,EAAE+G,MACjB/G,EAAEkW,iBACFrV,EAAM0E,KAAKrE,WAAW2B,cAAc,cAAcsT,UAGjD5Q,KAAKrE,UAAYL,EAAMxB,OAAS,GAAKkG,KAAKrE,WAAa,IAC5DqE,KAAKrE,YACLkV,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAC3C7M,KAAKsjB,iBAAiBzS,EAAYvV,GAAO,KAG9B,YAAVb,EAAE+G,KAAsB/G,EAAE4V,UAAsB,QAAV5V,EAAE+G,OACzB,OAAhByO,GAAmC,QAAVxV,EAAE+G,MACtBxB,KAAKrE,YAAiC,IAApBqE,KAAKrE,UASnBqE,KAAKrE,WAAaL,EAAMxB,OAAS,GAAKkG,KAAKrE,UAAY,IAC5DqE,KAAKrE,YACLkV,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAC3C7M,KAAKsjB,iBAAiBzS,EAAYvV,GAAO,KAXzC0E,KAAKrE,UAAYL,EAAMxB,OAAS,EAChC+W,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAC3C7M,KAAKsjB,iBAAiBzS,EAAYvV,GAAO,GACrC2U,GAAgBxV,EAAE4V,UAAsB,QAAV5V,EAAE+G,MAChC/G,EAAEkW,iBACFrV,EAAM0E,KAAKrE,WAAW2B,cAAc,cAAcsT,YAUlE/S,EAAOyL,aAAa,QAAStJ,KAAKrE,UAAU3B,aAEhD,IAAIupB,EAAmBxpB,SAAS8D,EAAOU,aAAa,SAAU,IAC1DilB,EAAWloB,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAOsB,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,cAAciB,aAAa,gBAAkB,KAC9K,IAAc,cAAV9D,EAAE+G,KAAiC,YAAV/G,EAAE+G,KAA+B,MAAV/G,EAAE+G,KAAyB,QAAV/G,EAAE+G,OAClD,gBAAbgiB,GACc,QAAV/oB,EAAE+G,KACF/G,EAAEkW,iBAENrV,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,wBAAwBsT,UAGzE,QAAVnW,EAAE+G,KACF/G,EAAEkW,iBAENrV,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,cAAcsT,SAEnE,MAAVnW,EAAE+G,KAA6B,aAAbgiB,GAA0B,CAC5C,IAAIC,EAAcnoB,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,cAC7EomB,EAAWznB,eAAawnB,EAAajZ,YACzCxK,KAAKrE,WAAa,EAClB+nB,EAAS3Z,QAGE,gBAAbyZ,GAA0C,eAAV/oB,EAAE+G,KAAkC,cAAV/G,EAAE+G,MAChD,eAAV/G,EAAE+G,MACFxB,KAAK6I,UAAYvN,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,cAAcsT,QAC1FtV,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,mBAAmBsT,SAE5E,cAAVnW,EAAE+G,MACFxB,KAAK6I,UAAYvN,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,mBAAmBsT,QAC/FtV,EAAMvB,SAASwpB,EAAiBvpB,WAAY,KAAKsD,cAAc,cAAcsT,UAG3E,UAAVnW,EAAE+G,MACFxB,KAAKrE,WAAa,IAG1BiX,EAAOxR,UAAUkiB,iBAAmB,SAAUzS,EAAYvV,EAAOqoB,GAC7D,KAAO9S,GAAcA,EAAW/E,UAAUsE,SAAS,eAC3CuT,EACI3jB,KAAKrE,YAAcL,EAAMxB,OAAS,GAAKwB,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAAkBf,UAAUsE,SAAS,gBAC1GpQ,KAAKrE,WAAa,GAIC,IAAnBqE,KAAKrE,WAAmBL,EAAM0E,KAAKrE,WAAWkR,QAAQ,kBAAkBf,UAAUsE,SAAS,gBAC3FpQ,KAAKrE,UAAYL,EAAMxB,QAI/B6pB,EAAa3jB,KAAKrE,YAAcqE,KAAKrE,YACrCkV,EAAavV,EAAM0E,KAAKrE,WAAWkR,QAAQ,mBAGnD+F,EAAOxR,UAAUqa,qBAAuB,SAAU7d,GAC9C,GAAIA,EAAa,CACb,IAAI6T,EAAS7T,EAAY7B,QACzBmE,EAAetC,EAAYC,QAC3BD,EAAY1B,UACZuV,EAAO1F,WAGf6G,EAAOxR,UAAUma,oBAAsB,SAAUhgB,EAAM+M,GACnD,OAAQ/M,EAAKkO,MACT,IAAK,SACDzJ,KAAKqc,mBAAmBzS,qBAAqBrO,EAAM+M,GACnD,MACJ,IAAK,WACDtI,KAAK5C,qBAAqBwM,qBAAqBrO,EAAM+M,GACrD,MACJ,IAAK,cACDtI,KAAKsc,wBAAwB1S,qBAAqBrO,EAAM+M,GACxD,MACJ,IAAK,WACDtI,KAAKuc,qBAAqB3S,qBAAqBrO,EAAM+M,GACrD,MACJ,IAAK,cACDtI,KAAKwc,wBAAwB5S,qBAAqBrO,EAAM+M,GACxD,MACJ,IAAK,WACDtI,KAAKyc,qBAAqB7S,qBAAqBrO,EAAM+M,KAIjEsK,EAAOxR,UAAU2a,qBAAuB,SAAUJ,EAASC,GACvD,IAAIF,EAAmB1b,KAAKtB,cAAc,OACtCI,UAAW8kB,GACX/oB,GAAI8gB,EAAUjC,KAEdmK,EAAgB7jB,KAAKtB,cAAc,OACnCI,UAAWglB,GACXjpB,GAAI8gB,EAAU4G,GACdhoB,UAAWqhB,IAGf,OADAF,EAAiB9c,OAAOilB,GACjBnI,GAEX9I,EAAOxR,UAAU0W,kBAAoB,WACjC,IAAIvP,EAAQvI,KACZA,KAAKkc,eAAiBlc,KAAKtB,cAAc,QACrCI,UAAWilB,GProDJ,IOqoDyDC,GAChEnpB,GAAImF,KAAKlD,OAAOf,QAAQlB,GAAKopB,GAC7BlG,OAAS8E,SAAY,IAAKpZ,KAAQ,SAAUya,aAAc,kBAAmBC,KAAQ,YAEzFnkB,KAAKkc,eAAe9S,QAAU,WAAcb,EAAMqP,gBAClD5X,KAAKkc,eAAenM,UAAY,SAAUtV,GACxB,UAAVA,EAAE+G,KACF+G,EAAMqP,gBAGd5X,KAAKjE,QAAQ+P,UAAUK,IAAIiY,IACD,eAAtBpkB,KAAKjD,cACLiD,KAAKkc,eAAepQ,UAAUK,IAAIkY,IAEtCrkB,KAAKlD,OAAOf,QAAQiD,YAAYgB,KAAKkc,iBAEzCtJ,EAAOxR,UAAUkjB,qBAAuB,WACpC,IAAI/b,EAAQvI,KACRkO,EAAQxU,EAASsG,KAAK3B,YAAa,SAAU5D,GAAK,OAAOA,EAAEI,KAAO0N,EAAM2T,eAAerhB,MAC5E,IAAXqT,GACAlO,KAAK3B,YAAYkmB,OAAOrW,EAAO,GAEnClO,KAAKjE,QAAQ+P,UAAUC,OAAOqY,IAC9BrY,SAAO/L,KAAKlD,OAAOf,QAAQuB,cAAc,IAAMymB,KAC/C/jB,KAAKkc,eAAiB,MAE1BtJ,EAAOxR,UAAUojB,aAAe,WAC5BxkB,KAAKqZ,gBACLrZ,KAAKykB,gBAAgBzkB,KAAKiW,cAC1BjW,KAAKmW,QAAQnW,KAAKpF,KAAM,MAAOoF,KAAKjE,QAAQlB,IAC5CmF,KAAKiW,aAAejW,KAAKpF,KAAKsb,QAC9BlW,KAAKqW,mBACL,IAAIC,EAAWtW,KAAKuW,eAAevW,KAAKpF,MACpCoF,KAAKoV,aAAepV,KAAKpF,KAAKd,SAC9BkG,KAAKoV,YAAcpV,KAAKpF,KAAKd,OAAS,GAE1CkG,KAAKlD,OAAOT,eAAgBf,MAAOgb,EAAUG,aAAczW,KAAKoV,cAEnC,KADZpV,KAAKlD,OAAOxB,MAAM0E,KAAKoV,aAAajb,QACtCI,WACXyF,KAAK+X,iBAAiB/X,KAAKoV,cAGnCxC,EAAOxR,UAAUyW,aAAe,WAC5B7X,KAAK4U,oBAAsB,EAC3B5U,KAAKqZ,gBACLrZ,KAAKkc,eAAepQ,UAAUnC,OAAO0a,GAAsD,eAAtBrkB,KAAKjD,cAC1EiD,KAAKjE,QAAQ+P,UAAUnC,OAAO+Y,GAAwD,eAAtB1iB,KAAKjD,cACrE,IAAK,IAAIlD,EAAI,EAAGA,GAAMmG,KAAKpF,KAAKd,OAAS,EAAID,IAAK,CAC9C,IAAI2B,EAAW3B,EAEf,GAA6B,KADZmG,KAAKlD,OAAOxB,MAAMvB,SAASyB,EAASxB,WAAY,KAAKG,QACvDI,UAAkB,CAC7B,IAAIO,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAC9C0qB,EAAY1kB,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKgB,OACzDma,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAAKa,GAAKwa,IAC1GuD,EAAazD,EAActI,QAAQ,IAAMgM,IAC7C,GAA0B,eAAtB7Y,KAAKjD,aACL,IAAK,IAAI4nB,EAAM,EAAGA,EAAMD,EAAU5qB,OAAQ6qB,IAAO,CAC7C,IAAI1pB,EAAQypB,EAAU3qB,SAAS4qB,EAAI3qB,WAAY,KAC3C4qB,EAAYF,EAAU3qB,SAAS4qB,EAAI3qB,WAAY,KAAKokB,YACpDnjB,EAAMqiB,aACNriB,EAAMoB,eAAgBihB,aAAa,IAAS,GAC5Ctd,KAAKihB,eAAehmB,EAAMJ,MAG1BmF,KAAKkf,mBAAmB1jB,EAAUV,EAAK6pB,EAAK/L,EAAYzD,GAAe,GAAM,GAC7EnV,KAAKmf,mBAAmB3jB,EAAUV,EAAK6pB,EAAK/L,EAAYzD,GAAe,GAAM,IAKjF,IAAK,IAHDxF,EAAWiJ,EAAWtb,cAAc,IAAMrC,EAAMJ,IAEhD0jB,GADA7N,EAAiBf,EAASrS,cAAc,IAAMrC,EAAMJ,GAAK6e,KAC1BxJ,iBAAiB,oBAC3C2U,EAAM,EAAGA,EAAMtG,EAAczkB,OAAQ+qB,IAC1CtG,EAAcxkB,SAAS8qB,EAAI7qB,WAAY,KAAK+R,UAE5C6P,EAAclL,EAAepT,cAAc,IAAMrC,EAAMJ,GAAK0nB,KACpDxW,UACR+Y,EAAepU,EAAepT,cAAc,IAAMrC,EAAMJ,GAAKwa,KACpDvJ,UAAUiZ,QAAQjH,GAAsBkH,IACrDF,EAAahZ,UAAUC,OAAOqU,IAC9B,IAAK,IAAIrlB,EAAI,EAAGA,EAAIE,EAAME,YAAYrB,OAAQiB,IAAK,CAC/C,IAAIK,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,MACtDirB,EAAkBvU,EAAepT,cAAc,IAAMlC,EAAWP,KACpDiR,UAAUiZ,QAAQjH,GAAsBkH,IACxD,IAAK,IAAI9pB,EAAI,EAAGA,EAAIE,EAAWE,MAAMxB,OAAQoB,IAAK,CAI9C,IAHA,IAAIgqB,EAAW9pB,EAAWE,MACtBC,EAAOH,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,KAC/CkhB,GAAO,EACJ,GAAW3f,EAAK2B,iBAAmBC,cAAYF,SAAU,CAC5D/B,IACA,IAAIiqB,EAAYzU,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,IACzDnc,EAAM4nB,EAAU7nB,cAAc,IAAM/B,EAAKV,IAC7CmF,KAAKolB,gBAAgB7pB,EAAMgC,GAC3B4nB,EAAUpZ,SACN7Q,EAAIgqB,EAASprB,OACbyB,EAAO2pB,EAASnrB,SAASmB,EAAElB,WAAY,KAGvCkhB,GAAO,EAGf,IAAKA,EACD,MAEJ,IAAImK,EAAS9pB,EAAKoe,eAAiBrZ,iBAAemD,OAC7ClI,EAAKoe,aAAerZ,iBAAeiD,OAAWjD,iBAAeiD,OAASjD,iBAAekD,MAC1F6hB,IAAU9pB,EAAK2B,eAAiBC,cAAYK,aAAgBjC,EAAK2B,eAAiBC,cAAYgd,SACxF7Z,iBAAeiD,OAAS8hB,EAC9B,IAAI/c,OAAU,EACd,GAAM/M,EAAK2B,eAAiBC,cAAYF,QAMnC,CACDqL,EAAUoI,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,IACnDne,EAAK2B,kBAAoBC,cAAYF,QAAUE,cAAYgd,YAC3Dna,KAAKoa,oBAAoB7e,EAAMC,EAAUP,EAAMwC,oBAAqBxC,EAAMJ,GAAII,EAAM4D,OAAQyJ,EAASoI,GAChGnV,EAAKkO,OAASlJ,iBAAe8Z,UAAc9e,EAAKkO,OAASlJ,iBAAe0R,aACzEjS,KAAKsa,iBAAiB/e,EAAM+M,EAASrN,EAAMwC,qBAAqB,IAGxElC,EAAKc,eAAgB2M,WAAYqc,IAAQ,GACrC9nB,EAAM+K,EAAQhL,cAAc,IAAM/B,EAAKV,IAC3CmF,KAAK6Z,YAAYtc,EAAKhC,QAftB+M,EAAUtI,KAAKslB,aAAa/pB,GAAOqpB,EAAW3pB,EAAMJ,GAAII,EAAM4D,OAAQ5D,EAAMwC,oBAAqBjC,EAAUkV,GAAgB,GACvHnV,EAAK2B,eAAiBC,cAAYK,YAClCynB,EAAgBrmB,OAAO0J,IAiBjCrN,EAAMwC,qBAAuBkS,EAASrS,cAAc,IAAMid,KAC5D5K,EAAS7D,UAAUK,IAAI,gCAI9B,CACDnM,KAAKjE,QAAQ+P,UAAUC,OAAOmX,IAC9B,IAAK,IAAIqC,EAAM,EAAGA,EAAMb,EAAU5qB,OAAQyrB,IAAO,CACzCtqB,EAAQypB,EAAU3qB,SAASwrB,EAAIvrB,WAAY,KAC3C4qB,EAAYF,EAAU3qB,SAASwrB,EAAIvrB,WAAY,KAAKokB,YADxD,IAEI1N,EACAoU,GADApU,EAAiBkI,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAK6e,KAC7Bpc,cAAc,IAAMrC,EAAMJ,GAAKwa,IAC7DuG,EAAc5b,KAAKtB,cAAc,OACjCI,UAAW0mB,GACX3qB,GAAII,EAAMJ,GAAK0nB,GACfhoB,UAAWU,EAAM4D,SAErB6R,EAAe1R,YAAY4c,GACT,QAAdgJ,GACAE,EAAahZ,UAAUiZ,QAAQC,GAAyBlH,IAE5DgH,EAAahZ,UAAUK,IAAIiU,IAC3B,IAASrlB,EAAI,EAAGA,EAAIE,EAAME,YAAYrB,OAAQiB,IAAK,CAC/C,IAAI6C,OAAc,EACdud,OAAiB,EACrB,GAAKlgB,EAAMwC,oBAMN,CACD,IAAI2d,EAAiB1K,EAAepT,cAAc,IAAMrC,EAAMJ,GAAK6C,IAC/D0d,IAEAD,GADAvd,EAAcyd,cAAYD,EAAgBzd,mBACbE,aATjCD,EAAcoC,KAAKpC,eAEfud,EAAiBnb,KAAKpC,YAAYC,QAUtCzC,EAAaH,EAAME,YAAYpB,SAASgB,EAAEf,WAAY,KAA1D,IACIirB,EAAkBvU,EAAepT,cAAc,IAAMlC,EAAWP,IAClD,WAAd+pB,GACAK,EAAgBnZ,UAAUiZ,QAAQC,GAAyBlH,IAE/D,IAAS5iB,EAAI,EAAGA,EAAIE,EAAWE,MAAMxB,OAAQoB,IAAK,CAI9C,IAHIgqB,EAAW9pB,EAAWE,MACtBC,EAAOH,EAAWE,MAAMvB,SAASmB,EAAElB,WAAY,KAC/CkhB,GAAO,EACJ,KAAY3f,EAAK2B,eAAiBC,cAAYF,UAAU,CAC3D/B,IACIoN,OAAU,EACd,IAAK/M,EAAK2B,eAAiBC,cAAYK,YAAgBjC,EAAK2B,eAAiBC,cAAYgd,WAOrE,QALZ7R,EADA/M,EAAK2B,eAAiBC,cAAYK,WACxBkT,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,IAG7CyB,EAAe7d,cAAc,IAAM/B,EAAKV,GAAK6e,KAErC,CAClB,IAAI+L,EAAQnd,EAAQhL,cAAc,IAAM/B,EAAKV,IAC7CmF,KAAKolB,gBAAgB7pB,EAAMkqB,GAC3Bnd,EAAQyD,SAGZ7Q,EAAIgqB,EAASprB,OACbyB,EAAO2pB,EAASnrB,SAASmB,EAAElB,WAAY,KAGvCkhB,GAAO,EAGf,IAAKA,EACD,MAEJ,GAAM3f,EAAK2B,gBAAkBC,cAAYK,WAAaL,cAAYgd,UAI7D,EACG7R,EAAUoI,EAAepT,cAAc,IAAM/B,EAAKV,GAAK6e,OAEvDpR,EAAU6S,EAAe7d,cAAc,IAAM/B,EAAKV,GAAK6e,IAClDne,EAAKkO,OAASlJ,iBAAe8Z,UAAc9e,EAAKkO,OAASlJ,iBAAe0R,aACzEjS,KAAKsa,iBAAiB/e,EAAM+M,EAASrN,EAAMwC,qBAAqB,GAEpEuC,KAAKub,oBAAoBhgB,EAAM+M,IAEnC2c,EAAgBrmB,OAAO0J,OAbmD,CAC1E,IAAIA,EAAUtI,KAAKslB,aAAa/pB,GAAOqpB,EAAW3pB,EAAMJ,GAAII,EAAM4D,OAAQ5D,EAAMwC,oBAAqBjC,GAAU,GAC/GypB,EAAgBrmB,OAAO0J,GAavB/K,EAAMmT,EAAepT,cAAc,IAAM/B,EAAKV,IAAlD,IACI6qB,EAAYnqB,EAAKoe,aAAerZ,iBAAemD,MAASnD,iBAAemD,MACtElI,EAAKoe,aAAerZ,iBAAeiD,OAAUjD,iBAAeiD,OAASjD,iBAAekD,MACzFjI,EAAKc,eAAgB2M,WAAY0c,IAAY,GAC7C1lB,KAAK6Z,YAAYtc,EAAKhC,GAEtBN,EAAMwC,qBAAuBG,GACY,IAArCud,EAAeK,mBACfxb,KAAKyb,qBAAqB7d,KAM1CoC,KAAKoV,cAAgB5Z,GACrBwE,KAAK2V,cAAcna,EAAU2Z,IAIf,YAAtBnV,KAAKjD,eACLiD,KAAKyb,qBAAqBzb,KAAKpC,aAC/BoC,KAAKpC,YAAc,OAG3BgV,EAAOxR,UAAUukB,mBAAqB,SAAUhK,EAASjL,GACrD,IAAInI,EAAQvI,KACR4lB,EAAe5lB,KAAKtB,cAAc,OAClCI,UAAW+mB,GAAqC,KAAO7lB,KAAK8lB,gBAAkB9lB,KAAK8lB,gBAAkBC,IACrGlrB,GAAI8gB,EAAUqK,GACdjI,OAAS8E,SAAY,IAAKpZ,KAAQ,SAAUya,aAAc,gBAAiBC,KAAQ,YAEvFzT,EAAe1R,YAAY4mB,GAC3BlV,EAAe5E,UAAUK,IAAI8Z,IAC7B5Z,eAAaF,IAAIyZ,EAAc,QAAS5lB,KAAKkmB,oBAAoBnmB,KAAKC,KAAM2b,GAAU3b,MACtFqM,eAAaF,IAAIyZ,EAAc,UAAW,SAAUnrB,GAClC,UAAVA,EAAE+G,KACF+G,EAAM2d,oBAAoBvK,IAE/B3b,OAEP4S,EAAOxR,UAAU8kB,oBAAsB,SAAUrrB,GAC7C,IAAIqd,GAAcyD,QAAS9gB,GAC3BmF,KAAKyX,QAAQ,oBAAqBS,IAEtCtF,EAAOxR,UAAUihB,aAAe,SAAUqC,EAAWlpB,GAEjD,IAAK,IADD2qB,KACKtsB,EAAI,EAAGA,EAAI6qB,EAAU5qB,OAAQD,IAAK,CACvC,IAAIoB,EAAQypB,EAAU3qB,SAASF,EAAEG,WAAY,KACzC4qB,EAAY3pB,EAAMmjB,YAClBzO,EAAW3P,KAAKtB,cAAc,OAC9BI,UAAW7D,EAAMiD,SACjBrD,GAAII,EAAMJ,KAEd8U,EAAS7D,UAAUK,IAAIgW,IACvBgE,EAAcvU,KAAKjC,GACnB,IAAIe,EAAiB1Q,KAAKtB,cAAc,OACpCI,UAAW7D,EAAMiD,SACjBrD,GAAII,EAAMJ,GAAK6e,KAEnBhJ,EAAe5E,UAAUK,IAAIuJ,IAC7B/F,EAAS3Q,YAAY0R,GACrB,IAAIoU,EAAe9kB,KAAKtB,cAAc,OAClCI,UAAiC,eAAtBkB,KAAKjD,aAAgCqpB,GAAkCA,GP15D/E,IO05DkIhG,GACrIvlB,GAAII,EAAMJ,GAAKwa,KAInB,GAFAyP,EAAahZ,UAAUK,IAAoB,WAAdyY,GAAkD,eAAtB5kB,KAAKjD,aAAkCioB,GAA0BlH,IAC1HpN,EAAe1R,YAAY8lB,GACD,YAAtB9kB,KAAKjD,aAA4B,CACjC,IAAI6e,EAAc5b,KAAKtB,cAAc,OACjCI,UAAW0mB,GACX3qB,GAAII,EAAMJ,GAAK0nB,GACfhoB,UAAWU,EAAM4D,SAErB6R,EAAe1R,YAAY4c,GAE3B3gB,EAAMorB,kBACNrmB,KAAK2lB,mBAAmB1qB,EAAMJ,GAAI6V,GAEtC,IAAI0R,EAAWpiB,KAAKsmB,iBAAiBrrB,EAAME,YAAaF,EAAMmjB,YAAanjB,EAAMJ,GAAII,EAAM4D,OAAQ5D,EAAMwC,oBAAqBjC,EAAUkV,GACxI9R,SAAOwjB,EAAU0C,GACU,eAAtB9kB,KAAKjD,cAAoC9B,EAAMwC,qBAAuBkS,EAASrS,cAAc,IAAMid,KACpG5K,EAAS7D,UAAUK,IAAI,4BAG/B,OAAOga,GAEXvT,EAAOxR,UAAUiV,iBAAmB,WAChC,IAAK,IAAInb,EAAI,EAAGA,EAAI8E,KAAKpF,KAAKd,OAAQoB,IAElC,IAAK,IADDwpB,EAAY1kB,KAAKpF,KAAKb,SAASmB,EAAElB,WAAY,KAAKgB,OAC7CK,EAAI,EAAGA,EAAIqpB,EAAU5qB,OAAQuB,IAGlC,IAAK,IAFDkrB,EAAiB7B,EAAU3qB,SAASsB,EAAErB,WAAY,KAAKmB,YACvDypB,EAAYF,EAAU3qB,SAASsB,EAAErB,WAAY,KAAKokB,YAC7CvkB,EAAI,EAAGA,EAAI0sB,EAAezsB,OAAQD,IAEvC,IAAK,IADDyB,EAAQirB,EAAexsB,SAASF,EAAEG,WAAY,KAAKsB,MAC9CP,EAAI,EAAGA,EAAIO,EAAMxB,OAAQiB,IAAK,CACnC,IAAIyrB,EAAalrB,EAAMvB,SAASgB,EAAEf,WAAY,KAM9C,GALKwsB,EAAW7M,cAA6C,IAA5B6M,EAAW7M,cACxC6M,EAAWnqB,eACPsd,aAAerZ,iBAAekD,MAAQlD,iBAAeiD,OAASjD,iBAAemD,QAC9E,GAEkB,gBAApB+iB,EAAW/c,MAA4B+c,EAAW7M,eAAiBrZ,iBAAekD,MACnFgjB,EAAWnqB,eAAgBsd,aAAcrZ,iBAAekD,QAAS,QAEhE,GAAyB,aAApBgjB,EAAW/c,MAA2C,aAApB+c,EAAW/c,MAClD+c,EAAW7M,eAAiBrZ,iBAAeiD,QAG3C,IAAoB,WAAdqhB,GAA4BtpB,EAAMxB,OAAS,GAAuB,QAAd8qB,GAAyB2B,EAAezsB,OAAS,IACxG0sB,EAAW7M,aAAerZ,iBAAemD,MAAO,CAEhD,IAAIgjB,EAAUD,EAAW7M,cAAgBrZ,iBAAekD,MAAQlD,iBAAeiD,QAC/EkjB,EAAUA,GAAoBnmB,iBAAeiD,OAC7CijB,EAAWnqB,eAAgBsd,aAAc8M,IAAW,SAPxDD,EAAWnqB,eAAgBsd,aAAcrZ,iBAAeiD,SAAU,GAUtE,IAAImiB,EAAYc,EAAW7M,aAAerZ,iBAAemD,MAASnD,iBAAemD,MAC5E+iB,EAAW7M,aAAerZ,iBAAeiD,OAAUjD,iBAAeiD,OAASjD,iBAAekD,MAC/FgjB,EAAWnqB,eAAgB2M,WAAY0c,IAAY,KAMvE9S,EAAOxR,UAAUklB,iBAAmB,SAAUC,EAAgB3B,EAAWjJ,EAASC,EAAapB,EAAWhf,EAAUkV,GAEhH,IAAK,IADDgW,KACK7sB,EAAI,EAAGA,EAAI0sB,EAAezsB,OAAQD,IAAK,CAC5C,IAAIuB,EAAamrB,EAAexsB,SAASF,EAAEG,WAAY,KACnDkgB,EAAgBla,KAAKtB,cAAc,OACnCI,UAAW1D,EAAW8C,SACtBrD,GAAIO,EAAWP,KAEnBqf,EAAcpO,UAAUK,IAAIwa,IAC5BzM,EAAcpO,UAAUK,IAAoB,WAAdyY,GAAkD,eAAtB5kB,KAAKjD,aAC3DioB,GAA0BlH,IAC9B4I,EAAmB9U,KAAKsI,GACxB,IAAIkI,EAAWpiB,KAAKslB,YAAYlqB,EAAWE,MAAOspB,EAAWjJ,EAASC,EAAapB,EAAWhf,EAAUkV,GAExG,GADA9R,SAAOwjB,EAAUlI,GACE,QAAd0K,GAA+B,IAAN/qB,EAC1B,MAGR,OAAO6sB,GAEX9T,EAAOxR,UAAUwlB,iBAAmB,SAAUrrB,EAAM+M,GAChD,OAAQ/M,EAAKkO,MACT,IAAK,SACDzJ,KAAKqc,mBAAmBhU,aAAa9M,EAAM+M,GAC3C,MACJ,IAAK,WACDtI,KAAK5C,qBAAqB+R,eAAe5T,EAAM+M,GAC/C,MACJ,IAAK,cACDtI,KAAKsc,wBAAwBxK,kBAAkBvW,EAAM+M,GACrD,MACJ,IAAK,WACDtI,KAAKuc,qBAAqBlS,eAAe9O,EAAM+M,GAC/C,MACJ,IAAK,cACDtI,KAAKwc,wBAAwBvR,kBAAkB1P,EAAM+M,GACrD,MACJ,IAAK,WACDtI,KAAKyc,qBAAqBtP,eAAe5R,EAAM+M,GAC/C,MACJ,IAAK,WACDtI,KAAKmgB,sBAAsB5kB,EAAM+M,KAI7CsK,EAAOxR,UAAUkkB,YAAc,SAAUJ,EAAUN,EAAWjJ,EAASC,EAAapB,EAAWhf,EAAUkV,GAGrG,IAAK,IAFDmW,EACAC,KACKjtB,EAAI,EAAGA,EAAIqrB,EAASprB,OAAQD,IAAK,CAItC,IAHA,IAAI0B,EAAO2pB,EAASnrB,SAASF,EAAEG,WAAY,KAEvCkhB,GAAO,EACJA,IACsB,eAAtBlb,KAAKjD,gBAAoCxB,EAAK2B,gBAAkBC,cAAYK,WAAaL,cAAYgd,YAC5E,YAAtBna,KAAKjD,gBAAiCxB,EAAK2B,eAAiBC,cAAYF,aAC9EpD,EACQqrB,EAASprB,OACbyB,EAAO2pB,EAASnrB,SAASF,EAAEG,WAAY,KAGvCkhB,GAAO,EAGf,IAAKA,EACD,MAEJ,IAAI5S,EAAUtI,KAAKtB,cAAc,OAC7BI,UAAWvD,EAAK2C,SAChBrD,GAAIU,EAAKV,GAAK6e,MAEjBmN,EAAKve,EAAQwD,WAAWK,IAAIhK,MAAM0kB,GAAKtM,IAAuBvG,OAAQzY,EAAKkB,UAAYsqB,SAEpFxrB,EAAKyrB,uBAAyBlpB,EAAiBvC,EAAKyrB,yBACpD1e,EAAQwD,UAAUK,IAAItM,IACtBG,KAAK3B,YAAYuT,MAAO/W,GAAIyN,EAAQzN,GAAI2D,KAAMjD,EAAKyrB,yBAEvD,IAAI3B,EAAO9pB,EAAKyN,WAuBhB,GAtB0B,eAAtBhJ,KAAKjD,eACLsoB,EAAS9pB,EAAKoe,eAAiBrZ,iBAAemD,OAAWlI,EAAKoe,aAAerZ,iBAAeiD,QACvFhI,EAAK2B,iBAAmBC,cAAYgd,SAAa7Z,iBAAeiD,OAASjD,iBAAekD,MAC7FjI,EAAKc,eAAgB2M,WAAYqc,IAAQ,IAEzCA,EAAO/kB,iBAAemD,MACtB6E,EAAQwD,UAAUK,IAAIkU,GAA6BD,IAGnD9X,EAAQwD,UAAUK,IAAKkZ,EAAO/kB,iBAAeiD,OAAU+c,GAA+BC,IAE1FvgB,KAAK4mB,iBAAiBrrB,EAAM+M,GACD,eAAtBtI,KAAKjD,cAAoCxB,EAAK2B,iBAAmBC,cAAYgd,UAAc5e,EAAK2B,kBAAoBC,cAAYF,QAAUE,cAAYgd,UAQvJ2M,EAAalV,KAAKtJ,IAPlBtI,KAAKoa,oBAAoB7e,EAAMC,EAAUgf,EAAWmB,EAASC,EAAatT,EAASoI,GAC9EnV,EAAKkO,OAASlJ,iBAAe8Z,UAAc9e,EAAKkO,OAASlJ,iBAAe0R,aACzEjS,KAAKsa,iBAAiB/e,EAAM+M,EAASkS,GAAW,IAOrC,WAAdoK,GAAkC,IAAN/qB,EAC7B,MAGR,OAAOitB,GAEXlU,EAAOxR,UAAUoT,uBAAyB,WACtC,GAAIxU,KAAKinB,iBAAkB,CACvB,IAAIC,EAAe,mBACnBlnB,KAAKmnB,eAAeD,IACpBlnB,KAAKonB,cAAgBpnB,KAAKtB,cAAc,OACpCI,UAAWuoB,GACXxsB,GAAImF,KAAKjE,QAAQlB,GAAKysB,KAE1B,IAAIC,EAAmBttB,EAAoB+F,KAAKinB,kBAChDroB,SAAO2oB,KAAqBvnB,KAAMknB,EAAc,mBAAoBlnB,KAAKwnB,kBAAmBxnB,KAAKonB,eACjG,IAAIhR,EAASpW,KAAKlD,OAAOf,QACRqa,EAAO9Y,cAAc,cAC3BmqB,MAAMznB,KAAKonB,eACtBhR,EAAOlC,MAAM8C,YAAYE,GAA2ClX,KAAKonB,cAAcpR,YAAc,MACrGhW,KAAK0nB,yBAGb9U,EAAOxR,UAAU+e,sBAAwB,SAAU5kB,EAAMosB,GACrD,IAAIrf,EAAUtI,KAAKtB,cAAc,OAC7BI,UAAWvD,EAAK2C,SAAY0pB,GPplErB,IOolEmErsB,EAAK2C,SAAY0pB,GAC3F/sB,GAAIU,EAAKV,KAETU,EAAKkB,WACL6L,EAAQwD,UAAUK,IAAI4a,IACtBze,EAAQgB,aAAa,WAAY,KAErCqe,EAAY3oB,YAAYsJ,GACxBtI,KAAK6nB,mBAAmBtsB,EAAM+M,IAElCsK,EAAOxR,UAAUymB,mBAAqB,SAAUtsB,EAAMosB,GAClD,IAAIT,EAAe,SAAW3rB,EAAKV,GAAK,eACxCmF,KAAKmnB,eAAeD,IACpB,IAAIK,EAAmBttB,EAAoBsB,EAAK4S,cAChDvP,SAAO2oB,GAAmBve,WAAY1I,iBAAe/E,EAAKyN,aAAehJ,KAAMknB,EAAe3rB,EAAKV,GAAK,eAAiBmF,KAAKwnB,kBAAmBG,GACjJ3nB,KAAK0nB,wBAET9U,EAAOxR,UAAU+U,QAAU,SAAU2R,EAAMre,EAAMse,GAG7C,IAAK,IAFDvmB,EAAe,QAATiI,EPxgEE,OOwgE2C,UAATA,EPtgEhC,SOugED,eAATA,EPrgEe,cAEN,QOogEJ5P,EAAI,EAAGA,EAAIiuB,EAAKhuB,OAAQD,IAAK,CAClC,IAAImuB,EAAWF,EAAK/tB,SAASF,EAAEG,WAAY,KAI3C,OAHKguB,EAASntB,IACVmtB,EAAS3rB,eAAgBxB,GAAIktB,EAASvmB,EAAOxB,KAAKmT,YAAc,GAE5D1J,GACJ,IAAK,MACDue,EAAS3rB,eAAgBrB,OAAQgF,KAAKmW,QAAQ6R,EAAShtB,OAAQ,QAASgtB,EAASntB,MAAO,GACxF,MACJ,IAAK,QACDmtB,EAAS3rB,eAAgBlB,YAAa6E,KAAKmW,QAAQ6R,EAAS7sB,YAAa,aAAc6sB,EAASntB,MAAO,GACvG,MACJ,IAAK,aACDmtB,EAAS3rB,eAAgBf,MAAO0E,KAAKmW,QAAQ6R,EAAS1sB,MAAO,OAAQ0sB,EAASntB,MAAO,IAMjG,OAAOitB,GAEXlV,EAAOxR,UAAUjF,qBAAuB,SAAUC,GAC9C4D,KAAKlD,OAAOT,cAAcD,GACtB4D,KAAKqU,sBACLrU,KAAKqU,qBAAqB4T,oBAAoB7rB,GAElD,IAAK,IAAIvC,EAAI,EAAGA,EAAImG,KAAKpF,KAAKd,OAAQD,IAGlC,IAAK,IAFDiB,EAAMkF,KAAKpF,KAAKb,SAASF,EAAEG,WAAY,KACvC6C,EAAamD,KAAKlD,OAAOxB,MAAMvB,SAASF,EAAEG,WAAY,KAAKG,QACtD+tB,EAAK,EAAGrB,EAAK/rB,EAAIE,OAAQktB,EAAKrB,EAAG/sB,OAAQouB,IAAM,CACpD,IAAIjtB,EAAQ4rB,EAAGqB,GACX3Y,OAAkB,EAClBC,OAAW,EACXxP,KAAKjD,eAAiBC,eAAaC,QACnCsS,EAAkBtU,EAAMqiB,YACpBzgB,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6d,GAAwByI,IAAyB,MAK/F3R,GAFAD,EAAkBtU,EAAMwC,oBACpBZ,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6C,IAA+B,MAChDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,eAE9EuC,EAAkBqP,EAAS3R,OAAQzB,GACnCoT,EAASnT,cAAcD,IAG/B,IAAK,IAAI+rB,EAAK,EAAGC,EAAKntB,EAAME,YAAagtB,EAAKC,EAAGtuB,OAAQquB,IAErD,IAAK,IAAIE,EAAK,EAAGC,EADAF,EAAGD,GACa7sB,MAAO+sB,EAAKC,EAAGxuB,OAAQuuB,IAAM,CAC1D,IAAI9sB,EAAO+sB,EAAGD,GACV9qB,EAAM,KAiBV,GAhBIyC,KAAKjD,eAAiBC,eAAaC,QAC/B1B,EAAK2B,eAAiBC,cAAYF,UAClCM,EAAMgS,EAAkBvP,KAAK5C,qBAAqB4T,kBAAkBzB,EAAiBhU,EAAKV,IAAMgC,EAAWS,cAAc,IAAM/B,EAAKV,MAKxI0C,EAAOhC,EAAK2B,eAAiBC,cAAYK,WAAcX,EAAWS,cAAc,IAAM/B,EAAKV,IAAM,QAG7F0C,EAAMiS,EAAS3R,OAAOP,cAAc,IAAM/B,EAAKV,IAC7B,aAAdU,EAAKkO,MACLzJ,KAAKsa,iBAAiB/e,EAAMiU,EAAS3R,OAAQ5C,EAAMwC,qBAAqB,IAIhFF,EAAK,CACL,IAAIvB,EAAagE,KAAKuoB,kBAAkBhtB,GACrB,aAAfS,EACAG,EAAqBoB,EAAKvB,EAAYI,GAEhC0T,oBAAkB1T,EAAWyM,YACnCtL,EAAIuO,UAAUnC,OAAOsK,GAAmB7X,EAAWyM,eAQ/E+J,EAAOxR,UAAUonB,mBAAqB,SAAU7M,EAASpM,EAAiB1S,GACtE,IAAI4rB,EAAc9M,EAAUjC,GACxBgP,EAAenZ,EAAkBvP,KAAK5C,qBAAqB4T,kBAAkBzB,EAAiBkZ,GAAe5rB,EAAWS,cAAc,IAAMmrB,GAChJ,GAAIC,EAAc,CACdA,EAAa5c,UAAUC,OAAOka,IAC9B,IAAIL,EAAe8C,EAAaprB,cAAc,IAAMqe,EAAUqK,IAC9Dja,SAAO6Z,KAGfhT,EAAOxR,UAAUqjB,gBAAkB,SAAU7pB,GACzC,IAAK,IAAIf,EAAI,EAAGA,EAAIe,EAAKd,OAAQD,IAG7B,IAAK,IAFDiB,EAAMF,EAAKb,SAASF,EAAEG,WAAY,KAClC6C,EAAamD,KAAKlD,OAAOxB,MAAMvB,SAASF,EAAEG,WAAY,KAAKG,QACtD+tB,EAAK,EAAGrB,EAAK/rB,EAAIE,OAAQktB,EAAKrB,EAAG/sB,OAAQouB,IAAM,CACpD,IAAIjtB,EAAQ4rB,EAAGqB,GACX3Y,OAAkB,EAClBC,OAAW,EACXxP,KAAKjD,eAAiBC,eAAaC,SACnCsS,EAAkBtU,EAAMqiB,YACpBzgB,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6d,GAAwByI,IAAyB,KAC3FlmB,EAAMorB,kBACNrmB,KAAKwoB,mBAAmBvtB,EAAMJ,GAAI0U,EAAiB1S,IAMvD2S,GAFAD,EAAkBtU,EAAMwC,oBACpBZ,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6C,IAA+B,MAChDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,YAEtF,IAAK,IAAIuqB,EAAK,EAAGC,EAAKntB,EAAME,YAAagtB,EAAKC,EAAGtuB,OAAQquB,IAErD,IAAK,IAAIE,EAAK,EAAGC,EADAF,EAAGD,GACa7sB,MAAO+sB,EAAKC,EAAGxuB,OAAQuuB,IAAM,CAC1D,IAAI9sB,EAAO+sB,EAAGD,GACV9qB,OAAM,EACNyC,KAAKjD,eAAiBC,eAAaC,QAC/B1B,EAAK2B,eAAiBC,cAAYF,UAClCM,EAAMgS,EAAkBvP,KAAK5C,qBAAqB4T,kBAAkBzB,EAAiBhU,EAAKV,IACtFgC,EAAWS,cAAc,IAAM/B,EAAKV,MAK5C0C,EAAOhC,EAAK2B,eAAiBC,cAAYK,WACrCX,EAAWS,cAAc,IAAM/B,EAAKV,IAAM,QAG1C0C,EAAMiS,EAAWA,EAAS3R,OAAOP,cAAc,IAAM/B,EAAKV,IAAM,MAGpE0C,GACAyC,KAAKolB,gBAAgB7pB,EAAMgC,GAIlCyC,KAAKjD,eAAiBC,eAAaC,SAAYsS,EAChDvP,KAAK5C,qBAAqB0T,uBAAuBvB,GAE3CvP,KAAKjD,eAAiBC,eAAaQ,YAAevC,EAAMwC,qBAAuB8R,GACrFvP,KAAKyb,qBAAqBjM,GAIlCxP,KAAKpC,cACLoC,KAAKyb,qBAAqBzb,KAAKpC,aAC/BoC,KAAKpC,YAAc,OAG3BgV,EAAOxR,UAAUgkB,gBAAkB,SAAU7pB,EAAMgC,GAC/C,IAAIvB,EAAagE,KAAKuoB,kBAAkBhtB,GAOxC,GANmB,gBAAfS,EACAgE,KAAKwc,wBAAwBvP,wBAAwB1P,GAEjC,aAAfvB,GACLF,EAAeyB,EAAKvB,GAEpBT,EAAKyrB,sBAAuB,CAC5B,IAAI9Y,EAAQxU,EAASsG,KAAK3B,YAAa,SAAU5D,GAAK,OAAOA,EAAEI,KAAOU,EAAKV,GAAK6e,MACjE,IAAXxL,GACAlO,KAAK3B,YAAYkmB,OAAOrW,EAAO,KAI3C0E,EAAOxR,UAAUmnB,kBAAoB,SAAUhtB,GAC3C,OAAQA,EAAKkO,MACT,IAAK,SACD,MAAO,MACX,IAAK,WACD,MAAO,eACX,IAAK,cACD,MAAO,YACX,IAAK,WACD,MAAO,WACX,IAAK,cACD,MAAO,cACX,IAAK,WACD,MAAO,WACX,QACI,MAAO,aAGnBmJ,EAAOxR,UAAUunB,oBAAsB,WACnC3oB,KAAKqZ,gBACLrZ,KAAK2hB,sBAAsB3hB,KAAKoV,aAIhC,IAAK,IAHDta,EAAMkF,KAAKpF,KAAKoF,KAAKoV,aACrBD,EAAgBnV,KAAKlD,OAAOf,QAAQuB,cAAc,IAAM0C,KAAKpF,KAAKoF,KAAKoV,aAAava,GAAKwa,IACzFuD,EAAazD,EAActI,QAAQ,IAAMgM,IACpC9d,EAAI,EAAIA,EAAID,EAAIE,OAAOlB,OAASiB,IACrCiF,KAAKkf,mBAAmBlf,KAAKoV,YAAata,EAAKC,EAAG6d,EAAYzD,GAAe,GAAM,GACnFnV,KAAKmf,mBAAmBnf,KAAKoV,YAAata,EAAKC,EAAG6d,EAAYzD,GAAe,GAAM,IAQ3FvC,EAAOxR,UAAUuW,cAAgB,WAC7B3X,KAAK8U,iBAQTlC,EAAOxR,UAAUwnB,UAAY,SAAUC,GACnC,IAAI3a,EAAQxU,EAASsG,KAAKpF,KAAM,SAAUH,GAAK,OAAOA,EAAEI,KAAOguB,IAC/D7oB,KAAK3D,eAAgB+Y,YAAalH,KAUtC0E,EAAOxR,UAAU0nB,OAAS,SAAUhuB,EAAKwD,EAAUyqB,GAC/C,IAAI7a,EAAQ5P,EAAW5E,EAASsG,KAAKpF,KAAM,SAAUH,GAAK,OAAOA,EAAEI,KAAOyD,KAAgB,EAC1F4P,GAAoB,IAAXA,EAAgBlO,KAAKpF,KAAKd,OAAUoU,GAAS6a,EAAU,EAAI,GACpE/oB,KAAKiW,aAAejW,KAAKpF,KAAKsb,QAC9BlW,KAAKiW,aAAasO,OAAOrW,EAAO,EAAGpT,GACnCkF,KAAK3D,eAAgBzB,KAAMoF,KAAKiW,eAAgB,GAChDjW,KAAKmW,SAASnW,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,MAAO,MAAOgG,KAAKjE,QAAQlB,IAC9EmF,KAAKiW,aAAejW,KAAKpF,KAAKsb,QAC9BlW,KAAKqW,mBACL,IAAI2S,EAAUhpB,KAAKuW,gBAAgBzb,IACnCkF,KAAKlD,OAAOgsB,OAAOE,EAAS9a,IAQhC0E,EAAOxR,UAAU6nB,UAAY,SAAUJ,GACnC,IAAI3a,EAAQxU,EAASsG,KAAKpF,KAAM,SAAUH,GAAK,OAAOA,EAAEI,KAAOguB,IAC/D,IAAe,IAAX3a,EAAJ,CAGA,IAAIrR,EAAamD,KAAKlD,OAAOxB,MAAMvB,SAASmU,EAAMlU,WAAY,KAAKG,QAC/Da,EAASgF,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKgB,OACvD,GAAIA,GAAoC,KAAzB6B,EAAWtC,UACtB,IAAK,IAAI2tB,EAAK,EAAGgB,EAAWluB,EAAQktB,EAAKgB,EAASpvB,OAAQouB,IAAM,CAG5D,IAAK,IAFDjtB,EAAQiuB,EAAShB,GACjB3Y,EAAkBtU,EAAMqiB,YAAczgB,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6d,GAAwByI,IAAyB,KAC5H0F,EAAK,EAAGsB,EAAKltB,EAAME,YAAa0rB,EAAKsB,EAAGruB,OAAQ+sB,IAErD,IAAK,IAAIuB,EAAK,EAAGC,EADAF,EAAGtB,GACavrB,MAAO8sB,EAAKC,EAAGvuB,OAAQsuB,IAAM,CAC1D,IAAI7sB,EAAO8sB,EAAGD,GACV7qB,EAAMgS,EAAkBvP,KAAK5C,qBAAqB4T,kBAAkBzB,EAAiBhU,EAAKV,IAAMgC,EAAWS,cAAc,IAAM/B,EAAKV,IACpI0C,GACAyC,KAAKolB,gBAAgB7pB,EAAMgC,GAInCgS,GACAvP,KAAK5C,qBAAqB0T,uBAAuBvB,GAIzDrB,IAAUlO,KAAKoV,cACfpV,KAAKoT,aAAc,GAEvBpT,KAAKiW,aAAejW,KAAKpF,KAAKsb,QAC9BlW,KAAKiW,aAAasO,OAAOrW,EAAO,GAChClO,KAAK3D,eAAgBzB,KAAMoF,KAAKiW,eAAgB,GAChDjW,KAAKlD,OAAOmsB,UAAU/a,KAW1B0E,EAAOxR,UAAU+nB,SAAW,SAAUN,EAAO5tB,EAAOqD,EAAUyqB,GAC1D,IAAIvtB,EAAW9B,EAASsG,KAAKpF,KAAM,SAAUH,GAAK,OAAOA,EAAEI,KAAOguB,IAClE,IAAkB,IAAdrtB,EAAJ,CAGIwE,KAAKoV,cAAgB5Z,GACrBwE,KAAK2oB,sBAET,IAAI7tB,EAAMkF,KAAKpF,KAAKb,SAASyB,EAASxB,WAAY,KAC9CovB,EAAetuB,EAAIE,OAAOkb,QAC1BhI,EAAQ5P,EAAW5E,EAAS0vB,EAAc,SAAU3uB,GAAK,OAAOA,EAAEI,KAAOyD,KAAgB,EAC7F4P,GAAoB,IAAXA,EAAgBkb,EAAatvB,OAAUoU,GAAS6a,EAAU,EAAI,GACvEK,EAAa7E,OAAOrW,EAAO,EAAGjT,GAC9BH,EAAIuB,eAAgBrB,OAAQouB,IAAgB,GAC5CppB,KAAKmW,SAASrb,EAAIE,OAAOjB,SAASmU,EAAMlU,WAAY,MAAO,QAAS6uB,GACpE7oB,KAAKqW,mBAEL,IAAIxZ,EAAamD,KAAKlD,OAAOxB,MAAMvB,SAASyB,EAASxB,WAAY,KAAKG,QACtE,GAA6B,KAAzB0C,EAAWtC,UAAkB,CAC7B,IAAIwB,EAAUiE,KAAKqiB,cAAcvnB,EAAIE,OAAOjB,SAASmU,EAAMlU,WAAY,MAAOwB,GAAU,GAEpF6tB,EAAY/qB,EAAWzB,EAAWS,cAAc,IAAMgB,GAAY,KAClE+qB,EACAA,EAAUtJ,sBAAsBgJ,EAAU,WAAa,cAAehtB,GAGtEc,EAAW+B,OAAO7C,GAGtBiE,KAAKoV,cAAgB5Z,GACrBwE,KAAK2X,kBASb/E,EAAOxR,UAAUkoB,YAAc,SAAU3N,GACrC,IAAI/e,EAAWf,EAASmE,KAAKpF,KAAM+gB,GACnC,GAAK/e,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAAI9rB,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QACtD,GAA6B,KAAzB0C,EAAWtC,UAAkB,CAC7B,IAAIgV,OAAkB,EAClBC,OAAW,EACX5S,EAAS3B,MAAMorB,kBACfrmB,KAAKwoB,mBAAmB5rB,EAAS3B,MAAMJ,GAAI,KAAMgC,GAEjDmD,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAEtF,IAAK,IAAIsqB,EAAK,EAAGrB,EAAKjqB,EAAS3B,MAAME,YAAa+sB,EAAKrB,EAAG/sB,OAAQouB,IAE9D,IAAK,IAAIC,EAAK,EAAGC,EADAvB,EAAGqB,GACa5sB,MAAO6sB,EAAKC,EAAGtuB,OAAQquB,IAAM,CAC1D,IAAI5sB,EAAO6sB,EAAGD,GACdnoB,KAAKupB,kBAAkB1sB,EAAYtB,EAAMiU,GAGjD,GAAIxP,KAAKjD,eAAiBC,eAAaQ,WACnC,GAAIZ,EAAS3B,MAAMwC,oBAC2B,IAAtC+R,EAAS3R,OAAO2d,mBAChBxb,KAAKyb,qBAAqBjM,OAG7B,CACD,IAAIkM,EAAmBlM,EAAS3R,OAAOP,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6e,IAC3EgC,GAA2D,IAAvCA,EAAiBF,mBACrCE,EAAiB3P,SAErB,IAAIwM,EAAiB/I,EAAS3R,OAAOP,cAAc,IAAM0C,KAAKpF,KAAKb,SAAS6C,EAASpB,SAASxB,WAAY,KAAKa,GAAK6d,IAChHH,GAAuD,IAArCA,EAAeiD,mBACjCjD,EAAexM,SAI3B,IAAI4D,EAAW9S,EAAWS,cAAc,IAAMqe,GAC1ChM,GACAA,EAAS5D,SAGjB,IAAIqd,EAAeppB,KAAKpF,KAAKgC,EAASpB,UAAUR,OAAOkb,QACvDkT,EAAa7E,OAAO3nB,EAASnB,WAAY,GACzCuE,KAAKpF,KAAKgC,EAASpB,UAAUa,eAAgBrB,OAAQouB,IAAgB,GACjEppB,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,kBAYb/E,EAAOxR,UAAUooB,cAAgB,SAAU7N,EAASvgB,EAAYkD,EAAUyqB,GACtE,IAAInsB,EAAWf,EAASmE,KAAKpF,KAAM+gB,GACnC,GAAK/e,IAG+B,QAA/BA,EAAS3B,MAAMmjB,aAAiE,IAAtCxhB,EAAS3B,MAAME,YAAYrB,QAA1E,CAGIkG,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAET,IAAIc,EAAoB7sB,EAAS3B,MAAME,YAAY+a,QAC/ChI,EAAQ5P,EAAW5E,EAAS+vB,EAAmB,SAAUhvB,GAAK,OAAOA,EAAEI,KAAOyD,KAAgB,EAClG4P,GAAoB,IAAXA,EAAgBub,EAAkB3vB,OAAUoU,GAAS6a,EAAU,EAAI,GAC5EU,EAAkBlF,OAAOrW,EAAO,EAAG9S,GACnCwB,EAAS3B,MAAMoB,eAAgBlB,YAAasuB,IAAqB,GACjEzpB,KAAKmW,SAASvZ,EAAS3B,MAAME,YAAYpB,SAASmU,EAAMlU,WAAY,MAAO,aAAc2hB,GACzF3b,KAAKqW,mBACL,IAAIxZ,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QACtD,GAA6B,KAAzB0C,EAAWtC,UAAkB,CAC7B,IAAImvB,EAAe9sB,EAAS3B,MAAME,YAAYpB,SAASmU,EAAMlU,WAAY,KACrE+B,EAAUiE,KAAKsmB,kBAAkBoD,GAAe9sB,EAAS3B,MAAMmjB,YAAaxhB,EAAS3B,MAAMJ,GAAI+B,EAAS3B,MAAM4D,OAAQjC,EAAS3B,MAAMwC,oBAAqBb,EAASpB,UAAU,GAC7KoB,EAAS3B,MAAMqiB,cACfzgB,EAAamD,KAAK5C,qBAAqBC,yBAAyBT,EAAUC,IAG9E,IAAIwsB,EAAY/qB,EAAWzB,EAAWS,cAAc,IAAMgB,GAAY,KAClE+qB,EACAA,EAAUtJ,sBAAsBgJ,EAAU,WAAa,cAAehtB,GAGtEc,EAAWS,cAAc,IAAMqe,EAAUtG,IAAsBzW,OAAO7C,GAG1EiE,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,kBASb/E,EAAOxR,UAAUuoB,iBAAmB,SAAUC,GAC1C,IAAIhtB,EAAWhB,EAAcoE,KAAKpF,KAAMgvB,GACxC,GAAKhtB,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAAI9rB,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QACtD,GAA6B,KAAzB0C,EAAWtC,UAAkB,CAC7B,IAAIgV,OAAkB,EAClBC,OAAW,EACXxP,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAEtF,IAAK,IAAIsqB,EAAK,EAAGrB,EAAKjqB,EAASxB,WAAWE,MAAO4sB,EAAKrB,EAAG/sB,OAAQouB,IAAM,CACnE,IAAI3sB,EAAOsrB,EAAGqB,GACdloB,KAAKupB,kBAAkB1sB,EAAYtB,EAAMiU,GAE7C,IAAIG,EAAW9S,EAAWS,cAAc,IAAMssB,GAC1Cja,GACAA,EAAS5D,SAGjB,IAAI8d,EAAcjtB,EAAS3B,MACvBwuB,EAAoBI,EAAY1uB,YAAY+a,QAChDuT,EAAkBlF,OAAO3nB,EAASlB,gBAAiB,GACnDmuB,EAAYxtB,eAAgBlB,YAAasuB,IAAqB,GAC1DzpB,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,kBAYb/E,EAAOxR,UAAU0oB,QAAU,SAAUF,EAAcruB,EAAM+C,EAAUyqB,GAC/D,IAAInsB,EAAWhB,EAAcoE,KAAKpF,KAAMgvB,GACxC,GAAKhtB,IAG+B,WAA/BA,EAAS3B,MAAMmjB,aAAmE,IAArCxhB,EAASxB,WAAWE,MAAMxB,QAA5E,CAGIkG,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAET,IAAIoB,EAAcntB,EAASxB,WAAWE,MAAM4a,QACxChI,EAAQ5P,EAAW5E,EAASqwB,EAAa,SAAUtvB,GAAK,OAAOA,EAAEI,KAAOyD,KAAgB,EAC5F4P,GAAoB,IAAXA,EAAgB6b,EAAYjwB,OAAUoU,GAAS6a,EAAU,EAAI,GACtEgB,EAAYxF,OAAOrW,EAAO,EAAG3S,GAC7BqB,EAASxB,WAAWiB,eAAgBf,MAAOyuB,IAAe,GAC1D/pB,KAAKmW,SAASvZ,EAASxB,WAAWE,MAAMvB,SAASmU,EAAMlU,WAAY,MAAO,OAAQ4vB,GAClF5pB,KAAKqW,mBACL,IAAIxZ,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QAClDuW,EAAiB7T,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6e,IACxE,GAA6B,KAAzB7c,EAAWtC,UAAkB,CAC7B,IAAIyvB,EAASptB,EAASxB,WAAWE,MAAMvB,SAASmU,EAAMlU,WAAY,KAC9D+B,EAAUiE,KAAKslB,aAAa0E,GAASptB,EAAS3B,MAAMmjB,YAAaxhB,EAAS3B,MAAMJ,GAAI+B,EAAS3B,MAAM4D,OAAQjC,EAAS3B,MAAMwC,oBAAqBb,EAASpB,SAAUkV,GAAgB,GAClL9T,EAAS3B,MAAMqiB,cACfzgB,EAAamD,KAAK5C,qBAAqBC,yBAAyBT,EAAUC,IAG9E,IAAIwsB,EAAY/qB,EAAWzB,EAAWS,cAAc,IAAMgB,GAAY,KAClE+qB,EACAA,EAAUxc,QAAQ,IAAM0N,IAAuBwF,sBAAsBgJ,EAAU,WAAa,cAAehtB,GAGvGA,GACAc,EAAWS,cAAc,IAAMssB,GAAchrB,OAAO7C,GAI5DiE,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,kBASb/E,EAAOxR,UAAU6oB,WAAa,SAAUC,GACpC,IAAIttB,EAAWjC,EAAQqF,KAAKpF,KAAMsvB,GAClC,GAAKttB,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAAI9rB,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QACtD,GAA6B,KAAzB0C,EAAWtC,UAAkB,CAC7B,IAAIgV,OAAkB,EAClBC,OAAW,EACXxP,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAEtF,IAAIrC,EAAOqB,EAASrB,KACpByE,KAAKupB,kBAAkB1sB,EAAYtB,EAAMiU,GAE7C,IAAI2a,EAAmBvtB,EAASxB,WAC5B2uB,EAAcI,EAAiB7uB,MACnCyuB,EAAYxF,OAAO3nB,EAASjB,UAAW,GACvCwuB,EAAiB9tB,eAAgBf,MAAOyuB,IAAe,GACnD/pB,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,kBASb/E,EAAOxR,UAAUgpB,UAAY,SAAUtvB,GACnC,IAAI+tB,EAAQ/tB,EAAID,GACZqT,EAAQxU,EAASsG,KAAKpF,KAAM,SAAUH,GAAK,OAAOA,EAAEI,KAAOguB,IAC/D,IAAe,IAAX3a,EAAJ,CAGA,IAAIrR,EAAamD,KAAKlD,OAAOxB,MAAMvB,SAASmU,EAAMlU,WAAY,KAAKG,QAC/Da,EAASgF,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKgB,OACnDob,EAASpW,KAAKlD,OAAOf,QACzB,GAAIf,GAAoC,KAAzB6B,EAAWtC,YAElBO,EAAIoD,UACA8B,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKkE,WAC1CrB,EAAWiP,UAAUC,OAAO/L,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKkE,UACtEkY,EAAO9Y,cAAc,aAAawO,UAAUC,OAAO/L,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAAKkE,WAIjGpD,EAAIE,QAAQ,CACZ,IAAK,IAAIktB,EAAK,EAAGmC,EAAWrvB,EAAQktB,EAAKmC,EAASvwB,OAAQouB,IAAM,CAG5D,IAAK,IAFDjtB,EAAQovB,EAASnC,GACjB3Y,EAAkBtU,EAAMqiB,YAAczgB,EAAWS,cAAc,IAAMrC,EAAMJ,GAAK6d,GAAwByI,IAAyB,KAC5H0F,EAAK,EAAGsB,EAAKltB,EAAME,YAAa0rB,EAAKsB,EAAGruB,OAAQ+sB,IAErD,IAAK,IAAIuB,EAAK,EAAGC,EADAF,EAAGtB,GACavrB,MAAO8sB,EAAKC,EAAGvuB,OAAQsuB,IAAM,CAC1D,IAAI7sB,EAAO8sB,EAAGD,GACV7qB,EAAMgS,EAAkBvP,KAAK5C,qBAAqB4T,kBAAkBzB,EAAiBhU,EAAKV,IAAMgC,EAAWS,cAAc,IAAM/B,EAAKV,IACpI0C,GACAyC,KAAKolB,gBAAgB7pB,EAAMgC,GAInCgS,GACAvP,KAAK5C,qBAAqB0T,uBAAuBvB,GAGrC1S,EAAWqT,iBAAiB,mBAElCoa,QAAQ,SAAU3a,GAAYA,EAAS5D,WAGzDmC,IAAUlO,KAAKoV,cACfpV,KAAKoT,aAAc,GAEvB,IAAIkP,EAAYtiB,KAAKpF,KAAKb,SAASmU,EAAMlU,WAAY,KAIrD,GAHAsoB,EAAUjmB,cAAcvB,GAAK,GAC7BkF,KAAK3D,eAAgBrB,OAAQgF,KAAKmW,QAAQmM,EAAUtnB,OAAQ,QAASsnB,EAAUznB,MAAO,GACtFmF,KAAKqW,mBACwB,KAAzBxZ,EAAWtC,UAAkB,CAE7B,GAAIO,EAAIE,OAAQ,CACZ,IAAIonB,EAAWpiB,KAAKqiB,aAAaC,EAAUtnB,OAAQkT,GACnDtP,SAAOwjB,EAAUvlB,GAEjBmD,KAAKoV,cAAgBlH,GACrBlO,KAAK2X,gBAGL7c,EAAIoD,WACJrB,EAAWiP,UAAUK,IAAImW,EAAUpkB,UACnCkY,EAAO9Y,cAAc,aAAawO,UAAUK,IAAImW,EAAUpkB,WAG1DpD,EAAI+D,SACJuX,EAAO9Y,cAAc,IAAMurB,EAAQtG,IAAqBgI,UAAYjI,EAAUzjB,WAU1F+T,EAAOxR,UAAUopB,YAAc,SAAUvvB,GACrC,IAAI0gB,EAAU1gB,EAAMJ,GAChB+B,EAAWf,EAASmE,KAAKpF,KAAM+gB,GACnC,GAAK/e,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAGIpZ,EACAC,EAJA3S,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QAClDwV,EAAW9S,EAAWS,cAAc,IAAMqe,GAC1CjL,EAAiBf,EAASrS,cAAc,IAAMrC,EAAMJ,GAAK6e,IAG7D,GAA6B,KAAzB7c,EAAWtC,UAAkB,CAmB7B,GAlBIqC,EAAS3B,MAAMorB,kBACfrmB,KAAKwoB,mBAAmB5rB,EAAS3B,MAAMJ,GAAI,KAAMgC,GAEjDmD,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAGlF3C,EAAMiD,UACFtB,EAAS3B,MAAMiD,WACfyR,EAAS7D,UAAUC,OAAOnP,EAAS3B,MAAMiD,UACrCwS,GACAA,EAAe5E,UAAUC,OAAOnP,EAAS3B,MAAMiD,YAKvDjD,EAAME,aAAeF,EAAMmjB,eACvBxhB,EAAS3B,MAAME,aAAeyB,EAAS3B,MAAMmjB,aAAa,CAC1D,IAAK,IAAI8J,EAAK,EAAGrB,EAAKjqB,EAAS3B,MAAME,YAAa+sB,EAAKrB,EAAG/sB,OAAQouB,IAE9D,IAAK,IAAIC,EAAK,EAAGC,EADAvB,EAAGqB,GACa5sB,MAAO6sB,EAAKC,EAAGtuB,OAAQquB,IAAM,CAC1D,IAAI5sB,EAAO6sB,EAAGD,GACdnoB,KAAKupB,kBAAkB1sB,EAAYtB,EAAMiU,GAMjD,GAHyBG,EAASO,iBAAiB,wBAEhCoa,QAAQ,SAAUpQ,GAAiBA,EAAcnO,WAChE9Q,EAAMmjB,YAAa,CACnB,IACIqM,GADA3F,EAAepU,EAAepT,cAAc,4BACnBwO,UAAUhJ,MAAM4nB,MAAM,6BAC/CD,GACAE,eAAa7F,GAAe2F,IAK5C,GAAIzqB,KAAKjD,eAAiBC,eAAaQ,WACnC,GAAIZ,EAAS3B,MAAMwC,oBAC2B,IAAtC+R,EAAS3R,OAAO2d,mBAChBxb,KAAKyb,qBAAqBjM,OAG7B,CACD,IAAIkM,EAAmBlM,EAAS3R,OAAOP,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6e,IAC3EgC,GAA2D,IAAvCA,EAAiBF,mBACrCE,EAAiB3P,SAErB,IAAIwM,EAAiB/I,EAAS3R,OAAOP,cAAc,IAAM0C,KAAKpF,KAAKb,SAAS6C,EAASpB,SAASxB,WAAY,KAAKa,GAAK6d,IAChHH,GAAuD,IAArCA,EAAeiD,mBACjCjD,EAAexM,UAK/B,IAAI6e,EAAchuB,EAAS3B,MAI3B,GAHA2vB,EAAYvuB,cAAcpB,GAAO,GACjC2vB,EAAYvuB,eAAgBlB,YAAa6E,KAAKmW,QAAQyU,EAAYzvB,YAAa,aAAcyvB,EAAY/vB,MAAO,GAChHmF,KAAKqW,mBACwB,KAAzBxZ,EAAWtC,UAAkB,CAM7B,GAJIU,EAAMorB,kBACNrmB,KAAK2lB,mBAAmBiF,EAAY/vB,GAAI6V,GAGxCzV,EAAME,aAAeF,EAAMmjB,YAAa,CACxC,IAAI0G,GAAAA,EAAepU,EAAepT,cAAc,4BACnCwO,UAAUK,IAAkC,WAA5Bye,EAAYxM,aAAoD,eAAtBpe,KAAKjD,aAAkCioB,GAA0BlH,IACxI,IAAIsE,EAAWpiB,KAAKsmB,iBAAiBsE,EAAYzvB,YAAayvB,EAAYxM,YAAawM,EAAY/vB,GAAI+vB,EAAY/rB,OAAQ+rB,EAAYntB,oBAAqBb,EAASpB,SAAUkV,GAC/K9R,SAAOwjB,EAAU0C,GAarB,GAXI9kB,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,gBAGL1c,EAAMiD,WACNyR,EAAS7D,UAAUK,IAAIye,EAAY1sB,UAC/BwS,GACAA,EAAe5E,UAAUK,IAAIye,EAAY1sB,WAI7CjD,EAAM4D,OACN,GAAImB,KAAKjD,eAAiBC,eAAaQ,YAAevC,EAAMwC,oBAMvD,GAAIuC,KAAKjD,eAAiBC,eAAaC,SAAY2tB,EAAYtN,aAG/D,GAAItd,KAAKjD,eAAiBC,eAAaC,SAAW2tB,EAAYtN,YAAa,CAC5E,IAAI1N,EAAcD,EAASrS,cAAc,IAAMstB,EAAY/vB,GAAK6d,GAAwByI,KAGpF0J,EADcxP,cAAYzL,EAAajS,kBACVE,OAAOP,cAAc,IAAMrC,EAAMJ,GAAK0nB,OAEnEsI,EAAeN,UAAYK,EAAY/rB,cAR3C8Q,EAASrS,cAAc,0BAA0BitB,UAAYK,EAAY/rB,WAPI,CAC7E,IAAIgsB,GAAAA,EAAiBrb,EAAS3R,OAAOP,cAAc,IAAMrC,EAAMJ,GAAK0nB,OAEhEsI,EAAeN,UAAYK,EAAY/rB,YAwB3D+T,EAAOxR,UAAU0pB,iBAAmB,SAAU1vB,GAC1C,IAAIwuB,EAAexuB,EAAWP,GAC1B+B,EAAWhB,EAAcoE,KAAKpF,KAAMgvB,GACxC,GAAKhtB,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAAI9rB,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QAClD+f,EAAgBrd,EAAWS,cAAc,IAAMssB,GACnD,GAA6B,KAAzB/sB,EAAWtC,UAAkB,CAC7B,IAAIgV,OAAkB,EAClBC,OAAW,EAYf,GAXIxP,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAGlFxC,EAAW8C,UACPtB,EAASxB,WAAW8C,UACpBgc,EAAcpO,UAAUC,OAAOnP,EAASxB,WAAW8C,UAGvD9C,EAAWE,OACPsB,EAASxB,WAAWE,MACpB,IAAK,IAAI4sB,EAAK,EAAGrB,EAAKjqB,EAASxB,WAAWE,MAAO4sB,EAAKrB,EAAG/sB,OAAQouB,IAAM,CACnE,IAAI3sB,EAAOsrB,EAAGqB,GACdloB,KAAKupB,kBAAkB1sB,EAAYtB,EAAMiU,IAKzD,IAAIub,EAAmBnuB,EAASxB,WAIhC,GAHA2vB,EAAiB1uB,cAAcjB,GAAY,GAC3C2vB,EAAiB1uB,eAAgBf,MAAO0E,KAAKmW,QAAQ4U,EAAiBzvB,MAAO,OAAQyvB,EAAiBlwB,MAAO,GAC7GmF,KAAKqW,mBACwB,KAAzBxZ,EAAWtC,WACPa,EAAWE,MAAO,CAClB,IAAIoV,EAAiB7T,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6e,IACpE0I,EAAWpiB,KAAKslB,YAAYyF,EAAiBzvB,MAAOsB,EAAS3B,MAAMmjB,YAAaxhB,EAAS3B,MAAMJ,GAAI+B,EAAS3B,MAAM4D,OAAQjC,EAAS3B,MAAMwC,oBAAqBb,EAASpB,SAAUkV,GACrL9R,SAAOwjB,EAAUlI,GAGrBla,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,gBAGLvc,EAAW8C,UACXgc,EAAcpO,UAAUK,IAAI4e,EAAiB7sB,YASrD0U,EAAOxR,UAAU4pB,WAAa,SAAUzvB,GACpC,IAAI2uB,EAAS3uB,EAAKV,GACd+B,EAAWjC,EAAQqF,KAAKpF,KAAMsvB,GAClC,GAAKttB,EAAL,CAGIoD,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2oB,sBAGT,IAKIpZ,EACAC,EANA3S,EAAamD,KAAKlD,OAAOxB,MAAMsB,EAASpB,UAAUrB,QAElDuW,EADW7T,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,IAC/ByC,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6e,IAClEE,EAAgB,KAChBtR,EAAU,KAGd,GAA6B,KAAzBzL,EAAWtC,UAAkB,CAM7B,GALIyF,KAAKjD,eAAiBC,eAAaQ,aAGnCgS,GAFAD,EAAkB3S,EAAS3B,MAAMwC,oBAC7BZ,EAAWS,cAAc,IAAMV,EAAS3B,MAAMJ,GAAK6C,IAA+B,MACzDzB,eAAasT,EAAiB5R,kBAAkBqC,KAAKpC,aAElFoC,KAAKjD,eAAiBC,eAAaQ,YAAcZ,EAASrB,KAAK2B,iBAAmBC,cAAYgd,UAG9F,GAFAP,EAAgBpK,EAAS3R,OAAOP,cAAc,IAAM4sB,EAASxQ,IAC7DpR,EAAUkH,EAAS3R,OAAOP,cAAc,IAAM4sB,GAC1C3uB,EAAK2B,gBAAkB3B,EAAK2B,iBAAmBC,cAAYgd,SAAU,CACrE,IAAID,EAAgBxJ,EAAepT,cAAc,IAAMV,EAASxB,WAAWP,IACvEqf,GACAA,EAAclb,YAAY4a,SAKlCA,EAAgBlJ,EAAepT,cAAc,IAAM4sB,EAASxQ,IAC5DpR,EAAUzL,EAAWS,cAAc,IAAM4sB,GACrClqB,KAAKjD,eAAiBC,eAAaQ,YAAcjC,EAAK2B,iBAAmBC,cAAYgd,WACrFna,KAAKoa,oBAAoBxd,EAASrB,KAAMqB,EAASpB,SAAUoB,EAAS3B,MAAMwC,oBAAqBb,EAAS3B,MAAMJ,GAAI+B,EAAS3B,MAAM4D,OAAQ+a,EAAelJ,GACnJ9T,EAASrB,KAAKkO,OAASlJ,iBAAe8Z,UAAczd,EAASrB,KAAKkO,OAASlJ,iBAAe0R,aAC3FjS,KAAKsa,iBAAiB1d,EAASrB,KAAMqe,EAAehd,EAAS3B,MAAMwC,qBAAqB,IAKhGlC,EAAK2C,UACDtB,EAASrB,KAAK2C,UACd0b,EAAc9N,UAAUC,OAAOnP,EAASrB,KAAK2C,UAGrD8B,KAAKolB,gBAAgBxoB,EAASrB,KAAM+M,GACpCA,EAAQyD,SACR,IAAI0e,EAAY7Q,EAAc9N,UAAUhJ,MAAM4nB,MAAM,0CAChDD,GACAE,eAAa/Q,GAAgB6Q,GAGrC,IAAI5Z,EAAajU,EAASrB,KAG1B,GAFAsV,EAAWxU,cAAcd,GAAM,GAC/ByE,KAAKqW,mBACwB,KAAzBxZ,EAAWtC,UAAkB,CAEzBqf,EADE5Z,KAAKjD,eAAiBC,eAAaQ,YAAcqT,EAAW3T,iBAAmBC,cAAYgd,SAC7EzJ,EAAepT,cAAc,IAAM4sB,EAASxQ,IAG5ClK,EAAS3R,OAAOP,cAAc,IAAM4sB,EAASxQ,IAG7D7I,EAAWmW,uBAAyBlpB,EAAiB+S,EAAWmW,yBAChEpN,EAAc9N,UAAUK,IAAItM,IAC5BG,KAAK3B,YAAYuT,MAAO/W,GAAI+e,EAAc/e,GAAI2D,KAAMqS,EAAWmW,yBAEnE,IAAI3B,EAAOxU,EAAW7H,WACI,eAAtBhJ,KAAKjD,eACLsoB,EAASxU,EAAW8I,eAAiBrZ,iBAAemD,OAAWoN,EAAW8I,aAAerZ,iBAAeiD,QACnGsN,EAAW3T,iBAAmBC,cAAYgd,SAAa7Z,iBAAeiD,OAASjD,iBAAekD,MACnGqN,EAAWxU,eAAgB2M,WAAYqc,IAAQ,IAE/CA,EAAO/kB,iBAAemD,MACtBmW,EAAc9N,UAAUK,IAAIkU,GAA6BD,IAGzDxG,EAAc9N,UAAUK,IAAKkZ,EAAO/kB,iBAAeiD,OAAU+c,GAA+BC,IAEhGvgB,KAAK4mB,iBAAiB/V,EAAY+I,GACR,eAAtB5Z,KAAKjD,cAAiCH,EAAS3B,MAAMwC,qBACX,IAAtC+R,EAAS3R,OAAO2d,mBAChBxb,KAAKyb,qBAAqBjM,GAG9BxP,KAAKoV,cAAgBxY,EAASpB,UAC9BwE,KAAK2X,gBAELpc,EAAK2C,UACL0b,EAAc9N,UAAUK,IAAI0E,EAAW3S,UAE3C8B,KAAKirB,kBAAkBpa,EAAWhW,GAAIgW,EAAWpU,aAGzDmW,EAAOxR,UAAUmoB,kBAAoB,SAAU1sB,EAAYtB,EAAMiU,GAC7D,IAAIjS,EAAM,KACNyC,KAAKjD,eAAiBC,eAAaC,QACnCM,EAAOhC,EAAK2B,eAAiBC,cAAYF,QAAWJ,EAAWS,cAAc,IAAM/B,EAAKV,IAAM,MAI9F0C,EAAOhC,EAAK2B,eAAiBC,cAAYK,WAAcX,EAAWS,cAAc,IAAM/B,EAAKV,IAAM,QAG7F0C,EAAMiS,EAAS3R,OAAOP,cAAc,IAAM/B,EAAKV,KAGnD0C,IACAyC,KAAKolB,gBAAgB7pB,EAAMgC,GAC3BA,EAAIsP,QAAQ,IAAMtR,EAAKV,GAAK6e,IAAwB3N,WAS5D6G,EAAOxR,UAAU8pB,WAAa,SAAUhB,GACpClqB,KAAKirB,kBAAkBf,GAAQ,IAQnCtX,EAAOxR,UAAU+pB,YAAc,SAAUjB,GACrClqB,KAAKirB,kBAAkBf,GAAQ,IAEnCtX,EAAOxR,UAAU6pB,kBAAoB,SAAUf,EAAQkB,GACnD,IAAIxuB,EAAWjC,EAAQqF,KAAKpF,KAAMsvB,GAClC,GAAKttB,EAAL,CAGAA,EAASrB,KAAKc,eAAgBI,SAAU2uB,IAAc,GACtD,IAAI7tB,EAAMb,EAAesD,KAAMkqB,EAAQttB,GACvC,GAAIW,EAAK,CACSsP,UAAQtP,EAAK,kBACnBuO,UAAUnC,OAAOod,GAAwBnqB,EAASrB,KAAKkB,UAC/D,IAAIT,EAAagE,KAAKuoB,kBAAkB3rB,EAASrB,MAC9B,aAAfS,EACAM,EAAsBiB,EAAKvB,EAAYovB,IAGvC7tB,EAAIuO,UAAUnC,OAAOod,GAAwBqE,GAC7C7tB,EAAI8tB,gBAAgB,WAAYD,OAI5CxY,EAAOxR,UAAUkqB,aAAe,WAC5Bjf,eAAaN,OAAO8I,OAAQ,SAAU7U,KAAK8U,gBAE/ClC,EAAOxR,UAAUlF,QAAU,WACvB8D,KAAK+U,qBAAqB7Y,UAC1B8D,KAAK+U,qBAAuB,KAC5B7U,EAAeF,KAAKjE,SACpBiE,KAAKykB,gBAAgBzkB,KAAKpF,MAC1BoF,KAAKskB,uBACLtkB,KAAKkc,oBAAiBqP,EAClBvrB,KAAK4V,cACL5V,KAAK4V,aAAa1Z,UAElB8D,KAAKonB,gBACLrb,SAAO/L,KAAKonB,eACZpnB,KAAKonB,cAAgB,MAEzBllB,EAAOd,UAAUlF,QAAQmG,KAAKrC,MAC9BA,KAAKlD,OAAOZ,UACZ8D,KAAKlD,YAASyuB,EACdxf,SAAO/L,KAAKjE,QAAQuB,cAAc,IAAM0C,KAAKjE,QAAQlB,GPx+FzC,SOy+FZmF,KAAKjE,QAAQmY,MAAM8G,eAAe/D,IAClCjX,KAAKjE,QAAQmY,MAAM8G,eAAe9D,IAClClX,KAAKjE,QAAQmY,MAAM8G,eAAe,SAC9Bhb,KAAK9B,UACLysB,eAAa3qB,KAAKjE,SAAUiE,KAAK9B,SAAS2L,MP3kGnC,MO6kGX7J,KAAKjE,QAAQ+P,UAAUC,OAAOkI,GAAmByO,GAAkCQ,GAA2BkB,GAA8B9M,GAA2B,SACvKtX,KAAKsrB,gBAUT1Y,EAAOxR,UAAUoqB,kBAAoB,SAAUC,EAASC,GAEpD,IAAK,IADD7E,EAAIsB,EACCD,EAAK,EAAGE,EAAKxnB,OAAO+qB,KAAKF,GAAUvD,EAAKE,EAAGtuB,OAAQouB,IAAM,CAE9D,OADWE,EAAGF,IAEV,IAAK,eACDloB,KAAK6X,eACL,MACJ,IAAK,WACG6T,EAAQxtB,WACP2oB,EAAK7mB,KAAKjE,QAAQ+P,WAAWC,OAAO5J,MAAM0kB,EAAI6E,EAAQxtB,SAAS2L,MPlmGrE,MOomGK4hB,EAAQvtB,WACPiqB,EAAKnoB,KAAKjE,QAAQ+P,WAAWK,IAAIhK,MAAMgmB,EAAIsD,EAAQvtB,SAAS2L,MPrmGlE,MOumGC,MACJ,IAAK,cACD7J,KAAKjE,QAAQ+P,UAAUnC,OAAO2N,GAA2BtX,KAAKqX,aAC9DrX,KAAKlD,OAAOf,QAAQuB,cAAc,cAAc4W,MAAMwD,QAAU1X,KAAKqX,YAAc,OAAS,QACvFrX,KAAKqX,aACNrX,KAAK2X,gBAET,MACJ,IAAK,SACD3X,KAAK7D,sBAAuByM,OAAQ5I,KAAK4I,SACzC,MACJ,IAAK,oBACD5I,KAAK7D,sBAAuB2M,kBAAmB9I,KAAK8I,oBACpD,MACJ,IAAK,YACD9I,KAAKjE,QAAQ+P,UAAUnC,OAAOsK,GAAmBjU,KAAK6I,WACtD7I,KAAK7D,sBAAuB0M,UAAW4iB,EAAQ5iB,YAC3C7I,KAAK4V,cACL5V,KAAK4V,aAAavZ,eAAgBwM,UAAW4iB,EAAQ5iB,YAEzD,MACJ,IAAK,kBACD,IAAK,IAAIhP,EAAI,EAAGA,EAAImG,KAAKpF,KAAKd,OAAQD,IAAK,CACvC,IAAI+e,EAAa5Y,KAAKlD,OAAOxB,MAAMvB,SAASF,EAAEG,WAAY,KAAKG,QAC3DW,EAAMkF,KAAKpF,KAAKb,SAASF,EAAEG,WAAY,KAC3C,GAAI4e,EAAWtb,cAAc,IAAM6kB,IAC/B,IAAK,IAAIkG,EAAK,EAAGC,EAAKxtB,EAAIE,OAAQqtB,EAAKC,EAAGxuB,OAAQuuB,IAAM,CACpD,IAAIptB,EAAQqtB,EAAGD,GACf,GAAIptB,EAAMorB,iBAAkB,CACxB,IAAIvnB,EAAY+mB,GAAqC,KAAO7lB,KAAK8lB,iBAAmBC,IACpF,GAAI9qB,EAAMqiB,YAAa,CACnB,IAAIvhB,EAAU6c,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAK6d,GAAwByI,IACjEllB,eAAaF,EAAS4B,kBACNE,OAAOP,cAAc,IAAMrC,EAAMJ,GAAKmrB,IACrDlnB,UAAYA,MAE3B,EACG/C,EAAU6c,EAAWtb,cAAc,IAAMrC,EAAMJ,GAAKmrB,KAChDlnB,UAAYA,KAMxC,MACJ,IAAK,cACDkB,KAAKlD,OAAOT,eAAgBoa,aAAcgV,EAAQrW,cAClD,MACJ,IAAK,eACDpV,KAAKlD,OAAOT,eAAgBuvB,UAAWH,EAAQI,eAC/C,MACJ,IAAK,OACD7rB,KAAKwkB,eACL,MACJ,IAAK,QACDxkB,KAAKjE,QAAQmY,MAAMxF,MAAQyF,aAAWsX,EAAQ/c,OAC9C1O,KAAK2X,gBACL,MACJ,IAAK,WACG3X,KAAKqU,sBACLrU,KAAKqU,qBAAqByX,eAAe9rB,KAAKuU,UAEjCvU,KAAKlD,OAAc,MACzB2X,kBACX,MACJ,IAAK,mBACGzU,KAAKonB,gBACLrb,SAAO/L,KAAKonB,eACZpnB,KAAKonB,cAAgB,KACrBpnB,KAAKlD,OAAOf,QAAQmY,MAAM8C,YAAYE,GAA2C,QAEjFlX,KAAKinB,kBACLjnB,KAAKwU,yBAEOxU,KAAKlD,OAAc,MACzB2X,qBAK1B,IAAI3B,EAoDJ,OAnDAxR,IACIgB,WAAS,YACVsQ,EAAOxR,UAAW,oBAAgB,GACrCE,IACIgB,WAAS,KACVsQ,EAAOxR,UAAW,gBAAY,GACjCE,IACIsB,aAAYkB,KACb8O,EAAOxR,UAAW,gBAAY,GACjCE,IACIgB,WAAS,KACVsQ,EAAOxR,UAAW,uBAAmB,GACxCE,IACIgB,YAAS,IACVsQ,EAAOxR,UAAW,mBAAe,GACpCE,IACIgB,WAAS,UACVsQ,EAAOxR,UAAW,cAAU,GAC/BE,IACIgB,WAAS,IACVsQ,EAAOxR,UAAW,mBAAe,GACpCE,IACIsB,aAAYmpB,yBACbnZ,EAAOxR,UAAW,oBAAgB,GACrCE,IACI4B,gBAAeW,KAChB+O,EAAOxR,UAAW,YAAQ,GAC7BE,IACIgB,WAAS,SACVsQ,EAAOxR,UAAW,aAAS,GAC9BE,IACIgB,WAAS,KACVsQ,EAAOxR,UAAW,wBAAoB,GACzCE,IACIiB,WACDqQ,EAAOxR,UAAW,oBAAgB,GACrCE,IACIiB,WACDqQ,EAAOxR,UAAW,mBAAe,GACpCE,IACIiB,WACDqQ,EAAOxR,UAAW,uBAAmB,GACxCE,IACIiB,WACDqQ,EAAOxR,UAAW,wBAAoB,GACzCE,IACIiB,WACDqQ,EAAOxR,UAAW,yBAAqB,GAC1CwR,EAASE,EAAWxR,IAChB0qB,yBACDpZ,IAELqZ,aC5vGEC,GAAgC,WAChC,SAASA,EAAevvB,GACpBqD,KAAKrD,OAASA,EAmTlB,OAjTAuvB,EAAe9qB,UAAUgH,cAAgB,WACrC,MAAO,kBAEX8jB,EAAe9qB,UAAUlF,QAAU,WAC3B8D,KAAKmsB,aACLnsB,KAAKosB,aAETpsB,KAAKrD,OAAS,MASlBuvB,EAAe9qB,UAAUkT,eAAiB,SAAU+X,GAChD,IAAI9jB,EAAQvI,KACZ,GAAKqsB,EAAgBC,QAArB,CAGAtsB,KAAKusB,WAAavsB,KAAKrD,OAAO+B,cAAc,UACxC7D,GAAImF,KAAKrD,OAAOZ,QAAQlB,GR8GH,cQ5GzB,IAAIub,EAASpW,KAAKrD,OAAOG,OAAOf,QAC5Bob,EAAaf,EAAO9Y,cAAc,cACtC8Y,EAAOrF,aAAa/Q,KAAKusB,WAAYpV,GACrCnX,KAAKmsB,YAAc,IAAIxuB,kBACnBxD,QAASkyB,EAAgBxpB,KACzBgG,UAAW7I,KAAKrD,OAAOkM,UACvB3K,SAAU,kCACViL,QAAS,WACLiN,EAAOlC,MAAM8C,YAAYC,GAAkC1O,EAAMgkB,WAAWvW,YAAc,OAE9FpK,YAAa5L,KAAKwsB,eAAezsB,KAAKC,MAAM,GAC5CgM,WAAYhM,KAAKwsB,eAAezsB,KAAKC,MAAM,GAC3C4M,MAAO5M,KAAKysB,cAAc1sB,KAAKC,MAAM,GACrCkM,KAAMlM,KAAKysB,cAAc1sB,KAAKC,MAAM,IACrCA,KAAKusB,YACJvsB,KAAKrD,OAAO4X,SAASmY,cACrB1sB,KAAKmsB,YAAY9vB,eAAgBwB,OAAQmC,KAAKrD,OAAO4X,SAASmY,gBAG9D1sB,KAAK2sB,iBAAiBN,GAE1BrsB,KAAKrD,OAAOG,OAAO8vB,yBACnB5sB,KAAK6sB,mBAAmBR,KAE5BH,EAAe9qB,UAAUyrB,mBAAqB,SAAUR,GAChDvuB,EAAiBuuB,EAAgBrF,yBACjChnB,KAAKusB,WAAWzgB,UAAUK,IAAItM,IAC9BG,KAAKrD,OAAO0B,YAAYuT,MAAO/W,GAAImF,KAAKusB,WAAW1xB,GAAI2D,KAAM6tB,EAAgBrF,0BAGrFkF,EAAe9qB,UAAUorB,eAAiB,SAAUM,EAAQ1uB,IAEnD0uB,GAAU1uB,EAAKuO,OAASvO,EAAKuO,MAAM9O,OAAOgP,QAAQ,oBACnDzO,EAAKyR,QAAS,GAElB,IAAIlD,EAAQmgB,EAAS9sB,KAAKrD,OAAO4X,SAASvI,WACtChM,KAAKrD,OAAO4X,SAAS3I,YACzB,GAAIe,EAAO,CACP,IAAIuL,GAAcrI,OAAQzR,EAAKyR,OAAQ9T,QAASqC,EAAKrC,QAAS4Q,MAAOvO,EAAKuO,OAC1EA,EAAMtK,KAAKrC,KAAMkY,GACjB9Z,EAAKyR,OAASqI,EAAUrI,SAGhCqc,EAAe9qB,UAAUqrB,cAAgB,SAAUK,EAAQ1uB,IACzC0uB,EAAS9sB,KAAKmsB,YAAYtuB,OAASmC,KAAKmsB,YAAYpwB,SAC1D6U,QACR,IAAIjE,EAAQmgB,EAAS9sB,KAAKrD,OAAO4X,SAASrI,KAAOlM,KAAKrD,OAAO4X,SAAS3H,MACtE,GAAID,EAAO,CACP,IAAIuL,GAAcnc,QAASqC,EAAKrC,SAChC4Q,EAAMtK,KAAKrC,KAAMkY,KAIzBgU,EAAe9qB,UAAU2rB,cAAgB,SAAUzxB,GAE/C,IAAK,IADD0xB,KACKnzB,EAAI,EAAGA,EAAIyB,EAAMxB,OAAQD,IAAK,CACnC,IAAI0B,EAAOD,EAAMvB,SAASF,EAAEG,WAAY,KACxCgzB,EAAUpb,MACN5T,QAASzC,EAAKyC,QACdnD,GAAIU,EAAKV,GACToyB,UAAW1xB,EAAK0xB,UAChBpqB,KAAMtH,EAAKsH,KACXqqB,IAAK3xB,EAAK2xB,IACV5xB,MAAO0E,KAAK+sB,cAAcxxB,EAAKD,SAGvC,OAAO0xB,GAEXd,EAAe9qB,UAAUurB,iBAAmB,SAAUQ,GAClD,IAAI5kB,EAAQvI,KACRotB,EAASptB,KAAKrD,OAAO+B,cAAc,MACnC7D,GAAImF,KAAKrD,OAAOZ,QAAQlB,GAAKwyB,KAEjCrtB,KAAKmsB,YAAY9vB,eAAgBwB,OAAQuvB,IACzCptB,KAAKstB,SAAW,IAAIC,QAChBnP,YAAa,WACbvV,UAAW7I,KAAKrD,OAAOkM,UACvB3K,SAAU,gBACVsvB,kBAAmBL,EAAYK,kBAC/BlyB,MAAO0E,KAAK+sB,cAAcI,EAAYM,WACtCC,gBAAiBP,EAAYO,gBAC7BxzB,SAAUizB,EAAYhf,aACtBvC,YAAa5L,KAAK2tB,gBAAgB5tB,KAAKC,MAAM,GAC7CgM,WAAYhM,KAAK2tB,gBAAgB5tB,KAAKC,MAAM,GAC5CsP,iBAAkBtP,KAAKsP,iBAAiBvP,KAAKC,MAC7C4tB,QAAS5tB,KAAK6tB,eAAe9tB,KAAKC,MAAM,GACxC8tB,OAAQ9tB,KAAK6tB,eAAe9tB,KAAKC,MAAM,GACvC3F,OAAQ2F,KAAK+tB,WAAWhuB,KAAKC,OAC9BotB,GACH/gB,eAAaF,IAAIihB,EAAQ,UAAW,SAAU3yB,GAC5B,QAAVA,EAAE+G,KACF+G,EAAM4jB,YAAYxiB,UAEvB3J,OAEPksB,EAAe9qB,UAAUusB,gBAAkB,SAAUb,EAAQ1uB,GACzD,IAAIuO,EAAQmgB,EAAS9sB,KAAKrD,OAAO4X,SAASvI,WACtChM,KAAKrD,OAAO4X,SAAS3I,YACzB,GAAIe,EAAO,CACP,IAAIuL,GACArI,OAAQzR,EAAKyR,OAAQ9T,QAASqC,EAAKrC,QAAS4Q,MAAOvO,EAAKuO,MACxDrR,MAAO8C,EAAK9C,MAAO0yB,WAAY5vB,EAAK4vB,YAExCrhB,EAAMtK,KAAKrC,KAAMkY,GACjB9Z,EAAKyR,OAASqI,EAAUrI,SAGhCqc,EAAe9qB,UAAUysB,eAAiB,SAAUf,EAAQ1uB,GACxD,IAAIuO,EAAQmgB,EAAS9sB,KAAKrD,OAAO4X,SAASrI,KAAOlM,KAAKrD,OAAO4X,SAAS3H,MACtE,GAAID,EAAO,CACP,IAAIuL,GAAcnc,QAASqC,EAAKrC,QAAST,MAAO8C,EAAK9C,MAAO0yB,WAAY5vB,EAAK4vB,YAC7ErhB,EAAMtK,KAAKrC,KAAMkY,KAGzBgU,EAAe9qB,UAAUkO,iBAAmB,SAAUlR,GAClD,IAAIuO,EAAQ3M,KAAKrD,OAAO4X,SAASjF,iBACjC,GAAI3C,EAAO,CACP,IAAIuL,GAAcnc,QAASqC,EAAKrC,QAASR,KAAM6C,EAAK7C,MACpDoR,EAAMtK,KAAKrC,KAAMkY,KAGzBgU,EAAe9qB,UAAU2sB,WAAa,SAAU3vB,GAC5C,IAAIuO,EAAQ3M,KAAKrD,OAAO4X,SAASla,OACjC,GAAIsS,EAAO,CACP,IAAIuL,GAAcnc,QAASqC,EAAKrC,QAASR,KAAM6C,EAAK7C,KAAMoR,MAAOvO,EAAKuO,OACtEA,EAAMtK,KAAKrC,KAAMkY,GACZ9Z,EAAKrC,QAAQ+P,UAAUsE,SAAS,sBACjCpQ,KAAKmsB,YAAYxiB,WAW7BuiB,EAAe9qB,UAAU6mB,oBAAsB,SAAU7rB,GACjD4D,KAAKmsB,cACLnsB,KAAKmsB,YAAY9vB,cAAcD,GAC3B4D,KAAKstB,UACLttB,KAAKstB,SAASjxB,cAAcD,KAWxC8vB,EAAe9qB,UAAU0qB,eAAiB,SAAUO,GAC5CA,EAAgBC,QACZtsB,KAAKmsB,aACDE,EAAgBxpB,OAChB7C,KAAKmsB,YAAY9vB,eACblC,QAASkyB,EAAgBxpB,OAE7B7C,KAAKrD,OAAOG,OAAOf,QAAQmY,MAAM8C,YAAYC,GAAkCjX,KAAKusB,WAAWvW,YAAc,OAE7GqW,EAAgBK,eACZ1sB,KAAKstB,UACLttB,KAAKiuB,cAETjuB,KAAKmsB,YAAY9vB,eAAgBwB,OAAQwuB,EAAgBK,iBAGrD1sB,KAAKstB,SACLttB,KAAKstB,SAASjxB,eACVmxB,kBAAmBnB,EAAgBmB,kBACnClyB,MAAO0E,KAAK+sB,cAAcV,EAAgBoB,WAC1CC,gBAAiBrB,EAAgBqB,gBACjCxzB,SAAUmyB,EAAgBle,eAI9BnO,KAAK2sB,iBAAiBN,GAG9BrsB,KAAKkuB,wBACLluB,KAAK6sB,mBAAmBR,IAGxBrsB,KAAKsU,eAAe+X,GAGnBrsB,KAAKmsB,aACVnsB,KAAKosB,aAETpsB,KAAKrD,OAAOG,OAAO8vB,0BAEvBV,EAAe9qB,UAAU6sB,YAAc,WAC/BjuB,KAAKstB,WACLttB,KAAKstB,SAASpxB,UACd8D,KAAKstB,SAAW,OAGxBpB,EAAe9qB,UAAUgrB,WAAa,WAClCpsB,KAAKkuB,wBACQluB,KAAKrD,OAAOG,OAAOf,QACzBmY,MAAM8G,eAAe/D,IAC5BjX,KAAKiuB,cACLjuB,KAAKmsB,YAAYjwB,UACjB8D,KAAKmsB,YAAc,KACnBpgB,SAAO/L,KAAKusB,YACZvsB,KAAKusB,WAAa,MAEtBL,EAAe9qB,UAAU8sB,sBAAwB,WAC7C,IAAI3lB,EAAQvI,KACRkO,EAAQxU,EAASsG,KAAKrD,OAAO0B,YAAa,SAAU5D,GAAK,OAAOA,EAAEI,KAAO0N,EAAMgkB,WAAW1xB,MAC/E,IAAXqT,IACAlO,KAAKusB,WAAWzgB,UAAUC,OAAOlM,IACjCG,KAAKrD,OAAO0B,YAAYkmB,OAAOrW,EAAO,KAY9Cge,EAAe9qB,UAAUgQ,SAAW,SAAU9V,EAAOuC,EAAQkrB,EAASxX,GAC9DwX,EACA/oB,KAAKstB,SAASa,YAAY7yB,EAAOuC,EAAQ0T,GAGzCvR,KAAKstB,SAASvc,aAAazV,EAAOuC,EAAQ0T,GAE9CvR,KAAKrD,OAAO4X,SAASlY,eAAgBoxB,UAAWztB,KAAKstB,SAAShyB,QAAS,IAS3E4wB,EAAe9qB,UAAUkQ,YAAc,SAAUhW,EAAOiW,GACpDvR,KAAKstB,SAAShc,YAAYhW,EAAOiW,GACjCvR,KAAKrD,OAAO4X,SAASlY,eAAgBoxB,UAAWztB,KAAKstB,SAAShyB,QAAS,IAS3E4wB,EAAe9qB,UAAUgtB,YAAc,SAAU9yB,EAAOiW,GACpDvR,KAAKstB,SAASc,YAAY9yB,GAAO,EAAMiW,GACvCvR,KAAKrD,OAAO4X,SAASlY,eAAgBoxB,UAAWztB,KAAKstB,SAAShyB,QAAS,IAS3E4wB,EAAe9qB,UAAUitB,aAAe,SAAU/yB,EAAOiW,GACrDvR,KAAKstB,SAASc,YAAY9yB,GAAO,EAAOiW,GACxCvR,KAAKrD,OAAO4X,SAASlY,eAAgBoxB,UAAWztB,KAAKstB,SAAShyB,QAAS,IAU3E4wB,EAAe9qB,UAAUktB,QAAU,SAAU/yB,EAAMV,EAAI0W,GACnDvR,KAAKstB,SAASgB,QAAQ/yB,EAAMV,EAAI0W,GAChCvR,KAAKstB,SAASiB,UACdvuB,KAAKrD,OAAO4X,SAASlY,eAAgBoxB,UAAWztB,KAAKstB,SAAShyB,QAAS,IAEpE4wB,wORrSQ,yDAMK,uxBAgEI,uCAEK,0RAsBb,kBAEE,yBAEK,wBAEN,uMAoBY"}