@syncfusion/ej2-ribbon 28.2.3 → 29.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ej2-ribbon.umd.min.js +2 -2
- package/dist/ej2-ribbon.umd.min.js.map +1 -1
- package/dist/es6/ej2-ribbon.es2015.js +42 -13
- package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
- package/dist/es6/ej2-ribbon.es5.js +42 -13
- package/dist/es6/ej2-ribbon.es5.js.map +1 -1
- package/dist/global/ej2-ribbon.min.js +2 -2
- package/dist/global/ej2-ribbon.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/memory-leak-reports/ribbon/data/cur/browser-info.txt +9 -0
- package/memory-leak-reports/ribbon/data/cur/console-log.txt +94 -0
- package/memory-leak-reports/ribbon/data/cur/run-meta.json +43 -0
- package/memory-leak-reports/ribbon/data/cur/s1.heapsnapshot +253715 -0
- package/memory-leak-reports/ribbon/data/cur/s2.heapsnapshot +272568 -0
- package/memory-leak-reports/ribbon/data/cur/s3.heapsnapshot +272746 -0
- package/memory-leak-reports/ribbon/data/cur/screenshot-1.png +0 -0
- package/memory-leak-reports/ribbon/data/cur/screenshot-2.png +0 -0
- package/memory-leak-reports/ribbon/data/cur/screenshot-3.png +0 -0
- package/memory-leak-reports/ribbon/data/cur/snap-seq.json +39 -0
- package/memory-leak-reports/ribbon/data/logger/unique-trace-clusters/unique-clusters-summary.txt +0 -0
- package/memory-leak-reports/ribbon/data/out/leaks.txt +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Affiliation Database +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Affiliation Database-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/AutofillStrikeDatabase/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/AutofillStrikeDatabase/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/BudgetDatabase/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/BudgetDatabase/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/BudgetDatabase/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/01a3351331e45eec_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/0557f59ca4ce81a3_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/2665347ff9f9e056_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/2a44d43bc89516a4_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/912d9efe121f8828_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/ab5d908e56900116_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/c478bd3cd89f64b1_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/cd01f8ecbe88ba0c_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/e409bf2b70e09032_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/f2dbda05b15dc516_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/ClientCertificates/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/ClientCertificates/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/ClientCertificates/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/js/7d927a512c810e89_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/js/8996404c40fd561b_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/js/e75394e77b76f8a0_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/js/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/wasm/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/webui_js/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Code Cache/webui_js/index-dir/the-real-index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cookies +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Cookies-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DIPS +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnGraphiteCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnGraphiteCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnGraphiteCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnGraphiteCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnGraphiteCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnWebGPUCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnWebGPUCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnWebGPUCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnWebGPUCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/DawnWebGPUCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Rules/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Rules/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Rules/LOG +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Scripts/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Scripts/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Scripts/LOG +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension State/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension State/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension State/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension State/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Extension State/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Favicons +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Favicons-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/EventDB/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Feature Engagement Tracker/EventDB/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/GPUCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/GPUCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/GPUCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/GPUCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/GPUCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/History +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/History-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Local Storage/leveldb/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Local Storage/leveldb/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Local Storage/leveldb/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Local Storage/leveldb/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Login Data +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Login Data For Account +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Login Data For Account-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Login Data-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Network Action Predictor +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Network Action Predictor-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Network Persistent State +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/PersistentOriginTrials/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/PersistentOriginTrials/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/PersistentOriginTrials/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Preferences +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/PreferredApps +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/README +1 -0
- NEL +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Reporting and NEL-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/SCT Auditing Pending Reports +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Safe Browsing Cookies +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Safe Browsing Cookies-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Secure Preferences +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SegmentInfoDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SegmentInfoDB/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SegmentInfoDB/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalDB/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalDB/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalStorageConfigDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Session Storage/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Session Storage/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Session Storage/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Session Storage/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Session Storage/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sessions/Session_13386835147405945 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sessions/Session_13386835250939860 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sessions/Tabs_13386835248220400 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sessions/Tabs_13386835251027026 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shared Dictionary/cache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shared Dictionary/db +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shared Dictionary/db-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/SharedStorage +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shortcuts +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Shortcuts-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Site Characteristics Database/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Site Characteristics Database/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Site Characteristics Database/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Site Characteristics Database/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sync Data/LevelDB/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sync Data/LevelDB/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sync Data/LevelDB/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sync Data/LevelDB/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Top Sites +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Top Sites-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/TransportSecurity +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Trust Tokens +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Trust Tokens-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Visited Links +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/Web Data +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/WebStorage/QuotaManager +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/WebStorage/QuotaManager-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/chrome_cart_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/chrome_cart_db/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/chrome_cart_db/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/commerce_subscription_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/commerce_subscription_db/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/commerce_subscription_db/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/coupon_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/coupon_db/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/coupon_db/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/discounts_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/discounts_db/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/discounts_db/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/parcel_tracking_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/parcel_tracking_db/LOG +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/parcel_tracking_db/LOG.old +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/power_bookmarks/PowerBookmarks.db +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/power_bookmarks/PowerBookmarks.db-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/metadata/CURRENT +1 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/metadata/LOCK +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/metadata/LOG +3 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/metadata/LOG.old +2 -0
- package/memory-leak-reports/ribbon/data/profile/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/memory-leak-reports/ribbon/data/profile/Default/trusted_vault.pb +2 -0
- package/memory-leak-reports/ribbon/data/profile/DevToolsActivePort +2 -0
- package/memory-leak-reports/ribbon/data/profile/GrShaderCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GrShaderCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GrShaderCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GrShaderCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GrShaderCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/GraphiteDawnCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GraphiteDawnCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GraphiteDawnCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GraphiteDawnCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/GraphiteDawnCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Last Version +1 -0
- package/memory-leak-reports/ribbon/data/profile/Local State +1 -0
- package/memory-leak-reports/ribbon/data/profile/ShaderCache/data_0 +0 -0
- package/memory-leak-reports/ribbon/data/profile/ShaderCache/data_1 +0 -0
- package/memory-leak-reports/ribbon/data/profile/ShaderCache/data_2 +0 -0
- package/memory-leak-reports/ribbon/data/profile/ShaderCache/data_3 +0 -0
- package/memory-leak-reports/ribbon/data/profile/ShaderCache/index +0 -0
- package/memory-leak-reports/ribbon/data/profile/Variations +1 -0
- package/memory-leak-reports/ribbon/data/profile/first_party_sets.db +0 -0
- package/memory-leak-reports/ribbon/data/profile/first_party_sets.db-journal +0 -0
- package/memory-leak-reports/ribbon/data/profile/segmentation_platform/ukm_db +0 -0
- package/memory-leak-reports/ribbon/data/profile/segmentation_platform/ukm_db-wal +0 -0
- package/package.json +12 -12
- package/src/ribbon/items/ribbon-button.js +3 -1
- package/src/ribbon/items/ribbon-checkbox.js +3 -1
- package/src/ribbon/items/ribbon-colorpicker.js +3 -1
- package/src/ribbon/items/ribbon-dropdown.js +7 -1
- package/src/ribbon/items/ribbon-splitbutton.js +7 -1
- package/src/ribbon/modules/ribbon-keytip.d.ts +1 -0
- package/src/ribbon/modules/ribbon-keytip.js +19 -8
- package/styles/bds-lite.css +546 -451
- package/styles/bds.css +709 -590
- package/styles/bootstrap-dark-lite.css +531 -472
- package/styles/bootstrap-dark.css +694 -611
- package/styles/bootstrap-lite.css +511 -452
- package/styles/bootstrap.css +674 -591
- package/styles/bootstrap4-lite.css +517 -458
- package/styles/bootstrap4.css +680 -597
- package/styles/bootstrap5-dark-lite.css +559 -500
- package/styles/bootstrap5-dark.css +722 -639
- package/styles/bootstrap5-lite.css +539 -480
- package/styles/bootstrap5.3-lite.css +518 -459
- package/styles/bootstrap5.3.css +683 -600
- package/styles/bootstrap5.css +702 -619
- package/styles/fabric-dark-lite.css +527 -468
- package/styles/fabric-dark.css +690 -607
- package/styles/fabric-lite.css +518 -459
- package/styles/fabric.css +681 -598
- package/styles/fluent-dark-lite.css +517 -458
- package/styles/fluent-dark.css +680 -597
- package/styles/fluent-lite.css +517 -458
- package/styles/fluent.css +680 -597
- package/styles/fluent2-lite.css +530 -469
- package/styles/fluent2.css +721 -636
- package/styles/highcontrast-light-lite.css +514 -451
- package/styles/highcontrast-light.css +677 -590
- package/styles/highcontrast-lite.css +514 -451
- package/styles/highcontrast.css +677 -590
- package/styles/material-dark-lite.css +512 -453
- package/styles/material-dark.css +676 -593
- package/styles/material-lite.css +511 -452
- package/styles/material.css +674 -591
- package/styles/material3-dark-lite.css +511 -452
- package/styles/material3-dark.css +674 -591
- package/styles/material3-lite.css +511 -452
- package/styles/material3.css +674 -591
- package/styles/ribbon/_bds-definition.scss +6 -1
- package/styles/ribbon/_bigger.scss +79 -56
- package/styles/ribbon/_bootstrap-dark-definition.scss +10 -3
- package/styles/ribbon/_bootstrap-definition.scss +7 -2
- package/styles/ribbon/_bootstrap4-definition.scss +12 -5
- package/styles/ribbon/_bootstrap5-definition.scss +7 -2
- package/styles/ribbon/_bootstrap5.3-definition.scss +10 -5
- package/styles/ribbon/_fabric-dark-definition.scss +7 -2
- package/styles/ribbon/_fabric-definition.scss +7 -2
- package/styles/ribbon/_fluent-definition.scss +7 -2
- package/styles/ribbon/_fluent2-definition.scss +8 -3
- package/styles/ribbon/_fusionnew-definition.scss +6 -1
- package/styles/ribbon/_highcontrast-definition.scss +7 -2
- package/styles/ribbon/_highcontrast-light-definition.scss +7 -2
- package/styles/ribbon/_layout.scss +100 -58
- package/styles/ribbon/_material-dark-definition.scss +9 -4
- package/styles/ribbon/_material-definition.scss +7 -2
- package/styles/ribbon/_material3-definition.scss +7 -2
- package/styles/ribbon/_tailwind-definition.scss +7 -2
- package/styles/ribbon/_tailwind3-definition.scss +13 -8
- package/styles/ribbon/_theme.scss +108 -51
- package/styles/ribbon/bds.css +709 -590
- package/styles/ribbon/bootstrap-dark.css +694 -611
- package/styles/ribbon/bootstrap.css +674 -591
- package/styles/ribbon/bootstrap4.css +680 -597
- package/styles/ribbon/bootstrap5-dark.css +722 -639
- package/styles/ribbon/bootstrap5.3.css +683 -600
- package/styles/ribbon/bootstrap5.css +702 -619
- package/styles/ribbon/fabric-dark.css +690 -607
- package/styles/ribbon/fabric.css +681 -598
- package/styles/ribbon/fluent-dark.css +680 -597
- package/styles/ribbon/fluent.css +680 -597
- package/styles/ribbon/fluent2.css +721 -636
- package/styles/ribbon/highcontrast-light.css +677 -590
- package/styles/ribbon/highcontrast.css +677 -590
- package/styles/ribbon/material-dark.css +676 -593
- package/styles/ribbon/material.css +674 -591
- package/styles/ribbon/material3-dark.css +674 -591
- package/styles/ribbon/material3.css +674 -591
- package/styles/ribbon/tailwind-dark.css +710 -591
- package/styles/ribbon/tailwind.css +710 -591
- package/styles/ribbon/tailwind3.css +716 -597
- package/styles/tailwind-dark-lite.css +547 -452
- package/styles/tailwind-dark.css +710 -591
- package/styles/tailwind-lite.css +547 -452
- package/styles/tailwind.css +710 -591
- package/styles/tailwind3-lite.css +553 -458
- package/styles/tailwind3.css +716 -597
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-ribbon.min.js","sources":["../../src/ribbon/base/utils.js","../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-gallery-item.js","../../src/ribbon/models/ribbon-gallery-group.js","../../src/ribbon/models/ribbon-gallery-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/ribbon-contextual-tab-settings.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/items/ribbon-gallery.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/modules/ribbon-contextualtab.js","../../src/ribbon/modules/ribbon-keytip.js","../../src/global.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.click();\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.click();\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n colorPickerObj.toggle();\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n this.getDropDownObj(controlId).toggle();\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n this.getSplitButtonObj(controlId).toggle();\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup.height);\n dropdown.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\n case 'backStageMenu': {\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n }\n case 'helpPaneTemplate': {\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement) {\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n galleryEle.click();\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n templateEle.focus();\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (itemElement) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonGroupButton, index.RibbonFileMenu, index.RibbonBackstage, index.RibbonKeyTip, index.RibbonContextualTab, index.RibbonGallery);\nexport * from './index';\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","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","constants.RIBBON_TOOLTIP","createTooltip","ribbon","beforeTooltipRender","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","classList","contains","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","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","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","VERTICAL_DDB","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","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","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","groupButtonEle","selection","Single","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","targetEle","isOverflowPopup","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","registeredTemplate","ref","setValue","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","this_1","isHeightDefined","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","popupContainerItems","forEach","isCollideOccurs","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","galleryIcons","galleryContainer","selectedTab","popupButton","groupIconCss","popupContainerEle_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","getElementById","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","left","offsetX","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","elem","checkOverflow","scrollModule","scrollEle","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","elements","createGroups","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","overflowBtnTarget","overflowHeader","groupHeader_1","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","Template","createTemplateContent","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","ribbonArgs","constants.RIBBON_POPUP_CONTROL","isGroupOf","upDownKeyHandler","templateEle","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","aria-label","role","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","groupCollection","itemList","itemEle_1","size","createItems","i_6","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","createRibbonItem","itemElements","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","htmlAttrID","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isUpdated","isOverflow","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","backButton","closeBtn","isBackButtonClicked","itemsWrapperEle","ulFooterElem","ulMenuElem","cloneFooterMenuItem","backstageContentEle","backstageTempEle","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonGroupButton","index.RibbonFileMenu","index.RibbonBackstage","index.RibbonKeyTip","index.RibbonContextualTab","index.RibbonGallery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-ribbon.min.js","sources":["../../src/ribbon/base/utils.js","../../src/ribbon/base/interface.js","../../src/ribbon/models/ribbon-button-settings.js","../../src/ribbon/models/ribbon-checkbox-settings.js","../../src/ribbon/models/ribbon-colorpicker-settings.js","../../src/ribbon/models/ribbon-combobox-settings.js","../../src/ribbon/models/ribbon-dropdown-settings.js","../../src/ribbon/models/ribbon-splitbutton-settings.js","../../src/ribbon/models/ribbon-tooltip.js","../../src/ribbon/models/ribbon-group-button-item.js","../../src/ribbon/models/ribbon-group-button-settings.js","../../src/ribbon/models/ribbon-gallery-item.js","../../src/ribbon/models/ribbon-gallery-group.js","../../src/ribbon/models/ribbon-gallery-settings.js","../../src/ribbon/models/ribbon-item.js","../../src/ribbon/models/ribbon-collection.js","../../src/ribbon/models/ribbon-group.js","../../src/ribbon/models/ribbon-tab.js","../../src/ribbon/models/ribbon-file-menu-settings.js","../../src/ribbon/models/ribbon-back-button.js","../../src/ribbon/models/ribbon-backstage-item.js","../../src/ribbon/models/ribbon-back-stage-settings.js","../../src/ribbon/models/ribbon-contextual-tab-settings.js","../../src/ribbon/base/constant.js","../../src/ribbon/items/ribbon-button.js","../../src/ribbon/items/ribbon-checkbox.js","../../src/ribbon/items/ribbon-colorpicker.js","../../src/ribbon/items/ribbon-combobox.js","../../src/ribbon/items/ribbon-dropdown.js","../../src/ribbon/items/ribbon-splitbutton.js","../../src/ribbon/items/ribbon-groupbutton.js","../../src/ribbon/items/ribbon-gallery.js","../../src/ribbon/base/ribbon.js","../../src/ribbon/modules/ribbon-filemenu.js","../../src/ribbon/modules/ribbon-backstage.js","../../src/ribbon/modules/ribbon-contextualtab.js","../../src/ribbon/modules/ribbon-keytip.js","../../src/global.js"],"sourcesContent":["import { compile, getComponent, select, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport * as constants from './constant';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Gets index value.\n *\n * @param {Array} arr - Gets the array to find index.\n * @param {boolean} condition - Defines whether index matches with the value.\n * @returns {number} - Gets the index value.\n * @hidden\n */\nexport function getIndex(arr, condition) {\n for (var i = 0; i < arr.length; i++) {\n if (condition(arr[parseInt(i.toString(), 10)], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Gets template content based on the template property value.\n *\n * @param {string | HTMLElement| Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\nexport function getTemplateFunction(template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n}\n/**\n * Gets the ribbon item\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @param {RibbonItemType} type - Gets the type of the item.\n * @returns {itemProps} - Gets the ribbon item.\n * @hidden\n */\nexport function getItem(tabs, id, type) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n var item = collection.items[parseInt(l.toString(), 10)];\n if ((id && item.id === id) || (type && item.type === type)) {\n return {\n item: item, collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k, itemIndex: l\n };\n }\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon collection.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon collection.\n * @hidden\n */\nexport function getCollection(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n if (collection.id === id) {\n return {\n collection: collection, group: group,\n tabIndex: i, groupIndex: j, collectionIndex: k\n };\n }\n }\n }\n }\n return null;\n}\n/**\n * Gets the ribbon group.\n *\n * @param {RibbonTabModel} tabs - Gets the ribbon tab model.\n * @param {string} id - Gets the ID of the tab.\n * @returns {itemProps} - Gets the ribbon group.\n * @hidden\n */\nexport function getGroup(tabs, id) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n for (var j = 0; j < tab.groups.length; j++) {\n var group = tab.groups[parseInt(j.toString(), 10)];\n if (group.id === id) {\n return {\n group: group, tabIndex: i, groupIndex: j\n };\n }\n }\n }\n return null;\n}\n/**\n * @param {HTMLElement} element - Gets the element to be destroyed.\n * @param {string} moduleName - Gets the module name.\n * @returns {void}\n * @hidden\n */\nexport function destroyControl(element, moduleName) {\n var control = getComponent(element, moduleName);\n control.destroy();\n}\n/**\n * Updates common properties.\n *\n * @param {HTMLElement} element - Gets the element to be updated.\n * @param {string} moduleName - Gets the module name.\n * @param {commonProperties} commonProp - Gets the common properties to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateCommonProperty(element, moduleName, commonProp) {\n var control = getComponent(element, moduleName);\n control.setProperties(commonProp);\n}\n/**\n * Updates disabled control.\n *\n * @param {HTMLElement} element - Gets the element to be disabled.\n * @param {string} moduleName - Gets the module name.\n * @param {boolean} disable - Defines whether the control to be disabled or not.\n * @returns {void}\n * @hidden\n */\nexport function updateControlDisabled(element, moduleName, disable) {\n var control = getComponent(element, moduleName);\n control.setProperties(moduleName === 'combobox' ? { enabled: !disable } : { disabled: disable });\n}\n/**\n * Gets the ribbon item element.\n *\n * @param {Ribbon} parent - Gets the parent element.\n * @param {string} id - Gets the ID of the item.\n * @param {itemProps} itemProp - Gets the ribbon item.\n * @returns {HTMLElement} - Gets the ribbon item element.\n * @hidden\n */\nexport function getItemElement(parent, id, itemProp) {\n if (!itemProp) {\n itemProp = getItem(parent.tabs, id);\n if (!itemProp) {\n return null;\n }\n }\n var contentEle = parent.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML === '') {\n return null;\n }\n if (parent.activeLayout === RibbonLayout.Classic) {\n if (itemProp.item.displayOptions & DisplayMode.Classic) {\n contentEle = (itemProp.group.isCollapsed) ? parent.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle)\n : contentEle;\n return contentEle.querySelector('#' + id);\n }\n else {\n return null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n var ele = (itemProp.item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + itemProp.item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n var dropdown = itemProp.group.enableGroupOverflow ?\n getComponent(contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID), DropDownButton)\n : parent.overflowDDB;\n ele = dropdown.target.querySelector('#' + itemProp.item.id);\n }\n return ele;\n }\n}\n/**\n * @param {RibbonTooltipModel} tooltip - Gets the property of tooltip.\n * @returns {boolean} - Gets whether the tooltip is present or not.\n * @hidden\n */\nexport function isTooltipPresent(tooltip) {\n return (tooltip.content || tooltip.iconCss || tooltip.title || tooltip.id || tooltip.cssClass) ? true : false;\n}\n/**\n * Sets content for tooltip.\n *\n * @param {TooltipEventArgs} args - Gets the argument of tooltip.\n * @param {Tooltip} tooltip - Gets the tooltip to set the content.\n * @param {ribbonTooltipData} tooltipData - Gets the tooltip data.\n * @returns {void}\n * @hidden\n */\nexport function setToolTipContent(args, tooltip, tooltipData) {\n var targetId = args.target.getAttribute('id');\n var dataObj = tooltipData.filter(function (e) { return e.id === targetId; })[0];\n var data = dataObj.data;\n var content = tooltip.createElement('div', {\n id: data.id ? constants.RIBBON_TOOLTIP_CONTAINER + '_' + data.id : constants.RIBBON_TOOLTIP_CONTAINER\n });\n tooltip.element.append(content);\n if (data.title) {\n var header = tooltip.createElement('div', {\n innerHTML: data.title,\n className: constants.RIBBON_TOOLTIP_TITLE\n });\n content.appendChild(header);\n }\n var textContainer = tooltip.createElement('div', {\n className: constants.RIBBON_TEXT_CONTAINER\n });\n content.appendChild(textContainer);\n if (data.iconCss) {\n var customCss = tooltip.createElement('div', {\n className: data.iconCss + ' ' + constants.RIBBON_TOOLTIP_ICON\n });\n textContainer.appendChild(customCss);\n }\n if (data.content) {\n var tooltipContent = tooltip.createElement('div', {\n innerHTML: data.content,\n className: constants.RIBBON_TOOLTIP_CONTENT\n });\n textContainer.appendChild(tooltipContent);\n }\n tooltip.setProperties({\n content: content,\n cssClass: data.cssClass ? data.cssClass + ' ' + constants.RIBBON_TOOLTIP : constants.RIBBON_TOOLTIP\n });\n}\n/**\n * Creates tooltip.\n *\n * @param {HTMLElement} element - Gets the element to add tooltip.\n * @param {Ribbon} ribbon - Gets the ribbon.\n * @returns {void}\n * @hidden\n */\nexport function createTooltip(element, ribbon) {\n var ribbonTooltip = new Tooltip({\n target: '.' + constants.RIBBON_TOOLTIP_TARGET,\n beforeRender: beforeTooltipRender.bind(this),\n windowCollision: true\n });\n ribbonTooltip.appendTo(element);\n /**\n * @param {TooltipEventArgs} args - Gets the tooltip argument.\n * @returns {void}\n * @hidden\n */\n function beforeTooltipRender(args) {\n setToolTipContent(args, ribbonTooltip, ribbon.tooltipData);\n }\n}\n/**\n * Destroys tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be destroyed.\n * @returns {void}\n * @hidden\n */\nexport function destroyTooltip(element) {\n var control = getComponent(element, Tooltip);\n control.destroy();\n}\n/**\n * Updates tooltip\n *\n * @param {HTMLElement} element - Gets the element in which the tooltip needs to be Updated.\n * @param {commonProperties} prop - Gets the property to be updated.\n * @returns {void}\n * @hidden\n */\nexport function updateTooltipProp(element, prop) {\n var control = getComponent(element, Tooltip);\n control.setProperties(prop);\n}\n/**\n * Sets the HTML attributes of an element\n *\n * @param {HTMLElement} element - The HTML element for which attributes are to be updated.\n * @param {commonProperties} attributes - An object containing key-value pairs of attributes to be updated.\n * @returns {void}\n * @hidden\n */\nexport function setCustomAttributes(element, attributes) {\n for (var key in attributes) {\n if (key === 'class') {\n var elementClass = attributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'style') {\n var prevStyles = element.getAttribute('style') || '';\n var value = \"\" + prevStyles + attributes[\"\" + key];\n element.setAttribute(\"\" + key, value);\n }\n else {\n element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n}\n","/**\n * Defines the layout types of ribbon.\n */\nexport var RibbonLayout;\n(function (RibbonLayout) {\n /**\n * Displays the ribbon tab content in classic layout.\n */\n RibbonLayout[\"Classic\"] = \"Classic\";\n /**\n * Displays the ribbon tab content in simplified layout.\n */\n RibbonLayout[\"Simplified\"] = \"Simplified\";\n})(RibbonLayout || (RibbonLayout = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var ItemOrientation;\n(function (ItemOrientation) {\n /**\n * Displays the collection of items in rows.\n */\n ItemOrientation[\"Row\"] = \"Row\";\n /**\n * Displays the collection of items in column.\n */\n ItemOrientation[\"Column\"] = \"Column\";\n})(ItemOrientation || (ItemOrientation = {}));\n/**\n * Defines the current size of the ribbon item in normal mode.\n *\n * @aspNumberEnum\n */\nexport var RibbonItemSize;\n(function (RibbonItemSize) {\n /**\n * The item appears with large icon and text at the bottom.\n */\n RibbonItemSize[RibbonItemSize[\"Large\"] = 4] = \"Large\";\n /**\n * The item appears with small icon and text at the right.\n */\n RibbonItemSize[RibbonItemSize[\"Medium\"] = 2] = \"Medium\";\n /**\n * The item appears with small icon only.\n */\n RibbonItemSize[RibbonItemSize[\"Small\"] = 1] = \"Small\";\n})(RibbonItemSize || (RibbonItemSize = {}));\n/**\n * Defines how to show an item in ribbon simplified layout.\n *\n * @aspNumberEnum\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /**\n * The item appears in the classic layout group.\n */\n DisplayMode[DisplayMode[\"Classic\"] = 4] = \"Classic\";\n /**\n * The item appears in the simplified layout group.\n */\n DisplayMode[DisplayMode[\"Simplified\"] = 2] = \"Simplified\";\n /**\n * The item appears in overflow popup.\n */\n DisplayMode[DisplayMode[\"Overflow\"] = 1] = \"Overflow\";\n /**\n * The item appears in classic layout group, simplified layout group, and overflow popup based on ribbon overflow state.\n */\n DisplayMode[DisplayMode[\"Auto\"] = 7] = \"Auto\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Defines the type of the ribbon item.\n */\nexport var RibbonItemType;\n(function (RibbonItemType) {\n /**\n * Renders button as ribbon item.\n */\n RibbonItemType[\"Button\"] = \"Button\";\n /**\n * Renders checkbox as ribbon item.\n */\n RibbonItemType[\"CheckBox\"] = \"CheckBox\";\n /**\n * Renders color picker as ribbon item.\n */\n RibbonItemType[\"ColorPicker\"] = \"ColorPicker\";\n /**\n * Renders combobox as ribbon item.\n */\n RibbonItemType[\"ComboBox\"] = \"ComboBox\";\n /**\n * Renders dropdownbutton as ribbon item.\n */\n RibbonItemType[\"DropDown\"] = \"DropDown\";\n /**\n * Renders splitbutton as ribbon item.\n */\n RibbonItemType[\"SplitButton\"] = \"SplitButton\";\n /**\n * Renders the group button content as ribbon item.\n */\n RibbonItemType[\"GroupButton\"] = \"GroupButton\";\n /**\n * Renders the gallery as ribbon item.\n */\n RibbonItemType[\"Gallery\"] = \"Gallery\";\n /**\n * Renders the template content as ribbon item.\n */\n RibbonItemType[\"Template\"] = \"Template\";\n})(RibbonItemType || (RibbonItemType = {}));\n/**\n * Defines the alignment of the items in the ribbon group.\n */\nexport var RibbonGroupButtonSelection;\n(function (RibbonGroupButtonSelection) {\n /**\n * Allows selecting single button from button group.\n */\n RibbonGroupButtonSelection[\"Single\"] = \"Single\";\n /**\n * Allows selecting multiple buttons from button group.\n */\n RibbonGroupButtonSelection[\"Multiple\"] = \"Multiple\";\n})(RibbonGroupButtonSelection || (RibbonGroupButtonSelection = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon button item.\n */\nvar RibbonButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonButtonSettings, _super);\n function RibbonButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], RibbonButtonSettings.prototype, \"isPrimary\", void 0);\n __decorate([\n Property({})\n ], RibbonButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonButtonSettings.prototype, \"clicked\", void 0);\n return RibbonButtonSettings;\n}(ChildProperty));\nexport { RibbonButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon checkbox item.\n */\nvar RibbonCheckBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonCheckBoxSettings, _super);\n function RibbonCheckBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of checkbox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCheckBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonCheckBoxSettings.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonCheckBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RibbonCheckBoxSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property({})\n ], RibbonCheckBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonCheckBoxSettings.prototype, \"change\", void 0);\n return RibbonCheckBoxSettings;\n}(ChildProperty));\nexport { RibbonCheckBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon color picker.\n */\nvar RibbonColorPickerSettings = /** @class */ (function (_super) {\n __extends(RibbonColorPickerSettings, _super);\n function RibbonColorPickerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of colorpicker.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonColorPickerSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(10)\n ], RibbonColorPickerSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonColorPickerSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property('Palette')\n ], RibbonColorPickerSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(false)\n ], RibbonColorPickerSettings.prototype, \"noColor\", void 0);\n __decorate([\n Property(null)\n ], RibbonColorPickerSettings.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], RibbonColorPickerSettings.prototype, \"showButtons\", void 0);\n __decorate([\n Property('#008000ff')\n ], RibbonColorPickerSettings.prototype, \"value\", void 0);\n __decorate([\n Property({})\n ], RibbonColorPickerSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonColorPickerSettings.prototype, \"select\", void 0);\n return RibbonColorPickerSettings;\n}(ChildProperty));\nexport { RibbonColorPickerSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '@syncfusion/ej2-dropdowns';\n/**\n * Defines the ribbon combobox item.\n */\nvar RibbonComboBoxSettings = /** @class */ (function (_super) {\n __extends(RibbonComboBoxSettings, _super);\n function RibbonComboBoxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of combobox.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonComboBoxSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonComboBoxSettings.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"autofill\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonComboBoxSettings.prototype, \"label\", void 0);\n __decorate([\n Property([])\n ], RibbonComboBoxSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], RibbonComboBoxSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('Contains')\n ], RibbonComboBoxSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"index\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], RibbonComboBoxSettings.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], RibbonComboBoxSettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], RibbonComboBoxSettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(true)\n ], RibbonComboBoxSettings.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('None')\n ], RibbonComboBoxSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], RibbonComboBoxSettings.prototype, \"value\", void 0);\n __decorate([\n Property('150px')\n ], RibbonComboBoxSettings.prototype, \"width\", void 0);\n __decorate([\n Property({})\n ], RibbonComboBoxSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonComboBoxSettings.prototype, \"select\", void 0);\n return RibbonComboBoxSettings;\n}(ChildProperty));\nexport { RibbonComboBoxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon DropDownButton item.\n */\nvar RibbonDropDownSettings = /** @class */ (function (_super) {\n __extends(RibbonDropDownSettings, _super);\n function RibbonDropDownSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonDropDownSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonDropDownSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonDropDownSettings.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], RibbonDropDownSettings.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property({})\n ], RibbonDropDownSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonDropDownSettings.prototype, \"select\", void 0);\n return RibbonDropDownSettings;\n}(ChildProperty));\nexport { RibbonDropDownSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Event, Property } from '@syncfusion/ej2-base';\nimport { Item } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the ribbon SplitButton item.\n */\nvar RibbonSplitButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonSplitButtonSettings, _super);\n function RibbonSplitButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of DropDown.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonSplitButtonSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Collection([], Item)\n ], RibbonSplitButtonSettings.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonSplitButtonSettings.prototype, \"target\", void 0);\n __decorate([\n Property({})\n ], RibbonSplitButtonSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], RibbonSplitButtonSettings.prototype, \"select\", void 0);\n return RibbonSplitButtonSettings;\n}(ChildProperty));\nexport { RibbonSplitButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon tooltip.\n */\nvar RibbonTooltip = /** @class */ (function (_super) {\n __extends(RibbonTooltip, _super);\n function RibbonTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonTooltip.prototype, \"iconCss\", void 0);\n return RibbonTooltip;\n}(ChildProperty));\nexport { RibbonTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Event, Property, Complex } from '@syncfusion/ej2-base';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonItem = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonItem, _super);\n function RibbonGroupButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of group button.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroupButtonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroupButtonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonGroupButtonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroupButtonItem.prototype, \"selected\", void 0);\n __decorate([\n Property({})\n ], RibbonGroupButtonItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], RibbonGroupButtonItem.prototype, \"click\", void 0);\n return RibbonGroupButtonItem;\n}(ChildProperty));\nexport { RibbonGroupButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroupButtonItem } from './ribbon-group-button-item';\n/**\n * Defines the ribbon group button settings.\n */\nvar RibbonGroupButtonSettings = /** @class */ (function (_super) {\n __extends(RibbonGroupButtonSettings, _super);\n function RibbonGroupButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGroupButtonSettings.prototype, \"header\", void 0);\n __decorate([\n Property('Single')\n ], RibbonGroupButtonSettings.prototype, \"selection\", void 0);\n __decorate([\n Collection([], RibbonGroupButtonItem)\n ], RibbonGroupButtonSettings.prototype, \"items\", void 0);\n return RibbonGroupButtonSettings;\n}(ChildProperty));\nexport { RibbonGroupButtonSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon gallery item.\n */\nvar RibbonGalleryItem = /** @class */ (function (_super) {\n __extends(RibbonGalleryItem, _super);\n function RibbonGalleryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property({})\n ], RibbonGalleryItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonGalleryItem.prototype, \"disabled\", void 0);\n return RibbonGalleryItem;\n}(ChildProperty));\nexport { RibbonGalleryItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGalleryItem } from './ribbon-gallery-item';\n/**\n * Defines the ribbon gallery group.\n */\nvar RibbonGalleryGroup = /** @class */ (function (_super) {\n __extends(RibbonGalleryGroup, _super);\n function RibbonGalleryGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryItem)\n ], RibbonGalleryGroup.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"header\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemWidth\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGalleryGroup.prototype, \"itemHeight\", void 0);\n __decorate([\n Property('')\n ], RibbonGalleryGroup.prototype, \"cssClass\", void 0);\n return RibbonGalleryGroup;\n}(ChildProperty));\nexport { RibbonGalleryGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property, Event } from '@syncfusion/ej2-base';\nimport { RibbonGalleryGroup } from './ribbon-gallery-group';\n/**\n * Defines the ribbon gallery settings.\n */\nvar RibbonGallerySettings = /** @class */ (function (_super) {\n __extends(RibbonGallerySettings, _super);\n function RibbonGallerySettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], RibbonGalleryGroup)\n ], RibbonGallerySettings.prototype, \"groups\", void 0);\n __decorate([\n Property(3)\n ], RibbonGallerySettings.prototype, \"itemCount\", void 0);\n __decorate([\n Property(null)\n ], RibbonGallerySettings.prototype, \"selectedItemIndex\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('auto')\n ], RibbonGallerySettings.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], RibbonGallerySettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"itemHover\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"beforeSelect\", void 0);\n __decorate([\n Event()\n ], RibbonGallerySettings.prototype, \"select\", void 0);\n return RibbonGallerySettings;\n}(ChildProperty));\nexport { RibbonGallerySettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Complex, Property } from '@syncfusion/ej2-base';\nimport { RibbonItemSize, DisplayMode } from '../base/interface';\nimport { RibbonButtonSettings } from './ribbon-button-settings';\nimport { RibbonCheckBoxSettings } from './ribbon-checkbox-settings';\nimport { RibbonColorPickerSettings } from './ribbon-colorpicker-settings';\nimport { RibbonComboBoxSettings } from './ribbon-combobox-settings';\nimport { RibbonDropDownSettings } from './ribbon-dropdown-settings';\nimport { RibbonSplitButtonSettings } from './ribbon-splitbutton-settings';\nimport { RibbonTooltip } from './ribbon-tooltip';\nimport { RibbonGroupButtonSettings } from './ribbon-group-button-settings';\nimport { RibbonGallerySettings } from './ribbon-gallery-settings';\n/**\n * Defines the ribbon item.\n */\nvar RibbonItem = /** @class */ (function (_super) {\n __extends(RibbonItem, _super);\n function RibbonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of item.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonItem.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property(RibbonItemSize.Medium)\n ], RibbonItem.prototype, \"activeSize\", void 0);\n __decorate([\n Property(RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n ], RibbonItem.prototype, \"allowedSizes\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RibbonItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RibbonItem.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Button')\n ], RibbonItem.prototype, \"type\", void 0);\n __decorate([\n Property(DisplayMode.Auto)\n ], RibbonItem.prototype, \"displayOptions\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], RibbonItem.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Complex({}, RibbonButtonSettings)\n ], RibbonItem.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, RibbonDropDownSettings)\n ], RibbonItem.prototype, \"dropDownSettings\", void 0);\n __decorate([\n Complex({}, RibbonCheckBoxSettings)\n ], RibbonItem.prototype, \"checkBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonColorPickerSettings)\n ], RibbonItem.prototype, \"colorPickerSettings\", void 0);\n __decorate([\n Complex({}, RibbonComboBoxSettings)\n ], RibbonItem.prototype, \"comboBoxSettings\", void 0);\n __decorate([\n Complex({}, RibbonSplitButtonSettings)\n ], RibbonItem.prototype, \"splitButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGroupButtonSettings)\n ], RibbonItem.prototype, \"groupButtonSettings\", void 0);\n __decorate([\n Complex({}, RibbonGallerySettings)\n ], RibbonItem.prototype, \"gallerySettings\", void 0);\n return RibbonItem;\n}(ChildProperty));\nexport { RibbonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonItem } from './ribbon-item';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCollection = /** @class */ (function (_super) {\n __extends(RibbonCollection, _super);\n function RibbonCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of collection.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonCollection.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonCollection.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonItem)\n ], RibbonCollection.prototype, \"items\", void 0);\n return RibbonCollection;\n}(ChildProperty));\nexport { RibbonCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonCollection } from './ribbon-collection';\n/**\n * Defines the ribbon group.\n */\nvar RibbonGroup = /** @class */ (function (_super) {\n __extends(RibbonGroup, _super);\n function RibbonGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Group.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonGroup.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"launcherIconKeyTip\", void 0);\n __decorate([\n Collection([], RibbonCollection)\n ], RibbonGroup.prototype, \"collections\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"isCollapsed\", void 0);\n __decorate([\n Property(true)\n ], RibbonGroup.prototype, \"isCollapsible\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"enableGroupOverflow\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"groupIconCss\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"header\", void 0);\n __decorate([\n Property('Column')\n ], RibbonGroup.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], RibbonGroup.prototype, \"overflowHeader\", void 0);\n __decorate([\n Property(0)\n ], RibbonGroup.prototype, \"priority\", void 0);\n __decorate([\n Property(false)\n ], RibbonGroup.prototype, \"showLauncherIcon\", void 0);\n return RibbonGroup;\n}(ChildProperty));\nexport { RibbonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Collection, Property } from '@syncfusion/ej2-base';\nimport { RibbonGroup } from './ribbon-group';\n/**\n * Defines the ribbon tab.\n */\nvar RibbonTab = /** @class */ (function (_super) {\n __extends(RibbonTab, _super);\n function RibbonTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonTab.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"cssClass\", void 0);\n __decorate([\n Collection([], RibbonGroup)\n ], RibbonTab.prototype, \"groups\", void 0);\n __decorate([\n Property('')\n ], RibbonTab.prototype, \"header\", void 0);\n return RibbonTab;\n}(ChildProperty));\nexport { RibbonTab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { MenuAnimationSettings, MenuItem } from '@syncfusion/ej2-navigations';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar FileMenuSettings = /** @class */ (function (_super) {\n __extends(FileMenuSettings, _super);\n function FileMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of FileMenu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n FileMenuSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], FileMenuSettings.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"visible\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], FileMenuSettings.prototype, \"menuItems\", void 0);\n __decorate([\n Property(false)\n ], FileMenuSettings.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Complex({}, MenuAnimationSettings)\n ], FileMenuSettings.prototype, \"animationSettings\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"popupTemplate\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], FileMenuSettings.prototype, \"ribbonTooltipSettings\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], FileMenuSettings.prototype, \"select\", void 0);\n __decorate([\n Property('')\n ], FileMenuSettings.prototype, \"keyTip\", void 0);\n return FileMenuSettings;\n}(ChildProperty));\nexport { FileMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageBackButton = /** @class */ (function (_super) {\n __extends(BackstageBackButton, _super);\n function BackstageBackButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageBackButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(true)\n ], BackstageBackButton.prototype, \"visible\", void 0);\n return BackstageBackButton;\n}(ChildProperty));\nexport { BackstageBackButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Event } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon backstage back button.\n */\nvar BackstageItem = /** @class */ (function (_super) {\n __extends(BackstageItem, _super);\n function BackstageItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"keyTip\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], BackstageItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], BackstageItem.prototype, \"isFooter\", void 0);\n __decorate([\n Event()\n ], BackstageItem.prototype, \"backStageItemClick\", void 0);\n return BackstageItem;\n}(ChildProperty));\nexport { BackstageItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { BackstageBackButton } from './ribbon-back-button';\nimport { BackstageItem } from './ribbon-backstage-item';\nimport { RibbonTooltip } from './ribbon-tooltip';\n/**\n * Defines the ribbon file menu settings.\n */\nvar BackStageMenu = /** @class */ (function (_super) {\n __extends(BackStageMenu, _super);\n function BackStageMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of Backstage Menu.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n BackStageMenu.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property('File')\n ], BackStageMenu.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"keyTip\", void 0);\n __decorate([\n Property(false)\n ], BackStageMenu.prototype, \"visible\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], BackStageMenu.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], BackStageMenu.prototype, \"target\", void 0);\n __decorate([\n Complex({}, BackstageBackButton)\n ], BackStageMenu.prototype, \"backButton\", void 0);\n __decorate([\n Collection([], BackstageItem)\n ], BackStageMenu.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], BackStageMenu.prototype, \"template\", void 0);\n __decorate([\n Complex({}, RibbonTooltip)\n ], BackStageMenu.prototype, \"ribbonTooltipSettings\", void 0);\n return BackStageMenu;\n}(ChildProperty));\nexport { BackStageMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\nimport { RibbonTab } from './ribbon-tab';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTabSettings = /** @class */ (function (_super) {\n __extends(RibbonContextualTabSettings, _super);\n function RibbonContextualTabSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {Object} prop - Gets the property of contextual tab.\n * @param {boolean} muteOnChange - Gets the boolean value of muteOnChange.\n * @returns {void}\n * @private\n */\n RibbonContextualTabSettings.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n };\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], RibbonContextualTabSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], RibbonContextualTabSettings.prototype, \"tabs\", void 0);\n return RibbonContextualTabSettings;\n}(ChildProperty));\nexport { RibbonContextualTabSettings };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var ITEM_VERTICAL_CENTER = 'e-ribbon-vertical-center';\n/** @hidden */\nexport var EXPAND_COLLAPSE_ICON = 'e-icons e-drop-icon';\n/** @hidden */\nexport var BACKSTAGE_CLOSE_ICON = 'e-icons e-arrow-left';\n/** @hidden */\nexport var OVERFLOW_ICON = 'e-icons e-more-horizontal-1';\n/** @hidden */\nexport var VERTICAL_DDB = 'e-vertical';\n/** @hidden */\nexport var DISABLED_CSS = 'e-disabled';\n/** @hidden */\nexport var RTL_CSS = 'e-rtl';\n/** @hidden */\nexport var RIBBON_HOVER = 'e-ribbon-hover';\n/** @hidden */\nexport var RIBBON_CONTROL = 'e-ribbon-control';\n/** @hidden */\nexport var RIBBON_POPUP_CONTROL = 'e-ribbon-popup-control';\n/** @hidden */\nexport var RIBBON_POPUP_OPEN = 'e-ribbon-open';\n/** @hidden */\nexport var RIBBON_KEYTIP = 'e-ribbon-keytip';\n/** @hidden */\nexport var SPACE = ' ';\n/** @hidden */\nexport var HORIZONTAL_SCROLLBAR = 'e-hscroll-bar';\n/** @hidden */\nexport var HIDE_CSS = 'e-ribbon-hide';\n/** @hidden */\nexport var RIBBON_TAB = 'e-ribbon-tab';\n/** @hidden */\nexport var RIBBON_CONTEXTUAL_TAB = 'e-ribbon-contextual-tab';\n/** @hidden */\nexport var RIBBON_TAB_ACTIVE = 'e-ribbon-active';\n/** @hidden */\nexport var RIBBON_TAB_ITEM = 'e-ribbon-tab-item';\n/** @hidden */\nexport var RIBBON_COLLAPSE_BUTTON = 'e-ribbon-collapse-btn';\n/** @hidden */\nexport var RIBBON_EXPAND_BUTTON = 'e-ribbon-expand-btn';\n/** @hidden */\nexport var RIBBON_COLLAPSIBLE = 'e-ribbon-collapsible';\n/** @hidden */\nexport var RIBBON_OVERALL_OF_BUTTON = 'e-ribbon-overall-of-btn';\n/** @hidden */\nexport var RIBBON_GROUP_OF_BUTTON = 'e-ribbon-group-of-btn';\n/** @hidden */\nexport var RIBBON_OVERFLOW_TARGET = 'e-ribbon-overflow-target';\n/** @hidden */\nexport var RIBBON_OVERFLOW = 'e-ribbon-overflow';\n/** @hidden */\nexport var TAB_CONTENT = 'e-content';\n/** @hidden */\nexport var RIBBON_MINIMIZE = 'e-ribbon-minimize';\n/** @hidden */\nexport var RIBBON_GROUP = 'e-ribbon-group';\n/** @hidden */\nexport var RIBBON_SINGLE_BUTTON_SELECTION = 'e-ribbon-single-selection';\n/** @hidden */\nexport var RIBBON_MULTIPLE_BUTTON_SELECTION = 'e-ribbon-multiple-selection';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON = 'e-ribbon-group-button';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_OVERFLOW_POPUP = 'e-ribbon-group-button-overflow-popup';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_CONTENT = 'e-ribbon-group-button-content';\n/** @hidden */\nexport var RIBBON_GROUP_CONTAINER = 'e-ribbon-group-container';\n/** @hidden */\nexport var RIBBON_OF_TAB_CONTAINER = 'e-ribbon-of-tab';\n/** @hidden */\nexport var RIBBON_OF_GROUP_CONTAINER = 'e-ribbon-of-group-container';\n/** @hidden */\nexport var RIBBON_GROUP_CONTENT = 'e-ribbon-group-content';\n/** @hidden */\nexport var RIBBON_GROUP_HEADER = 'e-ribbon-group-header';\n/** @hidden */\nexport var RIBBON_OVERFLOW_HEADER = 'e-ribbon-overflow-header';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW = 'e-ribbon-group-overflow';\n/** @hidden */\nexport var RIBBON_GROUP_OVERFLOW_DDB = 'e-ribbon-group-overflow-ddb';\n/** @hidden */\nexport var RIBBON_LAUNCHER = 'e-ribbon-launcher';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON_ELE = 'e-ribbon-launcher-icon';\n/** @hidden */\nexport var RIBBON_LAUNCHER_ICON = 'e-icons e-launcher';\n/** @hidden */\nexport var RIBBON_COLLECTION = 'e-ribbon-collection';\n/** @hidden */\nexport var RIBBON_ITEM = 'e-ribbon-item';\n/** @hidden */\nexport var RIBBON_ROW = 'e-ribbon-row';\n/** @hidden */\nexport var RIBBON_COLUMN = 'e-ribbon-column';\n/** @hidden */\nexport var RIBBON_LARGE_ITEM = 'e-ribbon-large-item';\n/** @hidden */\nexport var RIBBON_MEDIUM_ITEM = 'e-ribbon-medium-item';\n/** @hidden */\nexport var RIBBON_SMALL_ITEM = 'e-ribbon-small-item';\n/** @hidden */\nexport var RIBBON_CONTENT_HEIGHT = 'e-ribbon-content-height';\n/** @hidden */\nexport var DROPDOWNBUTTON = 'e-dropdown-btn';\n/** @hidden */\nexport var DROPDOWNBUTTON_HIDE = 'e-caret-hide';\n/** @hidden */\nexport var RIBBON_TEMPLATE = 'e-ribbon-template';\n/** @hidden */\nexport var RIBBON_HELP_TEMPLATE = 'e-ribbon-help-template';\n/** @hidden */\nexport var RIBBON_TOOLTIP = 'e-ribbon-tooltip';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TARGET = 'e-ribbon-tooltip-target';\n/** @hidden */\nexport var RIBBON_TOOLTIP_TITLE = 'e-ribbon-tooltip-title';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTENT = 'e-ribbon-tooltip-content';\n/** @hidden */\nexport var RIBBON_TOOLTIP_ICON = 'e-ribbon-tooltip-icon';\n/** @hidden */\nexport var RIBBON_TOOLTIP_CONTAINER = 'e-ribbon-tooltip-container';\n/** @hidden */\nexport var RIBBON_TEXT_CONTAINER = 'e-ribbon-text-container';\n/** @hidden */\nexport var RIBBON_SIMPLIFIED_MODE = 'e-ribbon-simplified-mode';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP = 'e-ribbon-backstage-popup';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_OPEN = 'e-ribbon-backstage-open';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_CONTENT = 'e-ribbon-backstage-content';\n/** @hidden */\nexport var RIBBON_SELECTED_CONTENT = 'e-ribbon-selected-content';\n/** @hidden */\nexport var RIBBON_BACKSTAGE = 'e-ribbon-backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU = 'e-ribbon-backstage-menu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEMPLATE = 'e-ribbon-backstage-template';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_WRAPPER = 'e-ribbon-backstage-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_ITEMS_WRAPPER = 'e-ribbon-backstage-items-wrapper';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_TEXT_MENU = 'e-blankicon';\n/** @hidden */\nexport var TAB_ID = '_tab';\n/** @hidden */\nexport var GROUP_ID = '_group';\n/** @hidden */\nexport var COLLECTION_ID = '_collection';\n/** @hidden */\nexport var ITEM_ID = '_item';\n/** @hidden */\nexport var COLLAPSE_BUTTON_ID = '_collapsebutton';\n/** @hidden */\nexport var OVRLOF_BUTTON_ID = '_sim_ovrl_overflow';\n/** @hidden */\nexport var GROUPOF_BUTTON_ID = '_sim_grp_overflow';\n/** @hidden */\nexport var HEADER_ID = '_header';\n/** @hidden */\nexport var LAUNCHER_ID = '_launcher';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var CONTAINER_ID = '_container';\n/** @hidden */\nexport var OVERFLOW_ID = '_overflow';\n/** @hidden */\nexport var DROPDOWN_ID = '_dropdown';\n/** @hidden */\nexport var RIBBON_FILE_MENU_ID = '_filemenu';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_MENU_ID = '_backstage';\n/** @hidden */\nexport var RIBBON_BACKSTAGE_POPUP_ID = '_backstagepopup';\n/** @hidden */\nexport var RIBBON_FILE_MENU_LIST = '_filemenulist';\n/** @hidden */\nexport var RIBBON_MENU_LIST = '_menulist';\n/** @hidden */\nexport var RIBBON_FOOTER_MENU_LIST = '_footermenulist';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_ID = '_helppanetemplate';\n/** @hidden */\nexport var RIBBON_GROUP_BUTTON_ID = '_grpbtn';\n/** @hidden */\nexport var RIBBON_KEYTIP_ID = '_keytip';\n/** @hidden */\nexport var RIBBON_FILE_MENU_WIDTH = '--fileMenuWidth';\n/** @hidden */\nexport var RIBBON_HELP_PANE_TEMPLATE_WIDTH = '--helpTemplateWidth';\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_POPUP_CONTROL, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonButton = /** @class */ (function () {\n function RibbonButton(parent) {\n this.parent = parent;\n }\n RibbonButton.prototype.getModuleName = function () {\n return 'ribbonButton';\n };\n RibbonButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates button.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.createButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var btnSettings = item.buttonSettings;\n new Button({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n iconCss: btnSettings.iconCss,\n disabled: item.disabled,\n cssClass: (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (btnSettings.cssClass ? btnSettings.cssClass : '')).trim(),\n content: item.activeSize === RibbonItemSize.Small ? '' : btnSettings.content,\n isPrimary: btnSettings.isPrimary,\n isToggle: btnSettings.isToggle,\n created: btnSettings.created\n }, buttonEle);\n if (btnSettings.htmlAttributes) {\n if (btnSettings.htmlAttributes.id) {\n delete btnSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, btnSettings.htmlAttributes);\n }\n buttonEle.onclick = function (e) {\n if (btnSettings.clicked) {\n btnSettings.clicked.call(_this, e);\n }\n };\n if (btnSettings.content) {\n buttonEle.setAttribute('aria-label', btnSettings.content);\n }\n else {\n buttonEle.setAttribute('aria-label', 'button');\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n buttonEle.setAttribute('data-control', item.type.toString());\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({ cssClass: buttonObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var buttonEle = itemEle.querySelector('#' + item.id);\n var buttonObj = getComponent(buttonEle, Button);\n var cssClass = buttonObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n buttonObj.setProperties({ cssClass: cssClass.join(SPACE) });\n buttonEle.onclick = function (e) {\n if (item.buttonSettings.clicked) {\n item.buttonSettings.clicked.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the button.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonButton.prototype.click = function (controlId) {\n var buttonEle = getItemElement(this.parent, controlId);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (!buttonObj.disabled) {\n buttonObj.click();\n }\n };\n /**\n * Updates the button properties.\n *\n * @param {RibbonButtonSettingsModel} prop - Gets the button property.\n * @param {string} id - Gets the ID of button item.\n * @returns {void}\n */\n RibbonButton.prototype.updateButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.buttonSettings, prop);\n var buttonEle = getItemElement(this.parent, id, itemProp);\n if (!buttonEle) {\n return;\n }\n var buttonObj = getComponent(buttonEle, Button);\n if (prop.isToggle) {\n buttonEle.classList.add('e-active');\n }\n if (prop.cssClass) {\n prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n buttonEle.setAttribute('aria-label', prop.content);\n }\n delete prop.clicked;\n buttonObj.setProperties(prop);\n };\n /**\n * Updates the button size.\n *\n * @param {HTMLElement} element - Gets the button element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonButton.prototype.updateButtonSize = function (element, item) {\n var buttonObj = getComponent(element, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : item.buttonSettings.content\n });\n };\n return RibbonButton;\n}());\nexport { RibbonButton };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonCheckBox = /** @class */ (function () {\n function RibbonCheckBox(parent) {\n this.parent = parent;\n }\n RibbonCheckBox.prototype.getModuleName = function () {\n return 'ribbonCheckBox';\n };\n RibbonCheckBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the check box.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.createCheckBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var checkBoxSettings = item.checkBoxSettings;\n if (checkBoxSettings.htmlAttributes) {\n if (checkBoxSettings.htmlAttributes.id) {\n delete checkBoxSettings.htmlAttributes.id;\n }\n }\n new CheckBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n checked: checkBoxSettings.checked,\n cssClass: (RIBBON_CONTROL + SPACE + (checkBoxSettings.cssClass ? checkBoxSettings.cssClass : '')).trim(),\n label: checkBoxSettings.label,\n labelPosition: checkBoxSettings.labelPosition,\n disabled: item.disabled,\n created: checkBoxSettings.created,\n htmlAttributes: checkBoxSettings.htmlAttributes,\n change: function (e) {\n if (checkBoxSettings.change) {\n checkBoxSettings.change.call(_this, e);\n }\n }\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.cssClass = checkBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonCheckBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var inputEle = itemEle.querySelector('#' + item.id);\n var checkBoxObj = getComponent(inputEle, CheckBox);\n var cssClass = checkBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n checkBoxObj.cssClass = cssClass.join(SPACE);\n checkBoxObj.dataBind();\n checkBoxObj.change = function (e) {\n if (item.checkBoxSettings.change) {\n item.checkBoxSettings.change.call(_this, e);\n }\n };\n };\n /**\n * Triggers the click action on the Checkbox.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonCheckBox.prototype.click = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n if (!inputEle) {\n return;\n }\n var checkBoxObj = getComponent(inputEle, CheckBox);\n if (!checkBoxObj.disabled) {\n checkBoxObj.click();\n }\n };\n /**\n * Updates the checkbox.\n *\n * @param {RibbonCheckBoxSettingsModel} prop - Gets the checkbox property.\n * @param {string} id - Gets the ID of checkbox.\n * @returns {void}\n */\n RibbonCheckBox.prototype.updateCheckBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.change;\n var checkBoxObj = getComponent(inputEle, CheckBox);\n checkBoxObj.setProperties(prop);\n };\n return RibbonCheckBox;\n}());\nexport { RibbonCheckBox };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { getItem, getItemElement, setCustomAttributes } from '../base/index';\nimport { RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonColorPicker = /** @class */ (function () {\n function RibbonColorPicker(parent) {\n this.parent = parent;\n }\n RibbonColorPicker.prototype.getModuleName = function () {\n return 'ribbonColorPicker';\n };\n RibbonColorPicker.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the colorpicker.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.createColorPicker = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var colorPickerSettings = item.colorPickerSettings;\n var colorPicker = new ColorPicker({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n columns: colorPickerSettings.columns,\n cssClass: (RIBBON_CONTROL + SPACE + (colorPickerSettings.cssClass ? colorPickerSettings.cssClass : '')).trim(),\n disabled: item.disabled,\n enableOpacity: colorPickerSettings.enableOpacity,\n mode: colorPickerSettings.mode,\n modeSwitcher: colorPickerSettings.modeSwitcher,\n noColor: colorPickerSettings.noColor,\n presetColors: colorPickerSettings.presetColors,\n showButtons: colorPickerSettings.showButtons,\n value: colorPickerSettings.value,\n beforeClose: function () {\n colorPicker.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.beforeClose) {\n colorPickerSettings.beforeClose.call(_this);\n }\n },\n beforeOpen: colorPickerSettings.beforeOpen,\n beforeTileRender: colorPickerSettings.beforeTileRender,\n created: colorPickerSettings.created,\n change: function (e) {\n colorPickerSettings.value = e.value.toString();\n if (colorPickerSettings.change) {\n colorPickerSettings.change.call(_this, e);\n }\n },\n open: function () {\n colorPicker.element.parentElement.classList.add(RIBBON_POPUP_OPEN);\n if (colorPickerSettings.open) {\n colorPickerSettings.open.call(_this);\n }\n },\n select: colorPickerSettings.select\n }, inputEle);\n if (colorPickerSettings.htmlAttributes) {\n if (colorPickerSettings.htmlAttributes.id) {\n delete colorPickerSettings.htmlAttributes.id;\n }\n setCustomAttributes(inputEle, colorPickerSettings.htmlAttributes);\n }\n var wrapper = colorPicker.element.parentElement;\n EventHandler.add(wrapper, 'mouseenter', this.toggleWrapperHover.bind(this, wrapper, true), this);\n EventHandler.add(wrapper, 'mouseleave', this.toggleWrapperHover.bind(this, wrapper, false), this);\n };\n RibbonColorPicker.prototype.toggleWrapperHover = function (wrapper, isAdd) {\n if (isAdd) {\n wrapper.classList.add(RIBBON_HOVER);\n }\n else {\n wrapper.classList.remove(RIBBON_HOVER);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-colorpicker-label',\n id: item.id + '_label',\n innerHTML: colorPickerSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n colorPickerEle.setAttribute('data-control', item.type.toString());\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n colorPickerObj.setProperties({ cssClass: colorPickerObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n var splitBtn = colorPickerObj['splitBtn'];\n var target;\n colorPickerObj.beforeClose = function (e) {\n target = e.event ? e.event.target : null;\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n splitBtn.close = function () {\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var colorPickerSettings = item.colorPickerSettings;\n if (colorPickerSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var colorPickerEle = itemEle.querySelector('#' + item.id);\n var colorPickerObj = getComponent(colorPickerEle, ColorPicker);\n var cssClass = colorPickerObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n colorPickerObj.setProperties({ cssClass: cssClass.join(SPACE) });\n var splitBtn = colorPickerObj['splitBtn'];\n //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.\n splitBtn.close = null;\n colorPickerObj.beforeClose = function () {\n colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);\n if (item.colorPickerSettings.beforeClose) {\n item.colorPickerSettings.beforeClose.call(_this);\n }\n };\n };\n RibbonColorPicker.prototype.getColorPickerObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ColorPicker) : null;\n };\n /**\n * Gets color value in specified type.\n *\n * @param {string} controlId -Gets the control ID.\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @returns {string} - Returns string.\n */\n RibbonColorPicker.prototype.getValue = function (controlId, value, type) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n return colorPickerObj ? colorPickerObj.getValue(value, type) : '';\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @param {string} controlId - set the id of the control.\n * @returns {void} - Returns void.\n */\n RibbonColorPicker.prototype.toggle = function (controlId) {\n var colorPickerObj = this.getColorPickerObj(controlId);\n if (!colorPickerObj) {\n return;\n }\n if (!colorPickerObj.disabled) {\n colorPickerObj.toggle();\n }\n };\n /**\n * Updates the colorpicker properties.\n *\n * @param {RibbonColorPickerSettingsModel} prop - Gets the colorpicker property.\n * @param {string} id - Gets the ID of colorpicker.\n * @returns {void}\n */\n RibbonColorPicker.prototype.updateColorPicker = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.checkBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.beforeClose;\n delete prop.open;\n var colorPickerObj = getComponent(inputEle, ColorPicker);\n colorPickerObj.setProperties(prop);\n };\n /**\n * @param {HTMLElement} element - Gets the colorpicker element to be destroyed.\n * @returns {void}\n * @hidden\n */\n RibbonColorPicker.prototype.unwireColorPickerEvents = function (element) {\n var colorPickerObj = getComponent(element, ColorPicker);\n var wrapper = colorPickerObj.element.parentElement;\n EventHandler.remove(wrapper, 'mouseenter', this.toggleWrapperHover);\n EventHandler.remove(wrapper, 'mouseleave', this.toggleWrapperHover);\n };\n return RibbonColorPicker;\n}());\nexport { RibbonColorPicker };\n","import { getComponent, merge } from '@syncfusion/ej2-base';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { getItem, getItemElement, RIBBON_CONTROL, SPACE, RIBBON_POPUP_CONTROL } from '../base/index';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonComboBox = /** @class */ (function () {\n function RibbonComboBox(parent) {\n this.parent = parent;\n }\n RibbonComboBox.prototype.getModuleName = function () {\n return 'ribbonComboBox';\n };\n RibbonComboBox.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the combobox.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.createComboBox = function (item, itemEle) {\n var _this = this;\n var inputEle = this.parent.createElement('input', {\n id: item.id\n });\n itemEle.appendChild(inputEle);\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.htmlAttributes) {\n if (comboBoxSettings.htmlAttributes.id) {\n delete comboBoxSettings.htmlAttributes.id;\n }\n }\n new ComboBox({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n allowCustom: false,\n floatLabelType: 'Never',\n ignoreAccent: true,\n ignoreCase: true,\n allowFiltering: comboBoxSettings.allowFiltering,\n autofill: comboBoxSettings.autofill,\n cssClass: (RIBBON_CONTROL + SPACE + (comboBoxSettings.cssClass ? comboBoxSettings.cssClass : '')).trim(),\n dataSource: comboBoxSettings.dataSource,\n enabled: !item.disabled,\n fields: comboBoxSettings.fields,\n filterType: comboBoxSettings.filterType,\n footerTemplate: comboBoxSettings.footerTemplate,\n groupTemplate: comboBoxSettings.groupTemplate,\n headerTemplate: comboBoxSettings.headerTemplate,\n index: comboBoxSettings.index,\n itemTemplate: comboBoxSettings.itemTemplate,\n noRecordsTemplate: comboBoxSettings.noRecordsTemplate,\n placeholder: comboBoxSettings.placeholder,\n popupHeight: comboBoxSettings.popupHeight,\n popupWidth: comboBoxSettings.popupWidth,\n showClearButton: comboBoxSettings.showClearButton,\n sortOrder: comboBoxSettings.sortOrder,\n text: comboBoxSettings.text,\n value: comboBoxSettings.value,\n width: comboBoxSettings.width,\n beforeOpen: comboBoxSettings.beforeOpen,\n open: comboBoxSettings.open,\n htmlAttributes: comboBoxSettings.htmlAttributes,\n close: function (e) {\n if (comboBoxSettings.close) {\n comboBoxSettings.close.call(_this, e);\n }\n },\n filtering: comboBoxSettings.filtering,\n change: comboBoxSettings.change,\n select: comboBoxSettings.select,\n created: comboBoxSettings.created\n }, inputEle);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {\n var label = this.parent.createElement('div', {\n className: 'e-ribbon-combobox-label',\n id: item.id + '_label',\n innerHTML: comboBoxSettings.label\n });\n itemEle.insertBefore(label, itemEle.firstChild);\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n inputEle.setAttribute('data-control', item.type.toString());\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties({ cssClass: comboBoxObj.cssClass + SPACE + RIBBON_POPUP_CONTROL });\n comboBoxObj.close = function (e) {\n var target = e.event ? e.event.target : null;\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var comboBoxSettings = item.comboBoxSettings;\n if (comboBoxSettings.label) {\n var label = itemEle.querySelector('#' + item.id + '_label');\n if (label) {\n label.remove();\n }\n }\n var inputEle = itemEle.querySelector('#' + item.id);\n var comboBoxObj = getComponent(inputEle, ComboBox);\n var cssClass = comboBoxObj.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n comboBoxObj.setProperties({ cssClass: cssClass.join(SPACE) });\n comboBoxObj.close = function (e) {\n if (item.comboBoxSettings.close) {\n item.comboBoxSettings.close.call(_this, e);\n }\n };\n };\n RibbonComboBox.prototype.getComboBoxObj = function (controlId) {\n var inputEle = getItemElement(this.parent, controlId);\n return inputEle ? getComponent(inputEle, ComboBox) : null;\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {string } controlId - set the id of the control in which methods needs to be called.\n * @param {Object[] } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n RibbonComboBox.prototype.filter = function (controlId, dataSource, query, fields) {\n this.getComboBoxObj(controlId).filter(dataSource, query, fields);\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.hidePopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.hidePopup();\n };\n /**\n * To open/close DropDownButton popup based on current state of the combobox.\n *\n * @param {string} controlId - Gets the id of the control.\n * @returns {void}\n */\n RibbonComboBox.prototype.showPopup = function (controlId) {\n var comboBoxObj = this.getComboBoxObj(controlId);\n if (!comboBoxObj) {\n return;\n }\n comboBoxObj.showPopup();\n };\n /**\n * Updates the combobox properties.\n *\n * @param {RibbonComboBoxSettingsModel} prop - Gets the combobox property.\n * @param {string} id - Gets the ID of combobox.\n * @returns {void}\n */\n RibbonComboBox.prototype.updateComboBox = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.comboBoxSettings, prop);\n var inputEle = getItemElement(this.parent, id, itemProp);\n if (!inputEle) {\n return;\n }\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + prop.cssClass).trim();\n }\n delete prop.close;\n var comboBoxObj = getComponent(inputEle, ComboBox);\n comboBoxObj.setProperties(prop);\n };\n return RibbonComboBox;\n}());\nexport { RibbonComboBox };\n","import { closest, getComponent, isNullOrUndefined, merge, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { getItem, getItemElement, RibbonItemSize, createTooltip, setCustomAttributes } from '../base/index';\nimport { DROPDOWN_ID, ITEM_VERTICAL_CENTER, OVERFLOW_ID, RIBBON_CONTROL, RIBBON_GROUP_OVERFLOW_DDB, RIBBON_POPUP_CONTROL, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonDropDown = /** @class */ (function () {\n function RibbonDropDown(parent) {\n this.parent = parent;\n }\n RibbonDropDown.prototype.getModuleName = function () {\n return 'ribbonDropDown';\n };\n RibbonDropDown.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createDropDown = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var dropDownSettings = item.dropDownSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (dropDownSettings.cssClass ?\n dropDownSettings.cssClass : '')).trim();\n new DropDownButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: dropDownSettings.closeActionEvents,\n content: item.activeSize === RibbonItemSize.Small ? '' : dropDownSettings.content,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: dropDownSettings.iconCss,\n items: dropDownSettings.items,\n target: dropDownSettings.target,\n createPopupOnClick: dropDownSettings.createPopupOnClick,\n beforeClose: function (e) {\n if (dropDownSettings.beforeClose) {\n dropDownSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: dropDownSettings.beforeItemRender,\n beforeOpen: dropDownSettings.beforeOpen,\n close: function (e) {\n if (dropDownSettings.close) {\n dropDownSettings.close.call(_this, e);\n }\n },\n created: dropDownSettings.created,\n open: dropDownSettings.open,\n select: dropDownSettings.select\n }).appendTo(buttonEle);\n if (dropDownSettings.htmlAttributes) {\n if (dropDownSettings.htmlAttributes.id) {\n delete dropDownSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, dropDownSettings.htmlAttributes);\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n dropdownElement.setAttribute('data-control', item.type.toString());\n var dropdown = getComponent(dropdownElement, DropDownButton);\n dropdown.cssClass = dropdown.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n dropdown.dataBind();\n var target;\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var dropdownElement = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var cssClass = dropdown.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n dropdown.cssClass = cssClass.join(SPACE);\n dropdown.dataBind();\n dropdown.close = function (e) {\n if (item.dropDownSettings.close) {\n item.dropDownSettings.close.call(_this, e);\n }\n };\n dropdown.beforeClose = function (e) {\n if (item.dropDownSettings.beforeClose) {\n item.dropDownSettings.beforeClose.call(_this, e);\n }\n };\n };\n /**\n * Creates Overflow DropDown.\n *\n * @param {string} id - Gets the ID of the dropdown item.\n * @param {string} name - Gets the name of the dropdown item.\n * @param {string} iconCss - Gets the icon of the dropdown item.\n * @param {HTMLElement} groupEle - Gets the overflow group element.\n * @param {HTMLElement} overflowEle - Gets the overflow element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.createOverFlowDropDown = function (id, name, iconCss, groupEle, overflowEle, enableRtl) {\n var _this = this;\n this.enableRtl = enableRtl;\n var buttonEle = this.parent.createElement('button', {\n id: id + OVERFLOW_ID + DROPDOWN_ID\n });\n groupEle.setAttribute('tabindex', '0');\n overflowEle.appendChild(buttonEle);\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n target: groupEle,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,\n iconPosition: 'Top',\n content: name,\n beforeClose: function (args) {\n args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));\n }\n }, buttonEle);\n createTooltip(groupEle, this.parent);\n buttonEle.onclick = buttonEle.onkeydown = function () { _this.itemIndex = 0; };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n groupEle.onkeydown = function (e) { _this.keyActionHandler(e, groupEle), _this; };\n return dropdown;\n };\n RibbonDropDown.prototype.keyActionHandler = function (e, target) {\n var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));\n var items = controlElements.concat(templateElements);\n var comboBoxElements = target.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < items.length; i++) {\n if (items[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (items[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.itemIndex = i;\n }\n }\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {\n if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, !this.enableRtl, items);\n }\n if (e.key === 'ArrowLeft' || (e.shiftKey && e.key === 'Tab')) {\n this.handleNavigation(e, this.enableRtl, items);\n }\n }\n };\n RibbonDropDown.prototype.handleNavigation = function (e, enableRtl, items) {\n if (!(items[0].classList.contains('e-ribbon-first-item'))) {\n items[0].classList.add('e-ribbon-first-item');\n }\n if (!(items[items.length - 1].classList.contains('e-ribbon-last-item'))) {\n items[items.length - 1].classList.add('e-ribbon-last-item');\n }\n if (enableRtl) {\n if (this.itemIndex === 0 && items[parseInt(this.itemIndex.toString(), 10)].classList.contains('e-ribbon-first-item')) {\n this.updateItemIndex(e, items, true);\n }\n if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&\n !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')\n || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {\n this.itemIndex++;\n this.updateItemIndex(e, items, true);\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = 0;\n this.updateItemIndex(e, items, true);\n }\n }\n else {\n if (!e.target.classList.contains('e-combobox') && this.itemIndex !== 0) {\n this.itemIndex--;\n this.updateItemIndex(e, items, false);\n }\n if (e.target.classList.contains('e-ribbon-first-item')) {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (!launcherIcon) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n this.itemIndex = items.length - 1;\n this.updateItemIndex(e, items, false);\n }\n }\n if (e.target.classList.contains('e-combobox') && (e.key === 'Tab')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n }\n }\n };\n RibbonDropDown.prototype.focusLauncherIcon = function (e, items) {\n var groupContainer = items[parseInt(this.itemIndex.toString(), 10)].closest('.e-ribbon-group-container');\n var launcherIconEle;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n return true;\n }\n else {\n return false;\n }\n };\n RibbonDropDown.prototype.updateItemIndex = function (e, items, enableRtl) {\n var ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (enableRtl) {\n if (this.itemIndex < items.length - 1) {\n this.itemIndex++;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = 0;\n }\n }\n else {\n if (this.itemIndex > 0) {\n this.itemIndex--;\n }\n else {\n var launcherIcon = false;\n launcherIcon = this.focusLauncherIcon(e, items);\n if (launcherIcon) {\n break;\n }\n this.itemIndex = items.length - 1;\n }\n }\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(this.itemIndex.toString(), 10)].focus();\n };\n /**\n * Removes Overflow DropDown.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.removeOverFlowDropDown = function (dropdownElement) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdownElement.parentElement.parentElement.insertBefore(dropdown.target, dropdownElement.parentElement);\n dropdown.destroy();\n remove(dropdownElement);\n };\n /**\n * Gets DropDown item element.\n *\n * @param {HTMLElement} dropdownElement - Gets the ribbon DropDown element.\n * @param {string} id - Gets the ID of ribbon DropDown element.\n * @returns {HTMLElement} - Returns the DropDown item element.\n * @hidden\n */\n RibbonDropDown.prototype.getDDBItemElement = function (dropdownElement, id) {\n var dropdown = getComponent(dropdownElement, DropDownButton);\n var dropDownPopup = dropdown.dropDown.element;\n return dropDownPopup.querySelector('#' + id);\n };\n /**\n * Gets Overflow DropDown Popup.\n *\n * @param {itemProps} itemProp - Gets the property of ribbon item.\n * @param {HTMLElement} contentEle - Gets the content element.\n * @returns {HTMLElement} - Returns the Overflow DropDown Popup.\n * @hidden\n */\n RibbonDropDown.prototype.getOverflowDropDownPopup = function (itemProp, contentEle) {\n var dropdownElement = contentEle.querySelector('#' + this.parent.tabs[itemProp.tabIndex].groups[itemProp.groupIndex].id + OVERFLOW_ID + DROPDOWN_ID);\n var dropdown = getComponent(dropdownElement, DropDownButton);\n return dropdown.dropDown.element;\n };\n RibbonDropDown.prototype.getDropDownObj = function (controlId) {\n var dropDownEle = getItemElement(this.parent, controlId);\n return dropDownEle ? getComponent(dropDownEle, DropDownButton) : null;\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the DropDown items.\n * @param {string} text - Gets the text of the dropdown item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonDropDown.prototype.addItems = function (controlId, Items, text) {\n this.getDropDownObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonDropDown.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getDropDownObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonDropDown.prototype.toggle = function (controlId) {\n var dropdownObj = this.getDropDownObj(controlId);\n if (!dropdownObj) {\n return;\n }\n if (!dropdownObj.disabled) {\n dropdownObj.toggle();\n }\n };\n /**\n * Updates the dropdown.\n *\n * @param {RibbonDropDownSettingsModel} prop - Gets the dropdown property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonDropDown.prototype.updateDropDown = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.dropDownSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, DropDownButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.close;\n delete prop.beforeClose;\n if (prop.content) {\n prop.content = itemProp.item.activeSize === RibbonItemSize.Small ? '' : prop.content;\n }\n control.setProperties(prop);\n };\n /**\n * Updated DropDown size\n *\n * @param {HTMLElement} element - Gets the dropdown element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonDropDown.prototype.updateDropDownSize = function (element, item) {\n var control = getComponent(element, DropDownButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n control.setProperties({ content: item.activeSize === RibbonItemSize.Small ? '' : item.dropDownSettings.content });\n };\n return RibbonDropDown;\n}());\nexport { RibbonDropDown };\n","import { EventHandler, getComponent, merge } from '@syncfusion/ej2-base';\nimport { SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { getItem, getItemElement, RibbonItemSize, setCustomAttributes } from '../base/index';\nimport { ITEM_VERTICAL_CENTER, RIBBON_CONTROL, RIBBON_HOVER, RIBBON_POPUP_CONTROL, RIBBON_POPUP_OPEN, SPACE, VERTICAL_DDB } from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonSplitButton = /** @class */ (function () {\n function RibbonSplitButton(parent) {\n this.parent = parent;\n }\n RibbonSplitButton.prototype.getModuleName = function () {\n return 'ribbonSplitButton';\n };\n RibbonSplitButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates SplitButton.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.createSplitButton = function (item, itemEle) {\n var _this = this;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n var splitButtonSettings = item.splitButtonSettings;\n var cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + (splitButtonSettings.cssClass ?\n splitButtonSettings.cssClass : '')).trim();\n var splitbutton = new SplitButton({\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n closeActionEvents: splitButtonSettings.closeActionEvents,\n cssClass: cssClass + ((item.activeSize === RibbonItemSize.Large) ? (SPACE + VERTICAL_DDB) : ''),\n disabled: item.disabled,\n iconCss: splitButtonSettings.iconCss,\n items: splitButtonSettings.items,\n target: splitButtonSettings.target,\n beforeClose: function (e) {\n if (splitButtonSettings.beforeClose) {\n splitButtonSettings.beforeClose.call(_this, e);\n }\n },\n beforeItemRender: splitButtonSettings.beforeItemRender,\n beforeOpen: splitButtonSettings.beforeOpen,\n close: function () {\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.close) {\n splitButtonSettings.close.call(_this);\n }\n },\n created: splitButtonSettings.created,\n open: function () {\n splitbutton['wrapper'].classList.add(RIBBON_POPUP_OPEN);\n if (splitButtonSettings.open) {\n splitButtonSettings.open.call(_this);\n }\n },\n select: splitButtonSettings.select,\n click: function (e) {\n if (splitButtonSettings.click) {\n splitButtonSettings.click.call(_this, e);\n }\n }\n }, buttonEle);\n if (splitButtonSettings.htmlAttributes) {\n if (splitButtonSettings.htmlAttributes.id) {\n delete splitButtonSettings.htmlAttributes.id;\n }\n setCustomAttributes(buttonEle, splitButtonSettings.htmlAttributes);\n }\n var dropdownEle = buttonEle.parentElement.querySelector('.e-dropdown-btn');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n this.setContent(item, splitbutton);\n var wrapper = splitbutton['wrapper'];\n EventHandler.add(wrapper, 'mouseenter', function () { wrapper.classList.add(RIBBON_HOVER); }, this);\n EventHandler.add(wrapper, 'mouseleave', function () { wrapper.classList.remove(RIBBON_HOVER); }, this);\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n splitButtonEle.setAttribute('data-control', item.type.toString());\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n splitbutton.cssClass = splitbutton.cssClass + SPACE + RIBBON_POPUP_CONTROL;\n splitbutton.dataBind();\n var dropdownEle = splitButtonEle.parentElement.querySelector('.e-dropdown-btn');\n var ddbId = dropdownEle.getAttribute('id');\n var popupEle = document.querySelector('#' + ddbId + '-popup');\n dropdownEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.stopImmediatePropagation();\n dropdownEle.click();\n }\n };\n popupEle.onkeydown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n splitbutton['wrapper'].classList.remove('e-ribbon-open');\n popupEle.querySelector('.e-focused').click();\n }\n };\n var target;\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n target = e.event ? e.event.target : null;\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n if (target && !target.closest('.e-ribbon-group-overflow-ddb')) {\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved from overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var _this = this;\n var splitButtonEle = itemEle.querySelector('#' + item.id);\n var splitbutton = getComponent(splitButtonEle, SplitButton);\n var cssClass = splitbutton.cssClass.split(SPACE);\n cssClass = cssClass.filter(function (value) { return value !== RIBBON_POPUP_CONTROL; });\n splitbutton.cssClass = cssClass.join(SPACE);\n splitbutton.dataBind();\n splitbutton.beforeClose = function (e) {\n if (item.splitButtonSettings.beforeClose) {\n item.splitButtonSettings.beforeClose.call(_this, e);\n }\n };\n splitbutton.click = function (e) {\n if (item.splitButtonSettings.click) {\n item.splitButtonSettings.click.call(_this, e);\n }\n };\n splitbutton.close = function (e) {\n if (item.splitButtonSettings.close) {\n item.splitButtonSettings.close.call(_this, e);\n }\n splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);\n };\n };\n RibbonSplitButton.prototype.setContent = function (item, control) {\n control['primaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Medium) ? item.splitButtonSettings.content : '' });\n control['secondaryBtnObj'].setProperties({ content: (item.activeSize === RibbonItemSize.Large) ? item.splitButtonSettings.content : '' });\n };\n RibbonSplitButton.prototype.getSplitButtonObj = function (controlId) {\n var splitButtonEle = getItemElement(this.parent, controlId);\n return getComponent(splitButtonEle, SplitButton);\n };\n /**\n * Adds a new item to the menu. By default, new item appends to\n * the list as the last item, but you can insert based on the text parameter.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {ItemModel[]} Items - Gets the SplitButton items.\n * @param {string} text - Gets the text of the splitbutton item where the new item needs to be inserted.\n * @returns {void}\n */\n RibbonSplitButton.prototype.addItems = function (controlId, Items, text) {\n this.getSplitButtonObj(controlId).addItems(Items, text);\n };\n /**\n * Removes the items from the menu.\n *\n * @param {string} controlId - Gets the control ID.\n * @param {string[]} Items -\n * @param {string} isUniqueId -\n * @returns {void}\n */\n RibbonSplitButton.prototype.removeItems = function (controlId, Items, isUniqueId) {\n this.getSplitButtonObj(controlId).removeItems(Items, isUniqueId);\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @param {string} controlId - Gets the control ID.\n * @returns {void}\n */\n RibbonSplitButton.prototype.toggle = function (controlId) {\n var splitBtnObj = this.getSplitButtonObj(controlId);\n if (!splitBtnObj) {\n return;\n }\n if (!splitBtnObj.disabled) {\n splitBtnObj.toggle();\n }\n };\n /**\n * Updates the splitbutton.\n *\n * @param {RibbonSplitButtonSettingsModel} prop - Gets the splitbutton property.\n * @param {string} id - Gets the ID of dropdown.\n * @returns {void}\n */\n RibbonSplitButton.prototype.updateSplitButton = function (prop, id) {\n var itemProp = getItem(this.parent.tabs, id);\n if (!itemProp) {\n return;\n }\n merge(itemProp.item.splitButtonSettings, prop);\n var btnEle = getItemElement(this.parent, id, itemProp);\n if (!btnEle) {\n return;\n }\n var control = getComponent(btnEle, SplitButton);\n if (prop.cssClass) {\n prop.cssClass = (RIBBON_CONTROL + SPACE + ITEM_VERTICAL_CENTER + SPACE + prop.cssClass).trim();\n prop.cssClass = itemProp.item.activeSize === RibbonItemSize.Large ?\n (VERTICAL_DDB + SPACE + prop.cssClass).trim() : prop.cssClass;\n control.cssClass = prop.cssClass;\n }\n delete prop.open;\n delete prop.click;\n delete prop.close;\n delete prop.beforeClose;\n control.setProperties(prop);\n if (prop.content) {\n this.setContent(itemProp.item, control);\n }\n };\n /**\n * Updated SplitButton size\n *\n * @param {HTMLElement} element - Gets the splibutton element.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n RibbonSplitButton.prototype.updateSplitButtonSize = function (element, item) {\n var control = getComponent(element, SplitButton);\n var cssClass = control.cssClass.split(SPACE);\n if (item.activeSize === RibbonItemSize.Large) {\n cssClass.push(VERTICAL_DDB);\n }\n else {\n cssClass = cssClass.filter(function (value) { return value !== VERTICAL_DDB; });\n }\n control.cssClass = cssClass.join(SPACE);\n control.setProperties({ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left' });\n this.setContent(item, control);\n };\n return RibbonSplitButton;\n}());\nexport { RibbonSplitButton };\n","import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { createTooltip, isTooltipPresent, setCustomAttributes } from '../base/utils';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGroupButton = /** @class */ (function () {\n function RibbonGroupButton(parent) {\n this.parent = parent;\n this.isSelected = false;\n }\n RibbonGroupButton.prototype.getModuleName = function () {\n return 'ribbonGroupButton';\n };\n RibbonGroupButton.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Group Button\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n this.count = 0;\n var btnContainerEle = this.parent.createElement('div', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID,\n className: 'e-btn-group'\n });\n itemElement.appendChild(btnContainerEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {\n var groupButtonEle = this.parent.createElement('button', {\n id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,\n className: constants.RIBBON_GROUP_BUTTON\n });\n btnContainerEle.appendChild(groupButtonEle);\n new Button({\n iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,\n disabled: item.disabled,\n enableRtl: this.parent.enableRtl,\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'\n }, groupButtonEle);\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes) {\n setCustomAttributes(groupButtonEle, groupBtnSettings.items[parseInt(i.toString(), 10)].htmlAttributes);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n groupButtonEle.classList.add(constants.RIBBON_GROUP_BUTTON_CONTENT);\n groupButtonEle.setAttribute('aria-label', groupBtnSettings.items[parseInt(i.toString(), 10)].content);\n }\n else {\n groupButtonEle.setAttribute('aria-label', 'groupbuttonitem');\n }\n var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n else {\n btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {\n if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n buttonEle.classList.add('e-active');\n }\n else {\n if (this.count < 1) {\n buttonEle.classList.add('e-active');\n this.count++;\n }\n }\n }\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&\n isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {\n groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({\n id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings\n });\n }\n EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = void 0;\n var activeEleCount = 0;\n var count = 0;\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&\n groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else {\n dropdownIcon = null;\n }\n }\n }\n while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {\n if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {\n dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;\n this.isSelected = true;\n }\n count++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: btnContainerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n btnContainerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(btnContainerEle, this.parent);\n this.isSelected = false;\n }\n };\n RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {\n var previousItems = [];\n var selectingItems = [];\n var selectedItems = [];\n var groupButtonEle;\n var dropdown;\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs = {\n cancel: false, previousItems: previousItems, selectingItems: selectingItems\n };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n else {\n if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n }\n for (var j = 0; j < grpBtnSettings.items.length; j++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');\n grpBtnSettings.items[parseInt(j.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].setProperties({ selected: true }, true);\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {\n this.grpBtnIndex = itemIndex;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({\n iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss\n });\n }\n }\n else {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);\n }\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: true }, true);\n }\n else {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].\n setProperties({ selected: false }, true);\n }\n var activeEleCount = 0;\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {\n this.isSelected = true;\n activeEleCount++;\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n var dropdownIcon = null;\n var itemsCount = 0;\n groupButtonEle = document.querySelector('#' + item.id);\n dropdown = getComponent(groupButtonEle, DropDownButton);\n if (!this.isSelected) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;\n }\n }\n else {\n if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {\n for (var n = 0; n < grpBtnSettings.items.length; n++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {\n dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;\n }\n }\n }\n }\n while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {\n if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n dropdown.setProperties({ iconCss: dropdownIcon });\n this.grpBtnIndex = itemIndex;\n }\n this.isSelected = false;\n }\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {\n selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);\n }\n var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };\n if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {\n grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);\n }\n }\n };\n /**\n * updates group button in mode switching\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemElement - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var dropdownIcon = null;\n var activeEleCount = 0;\n var itemsCount = 0;\n if (this.parent.activeLayout === 'Simplified') {\n var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemElement.appendChild(buttonEle);\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {\n if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {\n activeEleCount++;\n if (activeEleCount === 1) {\n dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;\n }\n else if (activeEleCount > 1) {\n dropdownIcon = null;\n }\n }\n }\n }\n while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {\n if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {\n dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;\n }\n itemsCount++;\n }\n var dropdown = new DropDownButton({\n iconCss: dropdownIcon,\n target: containerEle,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-dropdown-group-button',\n disabled: item.disabled\n }, buttonEle);\n if (groupBtnSettings.header) {\n var dropDownPopup = dropdown.dropDown;\n this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);\n }\n buttonEle.onclick = buttonEle.onkeydown = function () {\n _this.handleFocusState(item, itemElement);\n };\n containerEle.onkeydown = function (e) {\n if (_this.parent.activeLayout === 'Simplified') {\n _this.handleGroupButtonNavigation(e, item);\n }\n };\n createTooltip(containerEle, this.parent);\n }\n else {\n var groupButtonEle = itemElement.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n itemElement.appendChild(dropdown.target);\n if (groupButtonEle) {\n dropdown.destroy();\n remove(groupButtonEle);\n }\n }\n };\n RibbonGroupButton.prototype.handleFocusState = function (item, itemElement) {\n if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {\n var defaultSelectedBtn = document.querySelector('#' + item.id + '_grpbtn').querySelector('.' + constants.RIBBON_GROUP_BUTTON + '.e-active');\n if (defaultSelectedBtn) {\n defaultSelectedBtn.focus();\n }\n else {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();\n }\n this.grpBtnIndex = 0;\n }\n };\n RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {\n var groupButtonHeader = this.parent.createElement('div', {\n className: 'e-ribbon-groupbutton-header',\n id: itemID + constants.HEADER_ID,\n innerHTML: groupBtnSettings.header\n });\n popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);\n };\n RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n var isOverflowPopup = false;\n if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n isOverflowPopup = true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var groupBtnSettings = item.groupButtonSettings;\n if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {\n if (this.grpBtnIndex === 0) {\n this.grpBtnIndex = groupBtnSettings.items.length - 1;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex--;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n else {\n this.grpBtnIndex++;\n if (this.grpBtnIndex < groupBtnSettings.items.length) {\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n else {\n this.grpBtnIndex = 0;\n document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();\n }\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @param {DropDownButton} overflowButton - Gets the overflow button.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {\n var _this = this;\n var groupBtnSettings = item.groupButtonSettings;\n var isIconOnly = true;\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });\n var targetEle = dropdown.target;\n if (targetEle.children.length) {\n for (var i = 0; i < targetEle.children.length; i++) {\n if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {\n isIconOnly = false;\n break;\n }\n }\n if (isIconOnly) {\n targetEle.classList.add('e-icon-btn');\n }\n }\n targetEle.onclick = function () {\n if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {\n dropdown.toggle();\n if (overflowButton.element.classList.contains('e-active')) {\n overflowButton.toggle();\n }\n }\n };\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {\n var groupButtonEle = itemEle.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var targetEle = dropdown.target;\n if (targetEle.classList.contains('e-icon-btn')) {\n targetEle.classList.remove('e-icon-btn');\n }\n var cssClass = dropdown.cssClass.split(constants.SPACE);\n cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });\n dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE), content: '' });\n }\n };\n /**\n * Removes DropDown.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.destroyDropDown = function (item) {\n var groupButtonEle = document.querySelector('#' + item.id);\n if (groupButtonEle) {\n var dropdown = getComponent(groupButtonEle, DropDownButton);\n var tooltip = getComponent(dropdown.target, Tooltip);\n tooltip.destroy();\n dropdown.destroy();\n remove(groupButtonEle);\n }\n };\n /**\n * Updates the group button size.\n *\n * @param {HTMLElement} itemElement - Gets the group button container element.\n * @param {RibbonItemModel} item - Gets the ribbon item.\n * @returns {void}\n * @hidden\n */\n RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {\n var groupBtnSettings = item.groupButtonSettings;\n var buttonEle;\n for (var i = 0; i < groupBtnSettings.items.length; i++) {\n if (this.parent.activeLayout === 'Classic') {\n buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n else {\n buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n }\n if (buttonEle) {\n var buttonObj = getComponent(buttonEle, Button);\n buttonObj.setProperties({\n iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',\n content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content\n });\n }\n }\n };\n return RibbonGroupButton;\n}());\nexport { RibbonGroupButton };\n","import { append, getComponent, remove, formatUnit, isNullOrUndefined, setValue } from '@syncfusion/ej2-base';\nimport { getItem, getTemplateFunction, setCustomAttributes } from '../base/index';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonGallery = /** @class */ (function () {\n function RibbonGallery(parent) {\n this.count = 0;\n this.isAdded = false;\n this.galleryItemsIndex = 0;\n this.registeredTemplate = {};\n this.parent = parent;\n var ref = 'viewContainerRef';\n setValue('registeredTemplate', this.registeredTemplate, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(ref, this.parent[\"\" + ref], this);\n }\n RibbonGallery.prototype.getModuleName = function () {\n return 'ribbonGallery';\n };\n RibbonGallery.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates gallery.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.createGallery = function (item, itemEle) {\n var _this = this;\n var gallerySettings = item.gallerySettings;\n this.renderGalleryItems(gallerySettings, false, item.id, itemEle);\n var buttonEle = this.parent.createElement('button', {\n id: item.id + '_popupButton',\n className: 'e-ribbon-gallery-button e-icons e-drop-icon'\n });\n buttonEle.setAttribute('aria-label', 'gallerydropdownbutton');\n itemEle.appendChild(buttonEle);\n this.createPopup(item, buttonEle);\n buttonEle.onclick = function (args) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n if (popupEle) {\n var popup = getComponent(popupEle, Popup);\n if (popupEle.classList.contains('e-popup-close')) {\n _this.showPopup(popup, popupEle, args, gallerySettings, item.id);\n }\n else {\n _this.hidePopup(popup, popupEle, args, gallerySettings, item.id);\n }\n }\n };\n document.onclick = function (args) {\n var popupEle = document.querySelectorAll('.e-ribbon-gallery-popup.e-popup-open');\n var popupID;\n var itemProp;\n for (var i = 0; i < popupEle.length; i++) {\n var popup = getComponent(popupEle[parseInt(i.toString(), 10)], Popup);\n if (args.target.classList.contains('e-ribbon-gallery-button')) {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n if ((args.target.id).replace(/_popupButton/g, '') !== popupID) {\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n else {\n popupID = (popupEle[parseInt(i.toString(), 10)].id).replace(/_galleryPopup/g, '');\n itemProp = getItem(_this.parent.tabs, popupID);\n _this.hidePopup(popup, popupEle[parseInt(i.toString(), 10)], args, itemProp.item.gallerySettings, popupID);\n break;\n }\n }\n };\n };\n RibbonGallery.prototype.renderGalleryItems = function (gallerySettings, isPopup, id, itemEle) {\n var _this = this;\n var galleryContainerEle;\n var galleryEle;\n var itemProp = getItem(this.parent.tabs, id);\n if (itemProp && itemProp.group) {\n itemProp.group.isCollapsible = false;\n }\n var galleryWrapper = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-wrapper',\n id: id + '_galleryWrapper'\n });\n if (!isPopup) {\n itemEle.appendChild(galleryWrapper);\n }\n var _loop_1 = function (i) {\n var isHeightDefined = false;\n galleryContainerEle = this_1.parent.createElement('ol', {\n className: 'e-ribbon-gallery-container',\n id: id + '_galleryContainer' + i\n });\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n isHeightDefined = true;\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].cssClass) {\n galleryContainerEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].cssClass);\n }\n var _loop_2 = function (j) {\n galleryEle = this_1.parent.createElement('li', {\n className: 'e-ribbon-gallery-item',\n id: (isPopup ? 'popup_' : '') + galleryContainerEle.id + '_gallery' + j,\n attrs: { 'tabindex': '0' }\n });\n var itemEventArgs = { name: 'beforeItemRender', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.beforeItemRender) {\n gallerySettings.beforeItemRender.call(this_1, itemEventArgs);\n }\n galleryContainerEle.appendChild(galleryEle);\n if (gallerySettings.selectedItemIndex && gallerySettings.selectedItemIndex === this_1.count) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n }\n else {\n if (!gallerySettings.selectedItemIndex && this_1.count === 0) {\n galleryEle.classList.add('e-ribbon-gallery-selected');\n gallerySettings.selectedItemIndex = this_1.count;\n }\n }\n this_1.count = this_1.count + 1;\n galleryEle.onclick = function (e) {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n };\n galleryEle.onkeydown = function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.setActiveState(e.currentTarget, gallerySettings, id, true, e, isPopup);\n }\n };\n galleryEle.onmouseover = function (e) {\n var hoverEventArgs = { event: e, name: 'itemHover', item: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)] };\n if (gallerySettings.itemHover) {\n gallerySettings.itemHover.call(_this, hoverEventArgs);\n }\n };\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth && gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth !== 'auto') {\n galleryEle.style.width = gallerySettings.groups[parseInt(i.toString(), 10)].itemWidth + 'px';\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight && gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight !== 'auto') {\n galleryEle.style.height = gallerySettings.groups[parseInt(i.toString(), 10)].itemHeight + 'px';\n galleryEle.style.paddingTop = '0px';\n galleryEle.style.paddingBottom = '0px';\n if (this_1.parent.activeLayout !== 'Simplified' && !isPopup) {\n galleryContainerEle.style.flexFlow = 'wrap';\n }\n }\n if ((!gallerySettings.template && !gallerySettings.popupTemplate) ||\n ((gallerySettings.template && !gallerySettings.popupTemplate) && isPopup) ||\n ((gallerySettings.popupTemplate && !gallerySettings.template) && !isPopup)) {\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].htmlAttributes) {\n setCustomAttributes(galleryEle, gallerySettings.groups[parseInt(i.toString(), 10)]\n .items[parseInt(j.toString(), 10)].htmlAttributes);\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n var iconEle = this_1.parent.createElement('span', {\n className: 'e-ribbon-gallery-icons' + ' ' + gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss\n });\n galleryEle.appendChild(iconEle);\n if (this_1.parent.activeLayout === 'Simplified' && !isPopup) {\n iconEle.classList.add('e-hidden');\n }\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content) {\n galleryEle.appendChild(this_1.parent.createElement('span', {\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].content,\n className: 'e-ribbon-gallery-text'\n }));\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].disabled) {\n galleryEle.classList.add('e-disabled');\n }\n if (gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass) {\n galleryEle.classList.add(gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].cssClass);\n }\n }\n if (gallerySettings.template && !isPopup) {\n this_1.createGalleryTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if (gallerySettings.popupTemplate && isPopup) {\n this_1.createGalleryPopupTemplate(galleryEle, gallerySettings, id, gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)]);\n }\n if ((!isPopup && !isHeightDefined && (gallerySettings.itemCount === this_1.count))) {\n galleryWrapper.appendChild(galleryContainerEle);\n this_1.isAdded = true;\n return \"break\";\n }\n };\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n if (this_1.isAdded && !isPopup) {\n return \"break\";\n }\n if (!isPopup) {\n galleryWrapper.appendChild(galleryContainerEle);\n }\n else {\n itemEle.appendChild(galleryContainerEle);\n }\n if (isPopup && gallerySettings.groups[parseInt(i.toString(), 10)].header) {\n var headerEle = (this_1.parent.createElement('div', {\n className: 'e-ribbon-gallery-header',\n innerHTML: gallerySettings.groups[parseInt(i.toString(), 10)].header\n }));\n itemEle.insertBefore(headerEle, galleryContainerEle);\n }\n };\n var this_1 = this;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n this.count = 0;\n this.isAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.portals = this.parent.portals.concat(this['portals']);\n this.parent['renderReactTemplates']();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this['portals'] = undefined;\n }\n };\n RibbonGallery.prototype.setWrapperWidth = function (itemCount, galleryWrapper, gallerySettings, itemID) {\n var count = 1;\n var itemsWidth = 0;\n var isWidthApplied = false;\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (itemCount >= count) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n itemsWidth += galleryItemEle.offsetWidth;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var paddingWidth = parseFloat(itemStyles.paddingLeft) + parseFloat(itemStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n itemsWidth += paddingWidth;\n }\n var marginWidth = parseFloat(itemStyles.marginLeft) + parseFloat(itemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n }\n }\n else {\n isWidthApplied = true;\n break;\n }\n count++;\n }\n if (isWidthApplied) {\n break;\n }\n }\n if (itemsWidth > 0) {\n galleryWrapper.style.width = itemsWidth + 'px';\n }\n };\n /**\n * Checks the gallery items height.\n *\n * @param {HTMLElement} activeContent - Gets the current active content.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkAvailableHeight = function (activeContent) {\n var galleryWrapperItems = activeContent.querySelectorAll('.e-ribbon-gallery-wrapper');\n for (var n = 0; n < galleryWrapperItems.length; n++) {\n var count = 0;\n var simplifiedItemsCount = 0;\n var isHeight = false;\n var galleryWrapper = galleryWrapperItems[parseInt(n.toString(), 10)];\n var itemID = galleryWrapper.id.replace(/_galleryWrapper/g, '');\n var galleryWrapperHeight = galleryWrapper.offsetHeight;\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp) {\n this.setWrapperWidth(itemProp.item.gallerySettings.itemCount, galleryWrapper, itemProp.item.gallerySettings, itemID);\n for (var i = 0; i < itemProp.item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < itemProp.item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n var galleryItemEle = galleryWrapper.querySelector('#' + itemID + '_galleryContainer' + i + '_gallery' + j);\n if (galleryItemEle) {\n if (this.parent.activeLayout === 'Classic') {\n if (galleryItemEle.classList.contains('e-hidden')) {\n galleryItemEle.classList.remove('e-hidden');\n }\n if (!isHeight) {\n var itemsValues = 0;\n var itemStyles = window.getComputedStyle(galleryItemEle);\n if (itemStyles) {\n var marginWidth = parseFloat(itemStyles.marginTop) + parseFloat(itemStyles.marginBottom);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsValues += marginWidth;\n }\n }\n count++;\n if (itemProp.item.gallerySettings.itemCount === count) {\n count = 0;\n if (galleryWrapperHeight >= (galleryItemEle.offsetHeight + itemsValues)) {\n galleryWrapperHeight -= (galleryItemEle.offsetHeight + itemsValues);\n }\n else {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else if (galleryWrapperHeight < (galleryItemEle.offsetHeight + itemsValues)) {\n isHeight = true;\n galleryItemEle.remove();\n }\n }\n else {\n galleryItemEle.remove();\n }\n }\n else {\n simplifiedItemsCount++;\n if (simplifiedItemsCount > itemProp.item.gallerySettings.itemCount) {\n galleryItemEle.classList.add('e-hidden');\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Checks the popup collision.\n *\n * @param {Popup} popup - Gets the popup.\n * @param {HTMLElement} popupEle - Gets the popup element.\n * @param {number} offsetValue - Gets the offset value of gallery popup button.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.checkCollision = function (popup, popupEle, offsetValue) {\n if (offsetValue === void 0) { offsetValue = 0; }\n var paddingWidth = 0;\n var marginWidth = 0;\n if (popupEle) {\n var windowWidth = window.innerWidth;\n var screenWidth = offsetValue === 0 ? windowWidth : Math.abs(windowWidth - (windowWidth - offsetValue));\n var paddingStyles = window.getComputedStyle(popupEle);\n if (paddingStyles) {\n paddingWidth = parseFloat(paddingStyles.paddingLeft) + parseFloat(paddingStyles.paddingRight);\n if (!(isNullOrUndefined(paddingWidth))) {\n screenWidth = screenWidth - paddingWidth;\n }\n }\n var popupContainerItems = popupEle.querySelectorAll('.e-ribbon-gallery-container');\n if (popup.width !== 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n }\n var isCollideOccurs = false;\n for (var i = 0; i < popupContainerItems.length; i++) {\n var itemsWidth = 0;\n for (var j = 0; j < popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item').length; j++) {\n var popupItemStyles = window.getComputedStyle(popupContainerItems[parseInt(i.toString(), 10)].querySelectorAll('.e-ribbon-gallery-item')[parseInt(j.toString(), 10)]);\n if (popupItemStyles) {\n marginWidth = parseFloat(popupItemStyles.marginLeft) + parseFloat(popupItemStyles.marginRight);\n if (!(isNullOrUndefined(marginWidth))) {\n itemsWidth += marginWidth;\n }\n }\n itemsWidth += Math.round(parseFloat(popupItemStyles.width));\n if (((screenWidth <= itemsWidth) && popup.width === 'auto') || ((popup.width !== 'auto') && (screenWidth <= parseInt(popup.width.toString(), 10)) && (screenWidth <= itemsWidth))) {\n popupEle.style.width = ((itemsWidth + Math.abs(paddingWidth - marginWidth)) - Math.round(parseFloat(popupItemStyles.width))) + 'px';\n isCollideOccurs = true;\n break;\n }\n }\n if (isCollideOccurs) {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'wrap';\n });\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n break;\n }\n }\n if (!isCollideOccurs) {\n if (popup.width === 'auto') {\n popupContainerItems.forEach(function (ele) {\n ele.style.flexFlow = 'nowrap';\n });\n popupEle.style.width = 'auto';\n }\n else {\n popupEle.style.width = (popup.width).toString();\n }\n if (popup.height === 'auto') {\n this.setGalleryPopupHeight(popupEle, parseFloat(paddingStyles.height), parseFloat(paddingStyles.top));\n }\n }\n }\n };\n RibbonGallery.prototype.setGalleryPopupHeight = function (popupEle, popupHeight, popupTop) {\n if (window.innerHeight < popupHeight || window.innerHeight < Math.round(popupHeight + popupTop)) {\n popupEle.style.height = (window.innerHeight - popupTop) + 'px';\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n RibbonGallery.prototype.createPopup = function (item, buttonEle) {\n var popupContainer = this.parent.createElement('div', {\n className: 'e-ribbon-popup-container',\n id: item.id + '_popupContainer'\n });\n this.renderGalleryItems(item.gallerySettings, true, item.id, popupContainer);\n var gallerypopupElement = this.parent.createElement('div', {\n className: 'e-ribbon-gallery-popup',\n id: item.id + '_galleryPopup'\n });\n document.body.append(gallerypopupElement);\n var galleryPopup = new Popup(gallerypopupElement, {\n relateTo: buttonEle,\n content: popupContainer,\n collision: { X: 'fit', Y: 'flip' },\n actionOnScroll: 'hide',\n targetType: 'relative',\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n width: item.gallerySettings.popupWidth,\n height: item.gallerySettings.popupHeight\n });\n galleryPopup.hide();\n };\n /**\n * Updates gallery in mode switching.\n *\n * @param {string} activeLayout - Gets the current active layout.\n * @param {string} itemID - Gets the ribbon item id.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.switchGalleryItems = function (activeLayout, itemID) {\n var itemEle = this.parent.element.querySelector('#' + itemID + constants.CONTAINER_ID);\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemEle) {\n var galleryIcons = itemEle.querySelectorAll('.e-ribbon-gallery-icons');\n var galleryContainer = itemEle.querySelectorAll('.e-ribbon-gallery-container');\n if (galleryIcons.length) {\n for (var i = 0; i < galleryIcons.length; i++) {\n if (activeLayout === 'Simplified') {\n galleryIcons[parseInt(i.toString(), 10)].classList.add('e-hidden');\n }\n else {\n galleryIcons[parseInt(i.toString(), 10)].classList.remove('e-hidden');\n }\n }\n }\n if (galleryContainer.length && itemProp) {\n for (var n = 0; n < itemProp.item.gallerySettings.groups.length; n++) {\n for (var i = 0; i < galleryContainer.length; i++) {\n if (itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight && itemProp.item.gallerySettings.groups[parseInt(n.toString(), 10)].itemHeight !== 'auto') {\n if (itemID + '_galleryContainer' + n === galleryContainer[parseInt(i.toString(), 10)].id) {\n if (activeLayout === 'Simplified') {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'nowrap';\n }\n else {\n galleryContainer[parseInt(i.toString(), 10)].style.flexFlow = 'wrap';\n }\n }\n }\n }\n }\n }\n var activeContent = this.parent.tabObj.element.querySelector('#' + this.parent.tabs[this.parent.selectedTab].id + constants.CONTENT_ID);\n if (activeContent) {\n this.checkAvailableHeight(activeContent);\n }\n }\n };\n /**\n * Adds the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.addOverFlowEvents = function (item, itemEle) {\n var _this = this;\n if (itemEle.closest('.e-ribbon-overflow-target')) {\n var buttonEle = this.parent.createElement('button', {\n id: item.id\n });\n itemEle.appendChild(buttonEle);\n if (itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.contains('e-disabled')) {\n buttonEle.classList.add('e-disabled');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.add('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.add('e-hidden');\n });\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.add('e-hidden');\n }\n var itemProp = getItem(this.parent.tabs, item.id);\n var iconCss = itemProp && itemProp.group.groupIconCss ? itemProp.group.groupIconCss : '';\n var content = itemProp && itemProp.group.header ? itemProp.group.header : '';\n if (!iconCss) {\n for (var i = 0; i < item.gallerySettings.groups.length; i++) {\n for (var j = 0; j < item.gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss) {\n iconCss = item.gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)].iconCss;\n break;\n }\n }\n if (iconCss) {\n break;\n }\n }\n }\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n var popupContainerEle_1 = document.querySelector('#' + item.id + '_galleryPopup .e-ribbon-popup-container');\n var dropdown = new DropDownButton({\n iconCss: iconCss,\n content: content,\n target: popupContainerEle_1,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-gallery-dropdown',\n disabled: item.disabled,\n open: function () {\n _this.setFoucsToFirstItem(popupContainerEle_1, true, item.id);\n },\n beforeClose: function (args) {\n var isCancelled = _this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);\n if (isCancelled) {\n args.cancel = true;\n }\n }\n }, buttonEle);\n if (popup.width !== 'auto') {\n dropdown.dropDown.width = formatUnit(popup.width);\n }\n if (popup.height !== 'auto') {\n dropdown.dropDown.height = formatUnit(popup.height);\n dropdown.dropDown.element.style.height = (popup.height).toString();\n }\n }\n };\n /**\n * Removes the additional event handlers as the item moved into overflow popup.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {HTMLElement} itemEle - Gets the ribbon item element.\n * @returns {void}\n * @hidden\n */\n RibbonGallery.prototype.removeOverFlowEvents = function (item, itemEle) {\n var popupButton = itemEle.querySelector('#' + item.id + '_popupButton');\n if (popupButton) {\n popupButton.classList.remove('e-hidden');\n }\n itemEle.querySelector('.e-ribbon-gallery-wrapper').classList.remove('e-hidden');\n itemEle.querySelectorAll('.e-ribbon-gallery-container').forEach(function (ele) {\n ele.classList.remove('e-hidden');\n });\n var galleryDDBEle = document.querySelector('#' + item.id);\n if (galleryDDBEle) {\n var popupEle = document.querySelector('#' + item.id + '_galleryPopup');\n var dropdown = getComponent(galleryDDBEle, DropDownButton);\n popupEle.appendChild(dropdown.target);\n dropdown.destroy();\n remove(galleryDDBEle);\n }\n };\n RibbonGallery.prototype.setActiveState = function (galleryEle, gallerySettings, itemID, isInteracted, event, isPopup) {\n var previousItem;\n var currentItem;\n var itemEle = document.querySelector('#' + itemID + constants.CONTAINER_ID);\n var selctedGalleryItem = Array.prototype.slice.call(itemEle.querySelectorAll('.e-ribbon-gallery-selected'));\n var popupEle = document.querySelector('#' + itemID + '_popupContainer');\n var popupGalleryItem = Array.prototype.slice.call(popupEle.querySelectorAll('.e-ribbon-gallery-selected'));\n if (popupGalleryItem.length) {\n selctedGalleryItem = selctedGalleryItem.concat(popupGalleryItem);\n }\n for (var i = 0; i < gallerySettings.groups.length; i++) {\n for (var j = 0; j < gallerySettings.groups[parseInt(i.toString(), 10)].items.length; j++) {\n if (selctedGalleryItem[0].id === itemID + '_galleryContainer' + i + '_gallery' + j) {\n previousItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n if (galleryEle.id === (isPopup ? 'popup_' : '') + itemID + '_galleryContainer' + i + '_gallery' + j) {\n currentItem = gallerySettings.groups[parseInt(i.toString(), 10)].items[parseInt(j.toString(), 10)];\n }\n }\n }\n var galleryItem = document.getElementById(galleryEle.id);\n var galleryItemPopup;\n var selectingEventArgs = { cancel: false, name: 'beforeSelect', previousItem: previousItem, currentItem: currentItem, isInteracted: isInteracted, event: event };\n if (gallerySettings.beforeSelect) {\n gallerySettings.beforeSelect.call(this, selectingEventArgs);\n }\n if (selectingEventArgs.cancel) {\n return;\n }\n else {\n for (var i = 0; i < selctedGalleryItem.length; i++) {\n selctedGalleryItem[parseInt(i.toString(), 10)].classList.remove('e-ribbon-gallery-selected');\n }\n if (!galleryItem.id.startsWith('popup_')) {\n galleryItemPopup = document.getElementById('popup_' + galleryEle.id);\n }\n else if (document.getElementById(galleryItem.id.slice(6))) {\n galleryItemPopup = document.getElementById(galleryItem.id.slice(6));\n }\n if (galleryItemPopup) {\n galleryItemPopup.classList.add('e-ribbon-gallery-selected');\n }\n galleryItem.classList.add('e-ribbon-gallery-selected');\n var selectedEventArgs = { previousItem: previousItem, currentItem: currentItem, name: 'select', isInteracted: isInteracted, event: event };\n var galleryPopupItems = document.querySelectorAll('#' + itemID + '_popupContainer .e-ribbon-gallery-item');\n for (var i = 0; i < galleryPopupItems.length; i++) {\n if (galleryPopupItems[parseInt(i.toString(), 10)].id === galleryEle.id) {\n gallerySettings.selectedItemIndex = i;\n break;\n }\n }\n if (gallerySettings.select) {\n gallerySettings.select.call(this, selectedEventArgs);\n }\n }\n };\n RibbonGallery.prototype.popupEvents = function (args, gallerySettings, name, isOpen) {\n var popupEventArgs = { cancel: false, event: args, name: name };\n if (isOpen && gallerySettings.popupOpen) {\n gallerySettings.popupOpen.call(this, popupEventArgs);\n }\n else if (!isOpen && gallerySettings.popupClose) {\n gallerySettings.popupClose.call(this, popupEventArgs);\n }\n if (popupEventArgs.cancel) {\n return true;\n }\n return false;\n };\n RibbonGallery.prototype.showPopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupOpen', true);\n if (isCancelled) {\n return;\n }\n popup.show();\n this.checkCollision(popup, popupEle);\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.add('e-gallery-button-active');\n var buttonPosition = buttonEle.getBoundingClientRect();\n if (popupEle.offsetWidth > buttonPosition.left) {\n this.checkCollision(popup, popupEle, buttonPosition.left);\n }\n var offsetX = Math.abs((popupEle.offsetWidth - buttonPosition.left)) + buttonEle.offsetWidth;\n popupEle.style.left = offsetX + 'px';\n popupEle.style.top = popupEle.getBoundingClientRect().top + 2 + 'px';\n this.setFoucsToFirstItem(popupEle, false, itemID, popup, gallerySettings);\n };\n RibbonGallery.prototype.hidePopup = function (popup, popupEle, args, gallerySettings, itemID) {\n var isCancelled = this.popupEvents(args, gallerySettings, 'popupClose', false);\n if (isCancelled) {\n return;\n }\n popup.hide();\n var buttonEle = document.querySelector('#' + itemID + '_popupButton');\n buttonEle.classList.remove('e-gallery-button-active');\n };\n /**\n * Shows a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.showGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.showPopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n /**\n * Hides a specific gallery popup in the ribbon.\n *\n * @param {string} id - Gets the ribbon item id.\n * @returns {void}\n */\n RibbonGallery.prototype.hideGalleryPopup = function (id) {\n var itemProp = getItem(this.parent.tabs, id);\n var popupEle = document.querySelector('#' + id + '_galleryPopup');\n var popup = getComponent(popupEle, Popup);\n this.hidePopup(popup, popupEle, null, itemProp.item.gallerySettings, id);\n };\n RibbonGallery.prototype.setFoucsToFirstItem = function (popupEle, isDropdown, itemID, popup, gallerySettings) {\n var _this = this;\n popupEle.querySelectorAll('.e-ribbon-gallery-item')[0].focus();\n this.galleryItemsIndex = 0;\n popupEle.onkeydown = function (e) {\n _this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);\n };\n };\n RibbonGallery.prototype.handleGalleryPopupNavigation = function (e, popupEle, isDropdown, itemID, popup, gallerySettings) {\n var galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');\n if (galleryPopupEle) {\n if (e.key === 'Home') {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'End') {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.galleryItemsIndex++;\n if (this.galleryItemsIndex !== galleryPopupEle.length) {\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = 0;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n if (this.galleryItemsIndex !== 0) {\n this.galleryItemsIndex--;\n if (galleryPopupEle && (galleryPopupEle[this.galleryItemsIndex])) {\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else {\n this.galleryItemsIndex = galleryPopupEle.length - 1;\n galleryPopupEle[this.galleryItemsIndex].focus();\n }\n }\n else if ((e.key === 'Enter' || e.code === 'Space') || (e.key === 'Escape' && !isDropdown)) {\n this.hidePopup(popup, popupEle, e, gallerySettings, itemID);\n }\n }\n };\n RibbonGallery.prototype.createGalleryTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-template');\n var templateName = 'ribbon' + id + 'galleryTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.template);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n RibbonGallery.prototype.createGalleryPopupTemplate = function (galleryItemEle, gallerySettings, id, items) {\n galleryItemEle.classList.add('e-ribbon-gallery-popup-template');\n var templateName = 'ribbon' + id + 'galleryPopupTemplate';\n this.parent['clearTemplate']([templateName]);\n var templateFunction = getTemplateFunction(gallerySettings.popupTemplate);\n if (items.disabled) {\n galleryItemEle.classList.add('e-disabled');\n }\n if (items.cssClass) {\n galleryItemEle.classList.add(items.cssClass);\n }\n append(templateFunction({ items: items }, this, templateName, (id + 'galleryPopupTemplate'), this.parent.isStringTemplate, null, null, this.parent), galleryItemEle);\n };\n return RibbonGallery;\n}());\nexport { RibbonGallery };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { addClass, append, Event, Collection, Complex, Component, EventHandler, formatUnit, getInstance, getComponent, getUniqueID, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, NotifyPropertyChanges, Property, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Tab, TabAnimationSettings, HScroll, Toolbar } from '@syncfusion/ej2-navigations';\nimport { RibbonTab, FileMenuSettings, BackStageMenu, RibbonContextualTabSettings } from '../models/index';\nimport { DisplayMode, RibbonLayout } from './interface';\nimport { ItemOrientation, RibbonItemSize, RibbonItemType } from './interface';\nimport { RibbonButton, RibbonComboBox, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonGroupButton } from '../items/index';\nimport { destroyControl, getCollection, getGroup, getIndex, getItem, getItemElement, updateCommonProperty, updateControlDisabled, isTooltipPresent, getTemplateFunction, createTooltip, destroyTooltip, updateTooltipProp } from './utils';\nimport * as constants from './constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { DropDownButton, SplitButton } from '@syncfusion/ej2-splitbuttons';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n * The Ribbon Component is a structured layout to manage tools with tabs and groups.\n */\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {RibbonModel} options - Specifies the ribbon model\n * @param {string|HTMLDivElement} element - Specifies the target element\n */\n function Ribbon(options, element) {\n var _this = this;\n Ribbon_1.Inject(RibbonButton, RibbonCheckBox, RibbonDropDown, RibbonSplitButton, RibbonComboBox, RibbonGroupButton);\n _this = _super.call(this, options, element) || this;\n return _this;\n }\n Ribbon_1 = Ribbon;\n /**\n * Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Ribbon.prototype.render = function () {\n this.initialize();\n };\n Ribbon.prototype.preRender = function () {\n this.keysPress = '';\n this.idIndex = 0;\n this.tooltipData = [];\n this.initialPropsData = {};\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.hiddenGroups = [];\n this.itemsModel = [];\n this.targetTabs = {};\n this.isAddRemove = false;\n this.isUpdateItems = false;\n this.keyConfigs = {\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n tab: 'tab',\n shiftTab: 'shift+tab'\n };\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Ribbon.prototype.getPersistData = function () {\n return this.addOnPersist(['activeLayout']);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Ribbon.prototype.getModuleName = function () {\n return 'ribbon';\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n Ribbon.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: 'ribbonButton', args: [this], name: 'RibbonButton' }, { member: 'ribbonDropDown', args: [this], name: 'RibbonDropDown' }, { member: 'ribbonSplitButton', args: [this], name: 'RibbonSplitButton' }, { member: 'ribbonCheckBox', args: [this], name: 'RibbonCheckBox' }, { member: 'ribbonComboBox', args: [this], name: 'RibbonComboBox' }, { member: 'ribbonGroupButton', args: [this], name: 'RibbonGroupButton' });\n var canInjectColorPickerModule = getItem(this.tabs, null, RibbonItemType.ColorPicker);\n var canInjectGalleryModule = getItem(this.tabs, null, RibbonItemType.Gallery);\n if (canInjectColorPickerModule) {\n modules.push({ member: 'ribbonColorPicker', args: [this], name: 'RibbonColorPicker' });\n }\n if (canInjectGalleryModule) {\n modules.push({ member: 'ribbonGallery', args: [this], name: 'RibbonGallery' });\n }\n if (this.backStageMenu.visible || this.backStageMenu.items.length) {\n modules.push({ member: 'ribbonBackstage', args: [this], name: 'RibbonBackstage' });\n }\n if (this.fileMenu.visible || this.fileMenu.menuItems.length) {\n modules.push({ member: 'ribbonFileMenu', args: [this], name: 'RibbonFileMenu' });\n }\n if (this.contextualTabs.length) {\n modules.push({ member: 'ribbonContextualTab', args: [this], name: 'RibbonContextualTab' });\n }\n if (this.enableKeyTips) {\n modules.push({ member: 'ribbonKeyTip', args: [this], name: 'RibbonKeyTip' });\n }\n return modules;\n };\n Ribbon.prototype.initialize = function () {\n this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());\n addClass([this.element], ['e-rbn'].concat((this.cssClass ? this.cssClass.split(constants.SPACE) : [])));\n if (this.enableRtl) {\n this.element.classList.add(constants.RTL_CSS);\n }\n this.element.style.width = formatUnit(this.width);\n this.renderTabs();\n if (this.ribbonContextualTabModule) {\n this.ribbonContextualTabModule.addContextualTabs();\n }\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.createFileMenu(this.fileMenu);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.createBackStage(this.backStageMenu);\n }\n this.createHelpPaneTemplate();\n var toolbar = this.tabObj['tbObj'];\n toolbar.refreshOverflow();\n this.addTabOverflowKeyTip();\n createTooltip(this.element, this);\n this.isKeytipOpen = false;\n this.wireEvents();\n this.wireKeyboardEvent();\n this.currentControlIndex = 0;\n };\n Ribbon.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'keydown', this.keytipActionHandler, this);\n EventHandler.add(document, 'mousedown', this.mouseEventHandler, this);\n EventHandler.add(document, 'scroll', this.mouseEventHandler, this);\n };\n Ribbon.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRibbon = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Ribbon.prototype.keyActionHandler = function (e) {\n if (((e.key === 'Tab') && (!(e.target.classList.contains('e-tab-wrap')) && !(e.target.classList.contains('e-combobox'))))) {\n e.preventDefault();\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));\n var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));\n var galleryElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-gallery-item'));\n var ribbonControls = controlElements.concat(templateElements, galleryElements);\n var comboBoxElements = activeContent.querySelectorAll('.e-combobox');\n var comboBoxEle;\n if (comboBoxElements) {\n for (var i = 0; i < comboBoxElements.length; i++) {\n if (comboBoxElements[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n comboBoxEle = comboBoxElements[parseInt(i.toString(), 10)];\n }\n }\n }\n if (comboBoxEle) {\n for (var i = 0; i < ribbonControls.length; i++) {\n if (ribbonControls[parseInt(i.toString(), 10)].classList.contains('e-combobox')) {\n if (ribbonControls[parseInt(i.toString(), 10)].closest('.e-input-focus')) {\n this.currentControlIndex = i;\n }\n }\n }\n }\n if (this.currentControlIndex === 0) {\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n }\n if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||\n e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||\n e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||\n e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) {\n switch (e.action) {\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl, ribbonControls);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl, ribbonControls);\n break;\n case 'tab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex < ribbonControls.length - 1) {\n this.currentControlIndex++;\n }\n }\n break;\n case 'shiftTab':\n if (e.target.classList.contains('e-combobox')) {\n if (this.currentControlIndex > 0) {\n this.currentControlIndex--;\n }\n }\n else {\n this.tabObj.element.querySelector('.e-toolbar-item.e-active').querySelector('.e-tab-wrap').focus();\n this.currentControlIndex = 0;\n }\n }\n }\n };\n Ribbon.prototype.handleNavigation = function (e, enableRtl, ribbonControls) {\n var groupContainer;\n var prevGroupId;\n if (enableRtl) {\n if (this.currentControlIndex < ribbonControls.length - 1 && ribbonControls[this.currentControlIndex + 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex++;\n }\n }\n else {\n if (this.currentControlIndex > 0 && ribbonControls[this.currentControlIndex - 1].classList.contains('e-colorpicker')) {\n this.currentControlIndex--;\n }\n }\n if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {\n if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-gallery-item')) && !e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n this.currentControlIndex++;\n }\n else {\n var prevGroupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (prevGroupContainer) {\n prevGroupId = prevGroupContainer.getAttribute('id');\n }\n this.currentControlIndex--;\n }\n var item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (item && item.classList.contains('e-disabled')) {\n if (((enableRtl && this.currentControlIndex === ribbonControls.length - 1) ||\n (!enableRtl && this.currentControlIndex === 0))) {\n if (ribbonControls[this.currentControlIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n enableRtl ? this.currentControlIndex++ : this.currentControlIndex--;\n item = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (this.activeLayout === 'Classic') {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n if (enableRtl) {\n var launcherIconEle = void 0;\n if (groupContainer) {\n launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n }\n if (launcherIconEle) {\n var items = groupContainer.querySelectorAll('.e-ribbon-item');\n var elem = items[items.length - 1].querySelector('.e-control');\n if (elem) {\n elem.classList.add('e-ribbon-last-item');\n }\n }\n }\n else {\n if (groupContainer) {\n var groupContainerId = groupContainer.getAttribute('id');\n if (prevGroupId !== groupContainerId) {\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n ribbonControls[parseInt((this.currentControlIndex + 1).toString(), 10)].classList.add('e-ribbon-first-item');\n }\n }\n }\n }\n }\n else {\n if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-first-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-first-item');\n }\n else if (ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n }\n }\n else {\n if (this.activeLayout === 'Classic') {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n if (this.activeLayout === 'Simplified') {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if (enableRtl && (overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n }\n }\n if (e.target.classList.contains('e-ribbon-last-item')) {\n if (enableRtl) {\n groupContainer = ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n else {\n this.currentControlIndex--;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (!enableRtl && e.target.classList.contains('e-ribbon-first-item')) {\n groupContainer = ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].closest('.' + constants.RIBBON_GROUP_CONTAINER);\n var launcherIconEle = groupContainer.querySelector('.e-ribbon-launcher-icon');\n if (launcherIconEle) {\n groupContainer.querySelector('.e-ribbon-launcher-icon').focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-launcher-icon')) {\n if (enableRtl) {\n this.currentControlIndex++;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n if (ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.contains('e-ribbon-last-item')) {\n ribbonControls[parseInt((this.currentControlIndex - 1).toString(), 10)].classList.remove('e-ribbon-last-item');\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentControlIndex;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n if (e.target.classList.contains('e-ribbon-collapse-btn')) {\n if (enableRtl) {\n this.currentControlIndex = 0;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex++;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n else {\n var overflowButton = this.tabObj.element.querySelector('.e-ribbon-overall-of-btn');\n if ((overflowButton && !overflowButton.classList.contains('e-ribbon-hide'))) {\n overflowButton.focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n var ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n this.currentControlIndex--;\n ribbonItem = ribbonControls[this.currentControlIndex].closest('.e-ribbon-item');\n }\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n }\n if (this.activeLayout === 'Simplified' && e.target.classList.contains('e-ribbon-overall-of-btn')) {\n if (enableRtl) {\n this.tabObj.element.querySelector('.e-ribbon-collapse-btn').focus();\n }\n else {\n this.currentControlIndex = ribbonControls.length - 1;\n ribbonControls[parseInt(this.currentControlIndex.toString(), 10)].focus();\n }\n }\n };\n Ribbon.prototype.resizeHandler = function () {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n if (this.scrollModule) {\n var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);\n this.scrollModule.scrollStep = scrollEle.offsetWidth;\n }\n if (this.activeLayout === 'Simplified') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n }\n }\n var galleryPopupEle = document.querySelector('.e-ribbon-gallery-popup.e-popup-open');\n if (galleryPopupEle) {\n var popup = getComponent(galleryPopupEle, Popup);\n popup.hide();\n }\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.mouseEventHandler = function () {\n if (this.ribbonKeyTipModule && this.enableKeyTips) {\n this.ribbonKeyTipModule.removeKeytip();\n }\n };\n Ribbon.prototype.keytipActionHandler = function (e) {\n if (this.enableKeyTips) {\n var isKeyTipPresent = false;\n var keyPress = e.key;\n if (e.altKey && e.key === 'Meta') {\n var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');\n if (activePopup.length) {\n for (var i = 0; i < activePopup.length; i++) {\n var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);\n dropDownBtn.toggle();\n }\n this.ribbonKeyTipModule.removeKeytip();\n }\n else {\n if (!this.isKeytipOpen) {\n var backstagePopup = document.querySelector('.e-ribbon-backstage-popup');\n if (backstagePopup && backstagePopup.classList.contains('e-popup-open')) {\n this.ribbonBackstageModule.hideBackstage();\n }\n this.ribbonKeyTipModule.createKeytip('tab');\n }\n else {\n this.ribbonKeyTipModule.removeKeytip();\n }\n }\n }\n else if (e.key === 'Escape' || e.key === 'Tab' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n this.ribbonKeyTipModule.removeKeytip(e.key);\n }\n else {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n if (keyTipItems) {\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.toLowerCase() === keyPress) {\n isKeyTipPresent = true;\n this.ribbonKeyTipModule.keytipPress(keyPress);\n break;\n }\n }\n if (!isKeyTipPresent) {\n this.checkKeyTipPresent(keyPress, this.keysPress.length);\n }\n }\n }\n }\n };\n Ribbon.prototype.checkKeyTipPresent = function (keyTip, length) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML.length > 1 && keyTipItem.innerHTML[parseInt(length.toString(), 10)].toLowerCase() === keyTip) {\n this.keysPress += keyTip;\n this.ribbonKeyTipModule.keytipPress(this.keysPress);\n this.removeKeytip(this.keysPress);\n break;\n }\n }\n };\n Ribbon.prototype.removeKeytip = function (keyTip) {\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n for (var i = 0; i < keyTipItems.length; i++) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (keyTipItem.innerHTML[0].toLowerCase() !== keyTip && keyTip !== '') {\n remove(keyTipItem);\n }\n }\n };\n Ribbon.prototype.addKeyTip = function (tabIndex, keyTip, id, type) {\n if (this.keyTipElements && this.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n var isKeyTipExist = false;\n if (!(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type])) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type] = [];\n }\n if (Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length) {\n var keytipData = this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type];\n for (var i = 0; i < Object.keys(this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].id === id) {\n isKeyTipExist = true;\n }\n }\n if (!isKeyTipExist) {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].\n push({ id: id, type: type, keyTip: keyTip });\n }\n }\n else {\n this.keyTipElements[parseInt(tabIndex.toString(), 10)][\"\" + type].push({ id: id, type: type, keyTip: keyTip });\n }\n }\n };\n Ribbon.prototype.renderTabs = function () {\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal = this.checkID(this.tabsInternal, 'tab', this.element.id);\n this.setProperties({ tabs: this.tabsInternal }, true);\n var tabEle = this.createElement('div', {\n id: this.element.id + constants.TAB_ID\n });\n this.element.appendChild(tabEle);\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n this.tabObj = new Tab({\n cssClass: constants.RIBBON_TAB,\n selectedItem: this.selectedTab,\n overflowMode: 'Popup',\n width: this.width,\n items: tabItems,\n enableRtl: this.enableRtl,\n created: this.tabCreated.bind(this),\n selected: this.ribbonTabSelected.bind(this),\n selecting: this.ribbonTabSelecting.bind(this),\n animation: this.tabAnimation\n });\n this.tabObj.appendTo(tabEle);\n //Set the width value as \"0px\" with unit for proper calculation.\n this.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, '0px');\n this.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n var toolbar = getComponent(toolbarEle, Toolbar);\n toolbar.setProperties({ width: 'calc(100% - var(--fileMenuWidth) - var(--helpTemplateWidth))' });\n this.element.classList[this.isMinimized ? 'add' : 'remove'](constants.RIBBON_MINIMIZE);\n };\n Ribbon.prototype.minimize = function (val) {\n var _this = this;\n if (val === this.isMinimized) {\n return;\n }\n var eventArgs = { cancel: false };\n this.trigger(val ? 'ribbonCollapsing' : 'ribbonExpanding', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ isMinimized: val }, true);\n _this.element.classList.toggle(constants.RIBBON_MINIMIZE, _this.isMinimized);\n //to overwrite inline styles from hscroll\n _this.tabObj.element.querySelector('.e-content').style.display = val ? 'none' : 'block';\n if (!val) {\n _this.refreshLayout();\n }\n });\n };\n Ribbon.prototype.toggleLayout = function (args) {\n this.setProperties({ activeLayout: this.activeLayout === 'Simplified' ? 'Classic' : 'Simplified' }, true);\n this.switchLayout();\n var eventArgs = { activeLayout: this.activeLayout, event: args };\n this.trigger('ribbonLayoutSwitched', eventArgs);\n };\n Ribbon.prototype.tabCreated = function () {\n if (!this.hideLayoutSwitcher) {\n this.addExpandCollapse();\n }\n this.renderInitialTab(this.selectedTab);\n };\n Ribbon.prototype.ribbonTabSelected = function (e) {\n e.preventFocus = true;\n this.isAddRemove = false;\n var selectedTabId = e.selectedItem.getAttribute('data-id');\n var selectedIndex = getIndex(this.tabs, (function (tab) { return (tab.id === selectedTabId); }));\n selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;\n var selectedContent = this.tabObj.items[parseInt(selectedIndex.toString(), 10)].content;\n if ((!selectedContent.querySelector('.' + constants.RIBBON_GROUP)) && (this.tabs[parseInt(selectedIndex.toString(), 10)].groups.length !== 0)) {\n var elements = this.createGroups(this.tabs[parseInt(selectedIndex.toString(), 10)].groups, selectedIndex);\n append(elements, selectedContent);\n }\n var isContextual = this.isContextualTab(selectedTabId);\n this.updateSelectedState(selectedTabId);\n var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex, isContextual: isContextual };\n this.setProperties({ selectedTab: selectedIndex }, true);\n this.calculateHiddenElementsWidth(selectedIndex);\n if (this.isUpdateItems) {\n for (var i = 0; i < this.itemsModel.length; i++) {\n var item = this.itemsModel[parseInt(i.toString(), 10)];\n if (this.selectedTab === this.targetTabs[item.id]) {\n this.updateItem(item);\n this.itemsModel.splice(i, 1);\n i--;\n }\n }\n if (this.itemsModel.length === 0) {\n this.isUpdateItems = false;\n }\n }\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(e.selectedContent.firstChild);\n }\n this.checkOverflow(selectedIndex, selectedContent);\n if (this.activeLayout === 'Simplified' && this.overflowDDB) {\n var overflowTarget = this.overflowDDB.target;\n var ofTabContainer = overflowTarget.querySelector('.' + constants.RIBBON_TAB_ACTIVE);\n if (ofTabContainer) {\n ofTabContainer.classList.remove(constants.RIBBON_TAB_ACTIVE);\n }\n var activeTab = overflowTarget.querySelector('#' + selectedTabId + constants.OVERFLOW_ID);\n if (activeTab) {\n activeTab.classList.add(constants.RIBBON_TAB_ACTIVE);\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n this.checkOverflowHiddenItems(false, selectedIndex);\n }\n else {\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n this.trigger('tabSelected', eventArgs);\n };\n Ribbon.prototype.updateSelectedState = function (tabID) {\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n var isSelected = false;\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isSelected = true;\n break;\n }\n }\n this.contextualTabs[parseInt(i.toString(), 10)].\n setProperties({ isSelected: isSelected }, true);\n }\n }\n };\n Ribbon.prototype.checkOverflow = function (tabIndex, activeContent) {\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n var isOverFlow = tabContent.offsetWidth < activeContent.offsetWidth;\n if (isOverFlow && !this.scrollModule) {\n if (this.activeLayout === 'Classic') {\n // Defines whether the shrinking is breaked due to insufficient space.\n var isBreak = false;\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, true);\n if (!isBreak && (tabContent.offsetWidth < activeContent.offsetWidth)) {\n isBreak = this.checkGroupShrinking(tabIndex, tabContent, activeContent, false);\n }\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createOverflowDropdown(tabIndex, tabContent, activeContent);\n }\n }\n else {\n this.checkSimplifiedItemShrinking(tabIndex, tabContent, activeContent);\n if (tabContent.offsetWidth < activeContent.offsetWidth) {\n this.createSimplfiedOverflow(tabContent, activeContent, tabIndex);\n }\n }\n //Adds Scroll if the tabwidth is less the content width even after adding overflow dropdown.\n if ((tabContent.offsetWidth < activeContent.offsetWidth) && (!this.scrollModule)) {\n this.scrollModule = new HScroll({\n enableRtl: this.enableRtl\n }, this.tabObj.element.querySelector('.' + constants.TAB_CONTENT));\n }\n }\n else if (!isOverFlow) {\n this.destroyScroll();\n if (this.activeLayout === 'Classic') {\n var isBreak = false;\n isBreak = this.removeOverflowDropdown(tabContent, activeContent, false, tabIndex);\n //Check for expanding small items to medium items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, true);\n }\n //Check for expanding medium items to large items.\n if (!isBreak && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n isBreak = this.checkGroupExpanding(tabIndex, tabContent, activeContent, false);\n }\n }\n else {\n this.removeSimplfiedOverflow(tabContent, activeContent, tabIndex);\n if (tabContent.offsetWidth > activeContent.offsetWidth) {\n this.checkSimplifiedItemExpanding(tabIndex, tabContent, activeContent);\n }\n }\n }\n this.addTabOverflowKeyTip();\n };\n Ribbon.prototype.addTabOverflowKeyTip = function () {\n var tabOverflow = this.tabObj.element.querySelector('#_nav');\n if (tabOverflow) {\n this.keyTipElements['taboverflow'] = [];\n this.keyTipElements['taboverflow'].push({ id: tabOverflow.id, type: 'taboverflow', keyTip: '00' });\n }\n else {\n delete (this.keyTipElements['taboverflow']);\n }\n };\n Ribbon.prototype.checkSimplifiedItemShrinking = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Medium) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n itemContainer.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.checkSimplifiedItemExpanding = function (tabIndex, tabContent, activeContent) {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var i = (tab.groups.length - 1); (i >= 0); i--) {\n var group = tab.groups[parseInt(i.toString(), 10)];\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = 0; ((j < group.collections.length) && (tabContent.offsetWidth > activeContent.offsetWidth)); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth > activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n if (((item.allowedSizes & RibbonItemSize.Small) && (item.allowedSizes & RibbonItemSize.Medium))\n && (item.activeSize === RibbonItemSize.Small) && (item.displayOptions & DisplayMode.Simplified)) {\n var itemContainer = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemContainer) {\n var valString = itemContainer.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (tabContent.offsetWidth > value)) {\n itemContainer.removeAttribute('data-medium-width');\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.createSimplfiedOverflow = function (tabContent, activeContent, tabIndex) {\n var orderedGroups = this.getGroupResizeOrder(true, tabIndex);\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n var isGroupUpdated = false;\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n for (var j = group.collections.length; ((j >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); j--) {\n var collection = group.collections[parseInt((j - 1).toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = collection.items.length; ((k >= 1) && (tabContent.offsetWidth < activeContent.offsetWidth)); k--) {\n var item = collection.items[k - 1];\n var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var groupHidden = false;\n var itemHidden = false;\n var isAllItemHidden = false;\n var isEmptyCollection_1 = false;\n var groupItems = void 0;\n if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {\n groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');\n if (groupItems.length) {\n for (var i_1 = 0; i_1 < groupItems.length; i_1++) {\n groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');\n }\n }\n if (groupEle.classList.contains('e-hide-group')) {\n isAllItemHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n groupHidden = true;\n groupEle.classList.remove('e-hidden');\n }\n if (!isGroupUpdated) {\n this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);\n isGroupUpdated = true;\n }\n }\n else {\n if (itemContainer.classList.contains('e-hidden')) {\n itemHidden = true;\n itemContainer.classList.remove('e-hidden');\n if (groupEle.classList.contains('e-ribbon-emptyCollection')) {\n isEmptyCollection_1 = true;\n groupEle.classList.remove('e-ribbon-emptyCollection');\n }\n this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);\n this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);\n }\n }\n itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());\n if (itemHidden) {\n itemContainer.classList.add('e-hidden');\n }\n if (groupItems && groupItems.length) {\n for (var i_2 = 0; i_2 < groupItems.length; i_2++) {\n groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');\n }\n }\n if (groupHidden) {\n groupEle.classList.add('e-hidden');\n }\n if (isAllItemHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n if (isEmptyCollection_1) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);\n if (item.activeSize === RibbonItemSize.Small) {\n var itemEle = itemContainer.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n this.setItemSize(itemEle, item);\n }\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, true);\n }\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength && !group.enableGroupOverflow) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (isEmptyCollection) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);\n }\n };\n Ribbon.prototype.checkEmptyCollection = function (itemsLength) {\n var isEmptyCollection = true;\n for (var i = 0; i < itemsLength.length; i++) {\n if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isEmptyCollection = false;\n break;\n }\n }\n return isEmptyCollection;\n };\n Ribbon.prototype.updatePopupItems = function (item, itemEle, isGroupOF, isMenu) {\n var _this = this;\n var dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.Gallery || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);\n var dropDownPopup = dropdown.dropDown;\n // popup is on right if (isGroupOF && isMenu)\n // The position is reversed if RTL is enabled.\n // isRight = ((isGroupOF && isMenu) && !this.enableRtl ) || (!(isGroupOF && isMenu) && this.enableRtl) ==> (isGroupOF && isMenu) !== this.enableRtl\n var isLeft = (isGroupOF && isMenu) === this.enableRtl;\n if (dropDownPopup) {\n dropDownPopup.setProperties({ position: { X: isLeft ? 'left' : 'right', Y: isMenu ? 'top' : 'bottom' } }, true);\n if (isMenu) {\n dropdown.beforeOpen = function () {\n if (isLeft) {\n if (item.type === RibbonItemType.Gallery && _this.ribbonGalleryModule) {\n _this.ribbonGalleryModule.checkCollision(dropDownPopup, dropDownPopup.element);\n }\n dropDownPopup.element.style.setProperty('visibility', 'hidden');\n dropDownPopup.element.style.setProperty('display', 'block');\n dropDownPopup.setProperties({ offsetX: -1 * dropDownPopup.element.offsetWidth });\n dropDownPopup.element.style.removeProperty('display');\n dropDownPopup.element.style.removeProperty('visibility');\n }\n };\n }\n else {\n dropDownPopup.setProperties({ offsetX: 0 }, true);\n dropdown.beforeOpen = null;\n }\n }\n };\n Ribbon.prototype.removeSimplfiedOverflow = function (tabContent, activeContent, tabIndex, isClear) {\n if (isClear === void 0) { isClear = false; }\n var orderedGroups = this.getGroupResizeOrder(false, tabIndex);\n var flag = true;\n var isEmptyCollection;\n for (var i = 0; ((i < orderedGroups.length) && flag); i++) {\n var group = orderedGroups[parseInt(i.toString(), 10)];\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (group.enableGroupOverflow) {\n var overflowDDBEle = tabContent.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n else {\n overflowDDB = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n for (var j = 0; ((j < group.collections.length) && flag); j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n for (var k = 0; ((k < collection.items.length) && flag && !isClear && (tabContent.offsetWidth > activeContent.offsetWidth)); k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemContainer = void 0;\n if (overflowtarget) {\n itemContainer = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (((item.displayOptions === DisplayMode.Auto) ||\n (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {\n var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);\n var groupItemEle = tabContent.querySelector('#' + group.id);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n width = Math.abs(width - activeContent.offsetWidth);\n }\n if (!isClear && (tabContent.offsetWidth < width)) {\n flag = false;\n break;\n }\n var groupEle = tabContent.querySelector('#' + collection.id);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);\n }\n groupEle.append(itemContainer);\n if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {\n itemContainer.setAttribute('data-simplified-width', width.toString());\n var isGroupHidden = false;\n var widthDifference = 0;\n if (itemContainer.classList.contains('e-hidden')) {\n itemContainer.classList.remove('e-hidden');\n if (groupItemEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);\n }\n width = itemContainer.offsetWidth + widthDifference;\n itemContainer.classList.add('e-hidden');\n }\n this.calculateOverflowItemsWidth(width, true, tabIndex);\n this.calculateMediumDataWidth(width, tabIndex, true);\n if (isGroupHidden) {\n groupItemEle.classList.add('e-hide-group');\n groupItemEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n this.removeOverflowEvent(item, itemContainer);\n if (item.allowedSizes & RibbonItemSize.Small) {\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n this.setItemSize(itemContainer.querySelector('#' + item.id), item);\n }\n var groupElement = tabContent.querySelector('#' + group.id);\n var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);\n if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {\n var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n if (!isEmptyCollection) {\n groupElement.classList.remove('e-ribbon-emptyCollection');\n }\n }\n }\n }\n }\n }\n if (overflowDDB) {\n if (group.enableGroupOverflow) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n else {\n var ofGroupContainer = overflowtarget.querySelector('#' + group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = overflowtarget.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n this.overflowDDB.element.classList.add(constants.HIDE_CSS);\n }\n }\n }\n }\n for (var i = 0; i < orderedGroups.length; i++) {\n this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n if (overflowEle.childElementCount === 0) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n }\n };\n Ribbon.prototype.checkOverflowHiddenItems = function (isGroupOF, tabIndex, groupId) {\n if (isGroupOF) {\n var overflowDDB = document.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n var isHidden = true;\n for (var i = 0; i < itemEle.length; i++) {\n if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {\n isHidden = false;\n break;\n }\n }\n overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');\n }\n }\n else {\n if (this.overflowDDB) {\n var isGroupHidden = true;\n var isItemHidden = void 0;\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n for (var k = 0; k < ofTabContainer.children.length; k++) {\n isItemHidden = true;\n var overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];\n var groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');\n for (var n = 0; n < groupTabContainer.length; n++) {\n if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {\n isItemHidden = false;\n break;\n }\n }\n overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');\n if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {\n isGroupHidden = false;\n }\n }\n this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](constants.HIDE_CSS);\n }\n }\n }\n };\n Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {\n var overflowButton;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupId);\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n if (isGroupOF) {\n var overflowDDB = groupContainer.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID);\n if (!overflowDDB) {\n overflowButton = this.addOverflowButton(groupId + constants.GROUPOF_BUTTON_ID, isGroupOF);\n overflowButton.element.classList.add(constants.RIBBON_GROUP_OF_BUTTON);\n groupContainer.appendChild(overflowButton.element);\n }\n else {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n this.addKeyTip(tabIndex, '0' + (itemProp.groupIndex + 1), overflowButton.element.id, 'grpofbtn');\n overflowtarget = overflowButton.target;\n var overflowBtnTarget = overflowButton.target;\n var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);\n if (!headerEle) {\n if (itemProp.group.overflowHeader) {\n var groupHeader_1 = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,\n innerHTML: itemProp.group.overflowHeader\n });\n overflowBtnTarget.append(groupHeader_1);\n }\n }\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n overflowBtnTarget.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n overflowBtnTarget.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n overflowBtnTarget.classList.add('e-hide-group');\n }\n }\n if (isResize) {\n overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n overflowBtnTarget.append(itemEle);\n }\n }\n else {\n if (!this.overflowDDB) {\n this.overflowDDB = this.addOverflowButton(this.tabObj.element.id + constants.OVRLOF_BUTTON_ID, isGroupOF);\n this.tabObj.element.insertBefore(this.overflowDDB.element, this.collapseButton);\n this.overflowDDB.element.classList.add(constants.RIBBON_OVERALL_OF_BUTTON);\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n else {\n this.overflowDDB.element.classList.remove(constants.HIDE_CSS);\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' +\n this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);\n if (!ofGroupContainer) {\n ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n ofTabContainer.append(ofGroupContainer);\n }\n if (isResize) {\n ofGroupContainer.insertBefore(itemEle, ofGroupContainer.querySelector('.' + constants.RIBBON_ITEM));\n }\n else {\n ofGroupContainer.append(itemEle);\n }\n }\n else {\n this.createOfTabContainer(groupId, groupHeader, itemEle, tabIndex);\n }\n }\n overflowButton = this.overflowDDB;\n overflowtarget = this.overflowDDB ? this.overflowDDB.target : null;\n }\n if (itemEle !== null) {\n this.addOverflowEvents(item, itemEle, overflowButton);\n }\n if (overflowtarget) {\n if (item.keyTip) {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'popupitem');\n }\n }\n };\n Ribbon.prototype.addOverflowEvents = function (item, itemEle, overflowButton) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n case 'Gallery':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGalleryModule.addOverFlowEvents(item, itemEle);\n }\n break;\n case 'GroupButton':\n if (this.activeLayout === 'Simplified') {\n this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);\n break;\n }\n }\n };\n Ribbon.prototype.createOfTabContainer = function (groupId, groupHeader, itemEle, tabIndex) {\n var ofTabContainer = this.createElement('div', {\n id: this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID,\n className: constants.RIBBON_OF_TAB_CONTAINER\n });\n var overflowtarget = this.overflowDDB.target;\n overflowtarget.append(ofTabContainer);\n var itemProp = getGroup(this.tabs, groupId);\n var ofGroupContainer = itemProp.group.overflowHeader ?\n this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);\n ofGroupContainer.append(itemEle);\n ofTabContainer.append(ofGroupContainer);\n if (tabIndex === this.selectedTab) {\n ofTabContainer.classList.add(constants.RIBBON_TAB_ACTIVE);\n }\n var groupEle = document.querySelector('#' + groupId);\n if (groupEle) {\n if (groupEle.classList.contains('e-disabled')) {\n ofGroupContainer.classList.add('e-disabled');\n }\n if (groupEle.classList.contains('e-hidden')) {\n ofGroupContainer.classList.add('e-hidden');\n }\n if (groupEle.classList.contains('e-hide-group')) {\n ofGroupContainer.classList.add('e-hide-group');\n }\n }\n };\n Ribbon.prototype.checkGroupShrinking = function (tabIndex, tabContent, activeContent, isLarge) {\n var isOverFlow = true;\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = (tab.groups.length - 1); (isOverFlow && (j >= 0)); j--) {\n // eslint-disable-next-line max-len\n isBreak = isLarge ? this.checkLargeToMedium(tabIndex, tab, j, tabContent, activeContent) : this.checkMediumToSmall(tabIndex, tab, j, tabContent, activeContent);\n isOverFlow = !isBreak && (tabContent.offsetWidth < activeContent.offsetWidth);\n }\n return isBreak;\n };\n Ribbon.prototype.checkValidCollectionLength = function (collections) {\n var count = 0;\n for (var i = 0; i < collections.length; i++) {\n var items = collections[parseInt(i.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n count++;\n break;\n }\n }\n if (count > 1) {\n return false;\n }\n }\n return count === 1;\n };\n Ribbon.prototype.checkClassicCollection = function (collections, n, isIncrement) {\n var items = collections[parseInt(n.toString(), 10)].items;\n for (var ind = 0; ind < items.length; ind++) {\n if (items[parseInt(ind.toString(), 10)].displayOptions & DisplayMode.Classic) {\n return n;\n }\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === collections.length) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicCollection(collections, n, isIncrement);\n }\n };\n Ribbon.prototype.checkClassicItem = function (items, n, isIncrement) {\n var item = items[parseInt(n.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n return n;\n }\n n = isIncrement ? n + 1 : n - 1;\n if (isIncrement) {\n return (n === items.length) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n else {\n return (n < 0) ? n : this.checkClassicItem(items, n, isIncrement);\n }\n };\n Ribbon.prototype.checkLargeToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var canReduceCollection = function (collection) {\n return (collection.items.length === 1) && canReduceItem(collection.items[0]);\n };\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Large);\n };\n var createShrinkEle = function (id, firstItem, start, end) {\n var shrinkEle = _this.createElement('div', {\n className: 'e-ribbon-shrink' + constants.SPACE + constants.RIBBON_ROW,\n id: id + '_shrink_container' + start,\n attrs: { 'data-start': start.toString(), 'data-end': end.toString() }\n });\n firstItem.parentElement.insertBefore(shrinkEle, firstItem);\n if (!shouldSkip) {\n shrinkEle.setAttribute('data-large-width', activeContent.offsetWidth.toString());\n }\n return shrinkEle;\n };\n var moveItemToColumn = function (start, end) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[0];\n var firstItem = activeContent.querySelector('#' + collection.items[parseInt(start.toString(), 10)].id + constants.CONTAINER_ID);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + collection.id + '_shrink_container' + start) :\n createShrinkEle(collection.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (!(item.displayOptions & DisplayMode.Classic)) {\n continue;\n }\n var ele = activeContent.querySelector('#' + item.id + constants.CONTAINER_ID);\n shrinkEle.appendChild(ele);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID), item);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + item.id), item);\n }\n }\n };\n var moveCollectionToColumn = function (start, end) {\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n var firstItem = activeContent.querySelector('#' + group.collections[parseInt(start.toString(), 10)].id);\n var shrinkEle = shouldSkip ? activeContent.querySelector('#' + group.id + '_shrink_container' + start) :\n createShrinkEle(group.id, firstItem, start, end);\n for (var i = start; i <= end; i++) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n var ele = activeContent.querySelector('#' + collection.id);\n shrinkEle.appendChild(ele);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton && _this.activeLayout === 'Classic') {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID), collection.items[0]);\n }\n else {\n _this.setItemSize(ele.querySelector('#' + collection.items[0].id), collection.items[0]);\n }\n }\n };\n var orientation = group.orientation;\n if (orientation === ItemOrientation.Column) {\n for (var k = (group.collections.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second collection\n k = this.checkClassicCollection(group.collections, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(k.toString(), 10)])) {\n l = this.checkClassicCollection(group.collections, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceCollection(group.collections[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n if (m >= 0) {\n m = this.checkClassicCollection(group.collections, m, false);\n }\n //Checks the element rendered at position n-2\n if ((m >= 0) && canReduceCollection(group.collections[parseInt(m.toString(), 10)])) {\n moveCollectionToColumn(m, k);\n }\n else {\n moveCollectionToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n var collection = group.collections[0];\n for (var k = (collection.items.length - 1); k > 0; k--) {\n //to avoid negative index while checking for the second item\n k = this.checkClassicItem(collection.items, k, false);\n var l = k - 1;\n //Checks the element rendered at position n\n if ((l >= 0) && canReduceItem(collection.items[parseInt(k.toString(), 10)])) {\n l = this.checkClassicItem(collection.items, l, false);\n //Checks the element rendered at position n-1\n if ((l >= 0) && canReduceItem(collection.items[parseInt(l.toString(), 10)])) {\n var m = l - 1;\n //Checks the element rendered at position n-2\n if (m >= 0) {\n m = this.checkClassicItem(collection.items, m, false);\n }\n if ((m >= 0) && canReduceItem(collection.items[parseInt(m.toString(), 10)])) {\n moveItemToColumn(m, k);\n }\n else {\n moveItemToColumn(l, k);\n }\n k = m;\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n else {\n k = l;\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToSmall = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip) {\n var _this = this;\n if (shouldSkip === void 0) { shouldSkip = false; }\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n if (group.isCollapsed && !shouldSkip) {\n return false;\n }\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canReduceItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Small) && (item.activeSize === RibbonItemSize.Medium);\n };\n var reduceItemsToSmall = function (collectionIndex, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var reduce = function (i) {\n var item = collection.items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_1 = activeContent.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_1 = activeContent.querySelector('#' + item.id + '_grpbtn');\n }\n _this.setItemSize(ele_1, item);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var reduceCollectionsToSmall = function (index, start, end, middle) {\n if (middle === void 0) { middle = null; }\n var group = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)];\n if (!shouldSkip) {\n shrinkColumns[parseInt(index.toString(), 10)].setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n var reduce = function (i) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var ele_2 = activeContent.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Small }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_2 = activeContent.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_2, collection.items[0]);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n };\n var setWidth = function (id) {\n if (!shouldSkip) {\n var ele_3 = activeContent.querySelector('#' + id);\n ele_3.setAttribute('data-medium-width', activeContent.offsetWidth.toString());\n }\n };\n if (orientation === ItemOrientation.Column) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var start = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumns[parseInt(k.toString(), 10)].getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var l = this.checkClassicCollection(group.collections, start + 1, false); //next valid item\n if (canReduceItem(group.collections[parseInt(start.toString(), 10)].items[0])\n && canReduceItem(group.collections[parseInt(l.toString(), 10)].items[0])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n reduceCollectionsToSmall(k, start, end);\n }\n else if (canReduceItem(group.collections[parseInt(end.toString(), 10)].items[0])) {\n reduceCollectionsToSmall(k, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n //If items length is 1 then, it would have been already check for shrinked column\n if ((classicItems.length > 1)) {\n if (canReduceItem(collection.items[classicItems[0]]) && canReduceItem(collection.items[classicItems[1]])) {\n if (classicItems.length === 2) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[1]);\n }\n else if (canReduceItem(collection.items[classicItems[2]])) {\n setWidth(collection.id);\n reduceItemsToSmall(k, classicItems[0], classicItems[2], classicItems[1]);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n if (this.checkValidCollectionLength(group.collections)) {\n if (shrinkColumns.length > 0) {\n for (var k = (shrinkColumns.length - 1); k >= 0; k--) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n //only 2 or 3 itmes alone can be present in shrinked column\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, false); //next valid item\n if (canReduceItem(group.collections[0].items[parseInt(start.toString(), 10)])\n && canReduceItem(group.collections[0].items[parseInt(l.toString(), 10)])) {\n if (end === l) { //if only 2 item, then next valid item will be the end item, else check for 3 rd item satus.\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end);\n }\n else if (canReduceItem(group.collections[0].items[parseInt(end.toString(), 10)])) {\n setWidth(shrinkColumn.id);\n reduceItemsToSmall(0, start, end, l);\n }\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n else {\n for (var k = (group.collections.length - 1); k >= 0; k--) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = (collection.items.length - 1); l >= 0; l--) {\n l = this.checkClassicItem(collection.items, l, false);\n if (l < 0) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canReduceItem(item)) {\n if (item.type !== RibbonItemType.GroupButton) {\n setWidth(item.id);\n }\n else {\n setWidth(item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n reduceItemsToSmall(k, l, l);\n if (!shouldSkip && (tabContent.offsetWidth > activeContent.offsetWidth)) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkGroupExpanding = function (tabIndex, tabContent, activeContent, isSmall) {\n var isBreak = false;\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n for (var j = 0; (!isBreak && (j < tab.groups.length)); j++) {\n isBreak = isSmall ? this.checkSmallToMedium(tabIndex, tab, j, tabContent, activeContent, false, true) :\n this.checkMediumToLarge(tabIndex, tab, j, tabContent, activeContent, false, true);\n }\n return isBreak;\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.checkSmallToMedium = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n var canExpandItem = function (item) {\n return (item.allowedSizes & RibbonItemSize.Medium) && (item.activeSize === RibbonItemSize.Small);\n };\n var expandItemToMedium = function (collectionIndex, index, parentEle) {\n var collection = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections[parseInt(collectionIndex.toString(), 10)];\n var item = collection.items[parseInt(index.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_4 = parentEle.id === item.id ? parentEle : parentEle.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_4 = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_4, item);\n }\n };\n var expandCollectionsToMedium = function (i) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)]\n .groups[parseInt(groupIndex.toString(), 10)].collections;\n var item = collections[parseInt(i.toString(), 10)].items[0];\n if (item.displayOptions & DisplayMode.Classic) {\n var ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id);\n collections[parseInt(i.toString(), 10)].items[0].setProperties({ activeSize: RibbonItemSize.Medium }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_5 = activeContent.querySelector('#' + collections[parseInt(i.toString(), 10)].items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_5, collections[parseInt(i.toString(), 10)].items[0]);\n }\n };\n if (orientation === ItemOrientation.Row) {\n // collection length is 1, then the it wll be covered in shrinked columns\n if (!this.checkValidCollectionLength(group.collections)) {\n for (var k = 0; k < group.collections.length; k++) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n for (var l = 0; l < collection.items.length; l++) {\n l = this.checkClassicItem(collection.items, l, true);\n if (l === collection.items.length) {\n continue;\n }\n var item = collection.items[parseInt(l.toString(), 10)];\n if (canExpandItem(item)) {\n var itemEle = activeContent.querySelector('#' + item.id);\n if (item.type === 'GroupButton') {\n itemEle = activeContent.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, l, itemEle);\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n }\n }\n else {\n for (var k = 0; k < group.collections.length; k++) {\n //If items length is 1 then, it will be handled in shrinked column\n if ((group.collections[parseInt(k.toString(), 10)].items.length > 1)) {\n var collection = group.collections[parseInt(k.toString(), 10)];\n var itemEle = activeContent.querySelector('#' + collection.id);\n var valString = itemEle.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n var classicItems = [];\n for (var i = 0; i < collection.items.length; i++) {\n if (collection.items[parseInt(i.toString(), 10)].displayOptions & DisplayMode.Classic) {\n classicItems.push(i);\n }\n }\n if ((classicItems.length > 1) && value && (shouldSkip || (tabContent.offsetWidth > value))) {\n expandItemToMedium(k, classicItems[0], itemEle);\n expandItemToMedium(k, classicItems[1], itemEle);\n if (classicItems.length === 3) {\n expandItemToMedium(k, classicItems[2], itemEle);\n }\n if (!shouldSkip || shouldClear) {\n itemEle.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n }\n if (shrinkColumns.length > 0) {\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-medium-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n expandItemToMedium(0, start, shrinkColumn);\n expandItemToMedium(0, l, shrinkColumn);\n // if l == end, then l is the last item, else L is the middle item. If l is middle then call the method for end.\n if (l !== end) {\n expandItemToMedium(0, end, shrinkColumn);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n expandCollectionsToMedium(start);\n expandCollectionsToMedium(m);\n if (m !== end) {\n expandCollectionsToMedium(end);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-medium-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n }\n return false;\n };\n Ribbon.prototype.checkMediumToLarge = function (tabIndex, tab, groupIndex, tabContent, activeContent, shouldSkip, shouldClear) {\n var _this = this;\n var group = tab.groups[parseInt(groupIndex.toString(), 10)];\n var orientation = group.orientation;\n var ele = activeContent.querySelector('#' + group.id);\n var shrinkColumns = ele.querySelectorAll('.' + 'e-ribbon-shrink');\n if (shrinkColumns.length === 0) {\n return false;\n }\n var expandItemsToLarge = function (start, end, parentEle, middle) {\n var items = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections[0].items;\n var reduce = function (i) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.displayOptions & DisplayMode.Classic) {\n var container = parentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele_6 = container.querySelector('#' + item.id);\n item.setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (item.type === RibbonItemType.GroupButton) {\n ele_6 = container.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_6, item);\n parentEle.insertAdjacentElement('beforebegin', container);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n var expandCollectionsToLarge = function (start, end, parentEle, middle) {\n var collections = _this.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].collections;\n var reduce = function (i) {\n var collection = collections[parseInt(i.toString(), 10)];\n if (collection.items[0].displayOptions & DisplayMode.Classic) {\n var collectionEle = parentEle.querySelector('#' + collection.id);\n var ele_7 = collectionEle.querySelector('#' + collection.items[0].id);\n collection.items[0].setProperties({ activeSize: RibbonItemSize.Large }, true);\n if (collection.items[0].type === RibbonItemType.GroupButton) {\n ele_7 = collectionEle.querySelector('#' + collection.items[0].id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n _this.setItemSize(ele_7, collection.items[0]);\n parentEle.insertAdjacentElement('beforebegin', collectionEle);\n }\n };\n reduce(start);\n if (middle) {\n reduce(middle);\n }\n reduce(end);\n if (!shouldSkip || shouldClear) {\n remove(parentEle);\n }\n };\n for (var k = 0; k < shrinkColumns.length; k++) {\n var shrinkColumn = shrinkColumns[parseInt(k.toString(), 10)];\n var valString = shrinkColumn.getAttribute('data-large-width');\n var value = valString ? parseInt(valString, 10) : null;\n if (value && (shouldSkip || (tabContent.offsetWidth > value))) {\n var start = parseInt(shrinkColumn.getAttribute('data-start'), 10);\n var end = parseInt(shrinkColumn.getAttribute('data-end'), 10);\n if (orientation === ItemOrientation.Row) {\n var collection = group.collections[0];\n var l = this.checkClassicItem(collection.items, start + 1, true); //next valid item\n if (l === end) {\n expandItemsToLarge(start, end, shrinkColumn);\n }\n else {\n expandItemsToLarge(start, end, shrinkColumn, l);\n }\n }\n else {\n var m = this.checkClassicCollection(group.collections, start + 1, true); //next valid item\n if (m === end) {\n expandCollectionsToLarge(start, end, shrinkColumn);\n }\n else {\n expandCollectionsToLarge(start, end, shrinkColumn, m);\n }\n }\n if (!shouldSkip || shouldClear) {\n shrinkColumn.removeAttribute('data-large-width');\n }\n }\n else if (value) {\n return true;\n }\n }\n return false;\n };\n Ribbon.prototype.handleContentSize = function (itemEle, isRemoveOverflow) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_GROUP_CONTENT);\n if (isRemoveOverflow) {\n itemContainer.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n }\n };\n Ribbon.prototype.setItemSize = function (itemEle, item) {\n if (itemEle) {\n var itemContainer = itemEle.closest('.' + constants.RIBBON_ITEM);\n if (item.type === RibbonItemType.Button) {\n this.ribbonButtonModule.updateButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.DropDown) {\n this.ribbonDropDownModule.updateDropDownSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.SplitButton) {\n this.ribbonSplitButtonModule.updateSplitButtonSize(itemEle, item);\n }\n else if (item.type === RibbonItemType.Template) {\n remove(itemEle);\n this.createTemplateContent(item, itemContainer);\n }\n else if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.updateGroupButtonSize(itemEle, item);\n }\n itemContainer.classList.remove(constants.RIBBON_CONTENT_HEIGHT, constants.RIBBON_LARGE_ITEM, constants.RIBBON_MEDIUM_ITEM, constants.RIBBON_SMALL_ITEM);\n if (item.activeSize === RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemContainer.classList.add((item.activeSize === RibbonItemSize.Medium) ?\n constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n };\n Ribbon.prototype.createOverflowDropdown = function (tabIndex, tabContent, activeContent) {\n var collapseOrder = this.getGroupResizeOrder(true, tabIndex);\n if (collapseOrder.length === 0) {\n return;\n }\n var _loop_1 = function (i) {\n var group = collapseOrder[parseInt(i.toString(), 10)];\n var groupEle = this_1.tabObj.element.querySelector('#' + group.id);\n groupEle.setAttribute('data-expanded-width', activeContent.offsetWidth.toString());\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupOverFlow = this_1.createElement('div', {\n className: constants.RIBBON_GROUP_OVERFLOW + constants.SPACE + constants.RIBBON_LARGE_ITEM,\n id: group.id + constants.OVERFLOW_ID + constants.CONTAINER_ID\n });\n groupEle.insertBefore(groupOverFlow, groupContainer);\n var groupIndex = getIndex(this_1.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n var tab = this_1.tabs[parseInt(tabIndex.toString(), 10)];\n //Expanding the items in the group to their original expanded state\n this_1.checkSmallToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n this_1.checkMediumToLarge(tabIndex, tab, groupIndex, tabContent, activeContent, true, false);\n var dropdown = this_1.ribbonDropDownModule.createOverFlowDropDown(group.id, group.header, group.groupIconCss, groupContainer, groupOverFlow, this_1.enableRtl);\n if (group.keyTip) {\n var overflowDDB = group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID;\n this_1.addKeyTip(tabIndex, group.keyTip, overflowDDB, 'grpoverflow');\n }\n this_1.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: true }, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupContainer.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_1.handleContentSize(itemEle);\n this_1.addOverflowEvents(item, itemEle, dropdown);\n }\n var overflowDDB = document.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var overflowButton = getInstance(overflowDDB, DropDownButton);\n if (overflowButton) {\n var overflowtarget = overflowButton.target;\n if (overflowtarget) {\n if (this_1.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_3 = 0; i_3 < item.groupButtonSettings.items.length; i_3++) {\n if (item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip) {\n this_1.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_3.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_3), 'grpoverflowpopup');\n }\n }\n }\n if (item.keyTip) {\n this_1.addKeyTip(tabIndex, item.keyTip, item.id, 'grpoverflowpopup');\n }\n }\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var i = 0; ((i < collapseOrder.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {\n _loop_1(i);\n }\n };\n // eslint-disable-next-line max-len\n Ribbon.prototype.removeOverflowDropdown = function (tabContent, activeContent, isClear, tabIndex) {\n if (isClear === void 0) { isClear = false; }\n var expandOrder = this.getGroupResizeOrder(false, tabIndex);\n if (expandOrder.length === 0) {\n return false;\n }\n var _loop_2 = function (i) {\n var group = expandOrder[parseInt(i.toString(), 10)];\n var groupEle = this_2.tabObj.element.querySelector('#' + group.id);\n if (!groupEle) {\n return \"break\";\n } //to handle the rerendering of tabcontrol when a ribbon tab is added/removed\n var width = parseInt(groupEle.getAttribute('data-expanded-width'), 10);\n if (!isClear && (tabContent.offsetWidth < width)) {\n return { value: true };\n }\n this_2.removeDropdown(group.id);\n var groupIndex = getIndex(this_2.tabs[parseInt(tabIndex.toString(), 10)].groups, function (e) { return e.id === group.id; });\n this_2.tabs[parseInt(tabIndex.toString(), 10)].\n groups[parseInt(groupIndex.toString(), 10)].setProperties({ isCollapsed: false }, true);\n var tab = this_2.tabs[parseInt(tabIndex.toString(), 10)];\n //Shrinking the items in the group to their previous shrinked state (before moving to dropdown)\n this_2.checkLargeToMedium(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n this_2.checkMediumToSmall(tabIndex, tab, groupIndex, tabContent, activeContent, true);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var collectionEle = groupEle.querySelector('#' + collection.id);\n for (var k = 0; k < collection.items.length; k++) {\n var item = collection.items[parseInt(k.toString(), 10)];\n var itemEle = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (itemEle !== null) {\n this_2.handleContentSize(itemEle, true);\n this_2.removeOverflowEvent(item, itemEle);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < expandOrder.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n return false;\n };\n Ribbon.prototype.removeDropdown = function (groupId) {\n var dropdownElement = this.tabObj.element.querySelector('#' + groupId + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n if (dropdownElement) {\n var groupOverFlow = dropdownElement.parentElement;\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n remove(groupOverFlow);\n }\n };\n Ribbon.prototype.getGroupResizeOrder = function (isCollapse, tabIndex) {\n var _this = this;\n var groups = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n groups = groups.filter(function (e) {\n // (isUndefined(e.isCollapsible) || e.isCollapsible) => check whethe rhte item is collapsible\n // if a isCollapsed property is undefined, then it is considered collapsible and included in collapsible list\n // ((isCollapse && !e.isCollapsed)||(!isCollapse && e.isCollapsed)) => isCollapse !== e.isCollapsed\n return (_this.activeLayout === 'Classic') ? (isUndefined(e.isCollapsible) || e.isCollapsible) && ((isCollapse &&\n isUndefined(e.isCollapsed)) || (!isUndefined(e.isCollapsed) && (isCollapse !== e.isCollapsed))) : true;\n });\n //sort the collapsible groups based on the priority\n groups.sort(function (a, b) { return a.priority - b.priority; });\n //reverse the sorted array to return the array in descending order while collapsing.\n return isCollapse ? groups.reverse() : groups;\n };\n Ribbon.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Ribbon.prototype.clearOverflowDropDown = function (index) {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(index.toString(), 10)].id + constants.CONTENT_ID);\n if (!activeContent) {\n return;\n }\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n this.removeSimplfiedOverflow(activeContent, tabContent, index, true);\n }\n else {\n this.removeOverflowDropdown(activeContent, tabContent, true, index);\n }\n };\n Ribbon.prototype.isContextualTab = function (tabID) {\n var isContextual = false;\n if (this.contextualTabs.length) {\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id === tabID) {\n isContextual = true;\n break;\n }\n }\n }\n }\n return isContextual;\n };\n Ribbon.prototype.ribbonTabSelecting = function (e) {\n var _this = this;\n this.currentControlIndex = 0;\n var nextTabId = e.selectingItem ? e.selectingItem.getAttribute('data-id') : null;\n var previousTabId = e.previousItem.getAttribute('data-id');\n var nextIndex = getIndex(this.tabs, (function (tab) { return (tab.id === nextTabId); }));\n var isContextual = this.isContextualTab(nextTabId);\n var previousIndex = getIndex(this.tabs, (function (tab) { return (tab.id === previousTabId); }));\n nextIndex = nextIndex === -1 ? this.selectedTab : nextIndex;\n var eventArgs = {\n cancel: e.cancel, isInteracted: e.isInteracted, previousIndex: previousIndex,\n selectedIndex: nextIndex, isContextual: isContextual\n };\n this.trigger('tabSelecting', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.destroyScroll();\n if (!_this.isAddRemove && (previousIndex !== -1)) {\n _this.clearOverflowDropDown(previousIndex);\n }\n var selectedTabContent = _this.tabObj.items[parseInt(nextIndex.toString(), 10)].content;\n if ((!selectedTabContent.querySelector('.' + constants.RIBBON_GROUP)) && (_this.tabs[parseInt(nextIndex.toString(), 10)].groups.length !== 0)) {\n var elements = _this.createGroups(_this.tabs[parseInt(nextIndex.toString(), 10)].groups, nextIndex);\n append(elements, selectedTabContent);\n }\n });\n };\n Ribbon.prototype.createTabItems = function (tabs) {\n var _this = this;\n var tabItems = [];\n var _loop_3 = function (i) {\n var ribbonTab = tabs[parseInt(i.toString(), 10)];\n var header = this_3.createElement('span', {\n innerHTML: ribbonTab.header,\n id: ribbonTab.id + constants.HEADER_ID\n });\n var tabIndex = getIndex(this_3.tabs, (function (tab) { return (tab.id === ribbonTab.id); }));\n if (ribbonTab.keyTip) {\n if (!this_3.keyTipElements[parseInt(tabIndex.toString(), 10)]) {\n this_3.keyTipElements[parseInt(tabIndex.toString(), 10)] = {};\n }\n this_3.addKeyTip(tabIndex, ribbonTab.keyTip, ribbonTab.id, 'tab');\n }\n header.onclick = function () { _this.minimize(false); };\n header.ondblclick = function () { _this.minimize(true); };\n var tab = { header: { text: header }, id: ribbonTab.id, cssClass: ribbonTab.cssClass };\n var content = this_3.createElement('div', {\n className: tab.cssClass,\n id: ribbonTab.id + constants.CONTENT_ID\n });\n content.classList.add(constants.RIBBON_TAB_ITEM);\n tab.content = content;\n tabItems.push(tab);\n };\n var this_3 = this;\n for (var i = 0; i < tabs.length; i++) {\n _loop_3(i);\n }\n return tabItems;\n };\n Ribbon.prototype.renderInitialTab = function (index) {\n var elements = this.createGroups(this.tabs[parseInt(index.toString(), 10)].groups, index);\n var content = this.tabObj.items[parseInt(index.toString(), 10)].content;\n append(elements, content);\n if (this.activeLayout === 'Simplified') {\n this.element.classList.add(constants.RIBBON_SIMPLIFIED_MODE);\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n if (this.ribbonGalleryModule) {\n this.ribbonGalleryModule.checkAvailableHeight(activeContent);\n }\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.addOverflowButton = function (btnId, isGroupOF) {\n var _this = this;\n var overflowButton = this.createElement('button', {\n id: btnId\n });\n var overflowTarget = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_TARGET,\n attrs: { 'tabindex': '0' }\n });\n var overflowDDB = new DropDownButton({\n iconCss: constants.OVERFLOW_ICON,\n cssClass: constants.DROPDOWNBUTTON_HIDE + constants.SPACE + constants.RIBBON_GROUP_OVERFLOW_DDB,\n target: overflowTarget,\n locale: this.locale,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence,\n beforeOpen: function (args) {\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupOpen', eventArgs, function (ribbonArgs) {\n if (ribbonArgs.cancel) {\n args.cancel = true;\n }\n });\n },\n beforeClose: function (args) {\n var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;\n var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;\n var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };\n _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {\n if (ele || ribbonArgs.cancel || groupButtonEle) {\n args.cancel = true;\n }\n });\n }\n }, overflowButton);\n this.element.classList.add(constants.RIBBON_OVERFLOW);\n createTooltip(overflowTarget, this);\n if (!isGroupOF) {\n this.keyTipElements['overflowbtn'] = [];\n this.keyTipElements['overflowbtn'].push({ id: btnId, type: 'overflowbtn', keyTip: '00' });\n }\n var isGroupOf;\n overflowButton.onkeydown = overflowButton.onclick = function () { _this.itemIndex = -1; isGroupOf = overflowButton.classList.contains('e-ribbon-overall-of-btn') ? false : true; };\n overflowTarget.onkeydown = function (e) { return (_this.upDownKeyHandler(e, overflowTarget, isGroupOf), _this); };\n return overflowDDB;\n };\n Ribbon.prototype.upDownKeyHandler = function (e, target, isGroupOf) {\n var items;\n if (isGroupOf) {\n items = target.getElementsByClassName('e-ribbon-item');\n }\n else {\n var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');\n items = currentList.getElementsByClassName('e-ribbon-item');\n }\n var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');\n var comboBoxEle = control && control.classList.contains('e-combobox') ?\n items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;\n var ribbonItem;\n var templateEle;\n if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {\n if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {\n if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {\n this.itemIndex = 0;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n if (comboBoxEle && e.key === 'Tab') {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {\n this.itemIndex++;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, true);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n if (comboBoxEle === null || (e.key === 'Tab')) {\n if (!this.itemIndex || this.itemIndex === -1) {\n this.itemIndex = items.length - 1;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {\n e.preventDefault();\n var item = items[this.itemIndex].querySelector('.e-control');\n if (item) {\n item.focus();\n }\n }\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {\n this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n this.findDisabledItem(ribbonItem, items, false);\n templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');\n }\n if (templateEle) {\n templateEle.focus();\n }\n }\n }\n target.setAttribute('index', this.itemIndex.toString());\n }\n var currentItemIndex = parseInt(target.getAttribute('index'), 10);\n var itemType = '';\n var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;\n if (controlItem) {\n itemType = controlItem.getAttribute('data-control');\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {\n if (itemType === 'ColorPicker') {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-split-colorpicker').focus();\n }\n else {\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n if (elem) {\n elem.focus();\n }\n }\n if (e.key === ' ' && (itemType === 'CheckBox')) {\n var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');\n var checkBox = getComponent(checkBoxEle, CheckBox);\n this.itemIndex = -1;\n checkBox.click();\n }\n }\n if (((itemType === 'SplitButton') && (e.key === 'ArrowRight' || e.key === 'ArrowLeft'))) {\n if (e.key === 'ArrowRight') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n }\n if (e.key === 'ArrowLeft') {\n if (this.enableRtl) {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-dropdown-btn').focus();\n }\n else {\n items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();\n }\n }\n }\n if (e.key === 'Enter') {\n this.itemIndex = -1;\n }\n };\n Ribbon.prototype.findDisabledItem = function (ribbonItem, items, isIncrease) {\n while (ribbonItem && ribbonItem.classList.contains('e-disabled')) {\n if (isIncrease) {\n if (this.itemIndex === items.length - 1 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = -1;\n }\n }\n else {\n if (this.itemIndex === 0 && items[this.itemIndex].closest('.e-ribbon-item').classList.contains('e-disabled')) {\n this.itemIndex = items.length;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isIncrease ? this.itemIndex++ : this.itemIndex--;\n ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');\n }\n };\n Ribbon.prototype.removeOverflowButton = function (overflowDDB) {\n if (overflowDDB) {\n var btnEle = overflowDDB.element;\n destroyTooltip(overflowDDB.target);\n overflowDDB.destroy();\n btnEle.remove();\n }\n };\n Ribbon.prototype.removeOverflowEvent = function (item, itemEle) {\n if (itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.removeOverFlowEvents(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.removeOverFlowEvents(item, itemEle);\n break;\n }\n }\n };\n Ribbon.prototype.createGroupContainer = function (groupId, groupHeader) {\n var ofGroupContainer = this.createElement('div', {\n className: constants.RIBBON_OF_GROUP_CONTAINER,\n id: groupId + constants.CONTAINER_ID\n });\n var ofGroupHeader = this.createElement('div', {\n className: constants.RIBBON_OVERFLOW_HEADER,\n id: groupId + constants.HEADER_ID,\n innerHTML: groupHeader\n });\n ofGroupContainer.append(ofGroupHeader);\n return ofGroupContainer;\n };\n Ribbon.prototype.addExpandCollapse = function () {\n var _this = this;\n this.collapseButton = this.createElement('span', {\n className: constants.RIBBON_COLLAPSE_BUTTON + constants.SPACE + constants.EXPAND_COLLAPSE_ICON,\n id: this.tabObj.element.id + constants.COLLAPSE_BUTTON_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Layout Switcher', 'role': 'button' }\n });\n this.collapseButton.onclick = function (e) { _this.toggleLayout(e); };\n this.collapseButton.onkeydown = function (e) {\n if (e.key === 'Enter') {\n _this.toggleLayout(e);\n }\n };\n this.element.classList.add(constants.RIBBON_COLLAPSIBLE);\n if (this.activeLayout === 'Simplified') {\n this.collapseButton.classList.add(constants.RIBBON_EXPAND_BUTTON);\n }\n this.tabObj.element.appendChild(this.collapseButton);\n if (this.layoutSwitcherKeyTip) {\n this.keyTipElements['collapse'] = [];\n this.keyTipElements['collapse'].push({ id: this.collapseButton.id, type: 'collapse', keyTip: this.layoutSwitcherKeyTip });\n }\n };\n Ribbon.prototype.removeExpandCollapse = function () {\n var _this = this;\n var index = getIndex(this.tooltipData, function (e) { return e.id === _this.collapseButton.id; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n this.element.classList.remove(constants.RIBBON_COLLAPSIBLE);\n remove(this.tabObj.element.querySelector('.' + constants.RIBBON_COLLAPSE_BUTTON));\n this.collapseButton = null;\n };\n Ribbon.prototype.reRenderTabs = function (tabs) {\n this.destroyScroll();\n this.checkID(this.tabs, 'tab', this.element.id);\n for (var _i = 0, _a = Object.keys(tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n var index = parseInt(key, 10);\n var tab = tabs[parseInt(index.toString(), 10)];\n var isNewTab = false;\n for (var j = 0; j < (this.tabObj.items.length); j++) {\n if (this.tabs[parseInt(index.toString(), 10)].id === this.tabObj.items[parseInt(j.toString(), 10)].id) {\n isNewTab = true;\n break;\n }\n }\n if (!isNewTab) {\n this.destroyTabItems(this.tabsInternal);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItems = this.createTabItems(this.tabs);\n if (this.selectedTab >= this.tabs.length) {\n this.selectedTab = this.tabs.length - 1;\n }\n this.tabObj.setProperties({ items: tabItems, selectedItem: this.selectedTab });\n break;\n }\n else {\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n if (groups) {\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n this.tabObj.items[parseInt(index.toString(), 10)].header.text.innerText = ribbonTab.header;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabObj.items[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabObj.items[parseInt(index.toString(), 10)].cssClass);\n }\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _b = 0, groups_1 = groups; _b < groups_1.length; _b++) {\n var group = groups_1[_b];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _c = 0, _d = group.collections; _c < _d.length; _c++) {\n var collection = _d[_c];\n for (var _e = 0, _f = collection.items; _e < _f.length; _e++) {\n var item = _f[_e];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n }\n }\n }\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n this.checkOverflow(this.selectedTab, activeContent);\n };\n Ribbon.prototype.switchLayout = function () {\n this.currentControlIndex = 0;\n this.destroyScroll();\n this.collapseButton.classList.toggle(constants.RIBBON_EXPAND_BUTTON, this.activeLayout === 'Simplified');\n this.element.classList.toggle(constants.RIBBON_SIMPLIFIED_MODE, this.activeLayout === 'Simplified');\n for (var i = 0; i <= (this.tabs.length - 1); i++) {\n var tabIndex = i;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n if (this.activeLayout === 'Simplified') {\n for (var i_4 = 0; i_4 < groupList.length; i_4++) {\n var group = groupList[parseInt(i_4.toString(), 10)];\n var alignType = groupList[parseInt(i_4.toString(), 10)].orientation;\n if (group.isCollapsed) {\n group.setProperties({ isCollapsed: false }, true);\n this.removeDropdown(group.id);\n }\n else {\n this.checkSmallToMedium(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n this.checkMediumToLarge(tabIndex, tab, i_4, tabContent, activeContent, true, false);\n }\n var groupEle = tabContent.querySelector('#' + group.id);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');\n for (var i_5 = 0; i_5 < shrinkColumns.length; i_5++) {\n shrinkColumns[parseInt(i_5.toString(), 10)].remove();\n }\n var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);\n groupHeader.remove();\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n groupContent.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n groupContent.classList.remove(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n groupCollection.classList.replace(constants.RIBBON_ROW, constants.RIBBON_COLUMN);\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && (item.displayOptions === DisplayMode.Classic)) {\n k++;\n var itemEle_1 = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n var ele = itemEle_1.querySelector('#' + item.id);\n this.destroyFunction(item, ele);\n itemEle_1.remove();\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var size = ((item.allowedSizes === RibbonItemSize.Large) ||\n (item.allowedSizes & RibbonItemSize.Medium)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n size = (!(item.displayOptions & DisplayMode.Simplified) && (item.displayOptions & DisplayMode.Overflow))\n ? RibbonItemSize.Medium : size;\n var itemEle = void 0;\n if (!(item.displayOptions & DisplayMode.Classic)) {\n itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer)[0];\n if (item.displayOptions & DisplayMode.Simplified) {\n groupCollection.append(itemEle);\n }\n }\n else {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)) {\n this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, true);\n }\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n item.setProperties({ activeSize: size }, true);\n if (itemEle) {\n var ele = itemEle.querySelector('#' + item.id);\n this.setItemSize(ele, item);\n }\n }\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n }\n if (!(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n }\n else {\n this.element.classList.remove(constants.RIBBON_OVERFLOW);\n for (var i_6 = 0; i_6 < groupList.length; i_6++) {\n var group = groupList[parseInt(i_6.toString(), 10)];\n var alignType = groupList[parseInt(i_6.toString(), 10)].orientation;\n var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);\n var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n if (alignType === 'Row') {\n groupContent.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n groupContent.classList.add(constants.RIBBON_CONTENT_HEIGHT);\n for (var j = 0; j < group.collections.length; j++) {\n var overflowDDB = void 0;\n var overflowtarget = void 0;\n if (!group.enableGroupOverflow) {\n overflowDDB = this.overflowDDB;\n if (overflowDDB) {\n overflowtarget = this.overflowDDB.target;\n }\n }\n else {\n var overflowDDBEle = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n }\n var collection = group.collections[parseInt(j.toString(), 10)];\n var groupCollection = groupContainer.querySelector('#' + collection.id);\n if (alignType === 'Column') {\n groupCollection.classList.replace(constants.RIBBON_COLUMN, constants.RIBBON_ROW);\n }\n for (var k = 0; k < collection.items.length; k++) {\n var itemList = collection.items;\n var item = collection.items[parseInt(k.toString(), 10)];\n var flag = true;\n while ((flag) && !(item.displayOptions & DisplayMode.Classic)) {\n k++;\n var itemEle = void 0;\n if ((item.displayOptions & DisplayMode.Simplified) || (item.displayOptions & DisplayMode.Overflow)) {\n if (item.displayOptions & DisplayMode.Simplified) {\n itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n else {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n if (itemEle !== null) {\n var ele_8 = itemEle.querySelector('#' + item.id);\n this.destroyFunction(item, ele_8);\n itemEle.remove();\n }\n }\n if (k < itemList.length) {\n item = itemList[parseInt(k.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n if (!(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) {\n var itemEle = this.createItems([item], alignType, group.id, group.header, group.enableGroupOverflow, tabIndex)[0];\n groupCollection.append(itemEle);\n }\n else {\n var itemEle = groupContainer.querySelector('#' + item.id + constants.CONTAINER_ID);\n if (!itemEle && overflowtarget) {\n itemEle = overflowtarget.querySelector('#' + item.id + constants.CONTAINER_ID);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, group.enableGroupOverflow, false);\n }\n this.removeOverflowEvent(item, itemEle);\n }\n if (item.type === RibbonItemType.GroupButton) {\n this.ribbonGroupButtonModule.switchGroupButton(item, itemEle);\n }\n if (itemEle) {\n groupCollection.append(itemEle);\n }\n }\n var ele = groupContainer.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = groupContainer.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n var itemsize = (item.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (item.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: itemsize }, true);\n this.setItemSize(ele, item);\n if (item.type === RibbonItemType.Gallery) {\n this.ribbonGalleryModule.switchGalleryItems(this.activeLayout, item.id);\n }\n }\n if (group.enableGroupOverflow && overflowDDB) {\n if (overflowtarget.childElementCount === 0 ||\n (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {\n this.removeOverflowButton(overflowDDB);\n }\n }\n }\n }\n }\n if (this.selectedTab === tabIndex) {\n this.checkOverflow(tabIndex, activeContent);\n }\n }\n }\n if (this.activeLayout === 'Classic') {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.createLauncherIcon = function (groupId, groupContainer, tabIndex) {\n var _this = this;\n var launcherIcon = this.createElement('div', {\n className: constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss ? this.launcherIconCss : constants.RIBBON_LAUNCHER_ICON),\n id: groupId + constants.LAUNCHER_ID,\n attrs: { 'tabindex': '0', 'type': 'button', 'aria-label': 'Launcher Icon', 'role': 'button' }\n });\n groupContainer.appendChild(launcherIcon);\n groupContainer.classList.add(constants.RIBBON_LAUNCHER);\n EventHandler.add(launcherIcon, 'click', this.launcherIconClicked.bind(this, groupId), this);\n EventHandler.add(launcherIcon, 'keydown', function (e) {\n if (e.key === 'Enter') {\n _this.launcherIconClicked(groupId);\n }\n }, this);\n var itemProp = getGroup(this.tabs, groupId);\n if (itemProp.group.launcherIconKeyTip) {\n this.addKeyTip(tabIndex, itemProp.group.launcherIconKeyTip, launcherIcon.id, 'launcher');\n }\n };\n Ribbon.prototype.launcherIconClicked = function (id) {\n var eventArgs = { groupId: id };\n this.trigger('launcherIconClick', eventArgs);\n };\n Ribbon.prototype.createGroups = function (groupList, tabIndex) {\n var groupElements = [];\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n var alignType = group.orientation;\n var groupEle = this.createElement('div', {\n className: group.cssClass,\n id: group.id\n });\n groupEle.classList.add(constants.RIBBON_GROUP);\n groupElements.push(groupEle);\n var groupContainer = this.createElement('div', {\n className: group.cssClass,\n id: group.id + constants.CONTAINER_ID\n });\n groupContainer.classList.add(constants.RIBBON_GROUP_CONTAINER);\n groupEle.appendChild(groupContainer);\n var groupContent = this.createElement('div', {\n className: this.activeLayout === 'Simplified' ? constants.RIBBON_GROUP_CONTENT : (constants.RIBBON_GROUP_CONTENT + constants.SPACE + constants.RIBBON_CONTENT_HEIGHT),\n id: group.id + constants.CONTENT_ID\n });\n groupContent.classList.add(((alignType === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n groupContainer.appendChild(groupContent);\n if (this.activeLayout === 'Classic') {\n var groupHeader = this.createElement('div', {\n className: constants.RIBBON_GROUP_HEADER,\n id: group.id + constants.HEADER_ID,\n innerHTML: group.header\n });\n groupContainer.appendChild(groupHeader);\n }\n if (group.showLauncherIcon) {\n this.createLauncherIcon(group.id, groupContainer, tabIndex);\n }\n var elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);\n append(elements, groupContent);\n var isItemsHidden = true;\n for (var j = 0; j < elements.length; j++) {\n if (isItemsHidden) {\n for (var k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {\n if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n }\n if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + constants.RIBBON_ITEM))) {\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps) {\n if (initialProps.hiddenGroups && initialProps.hiddenGroups.length) {\n this.updateGroupProps('hiddenGroups', initialProps, groupEle);\n }\n if (initialProps.disabledGroups && initialProps.disabledGroups.length) {\n this.updateGroupProps('disabledGroups', initialProps, groupEle);\n }\n }\n }\n if (this.initialPropsData[parseInt(tabIndex.toString(), 10)]) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n return groupElements;\n };\n Ribbon.prototype.updateGroupProps = function (key, initialProps, groupEle) {\n // eslint-disable-next-line\n var groupIndex = initialProps[key].indexOf(groupEle.id);\n if (groupIndex !== -1) {\n if (key === 'hiddenGroups') {\n groupEle.classList.add('e-hidden');\n }\n else {\n groupEle.classList.add('e-disabled');\n }\n }\n };\n Ribbon.prototype.validateItemSize = function () {\n for (var k = 0; k < this.tabs.length; k++) {\n var groupList = this.tabs[parseInt(k.toString(), 10)].groups;\n for (var l = 0; l < groupList.length; l++) {\n var collectionList = groupList[parseInt(l.toString(), 10)].collections;\n var alignType = groupList[parseInt(l.toString(), 10)].orientation;\n for (var i = 0; i < collectionList.length; i++) {\n var items = collectionList[parseInt(i.toString(), 10)].items;\n for (var j = 0; j < items.length; j++) {\n var ribbonitem = items[parseInt(j.toString(), 10)];\n if (!ribbonitem.allowedSizes || (ribbonitem.allowedSizes === 0)) {\n ribbonitem.setProperties({\n allowedSizes: (RibbonItemSize.Small | RibbonItemSize.Medium | RibbonItemSize.Large)\n }, true);\n }\n if ((ribbonitem.type === 'ColorPicker') && (ribbonitem.allowedSizes !== RibbonItemSize.Small)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Small }, true);\n }\n else if ((ribbonitem.type === 'ComboBox' || ribbonitem.type === 'CheckBox') &&\n (ribbonitem.allowedSizes !== RibbonItemSize.Medium)) {\n ribbonitem.setProperties({ allowedSizes: RibbonItemSize.Medium }, true);\n }\n else if (((alignType === 'Column') && (items.length > 1)) || ((alignType === 'Row') && (collectionList.length > 1))) {\n if (ribbonitem.allowedSizes & RibbonItemSize.Large) {\n // To remove large size, perform 'and' with 011(3).\n var sizeVal = ribbonitem.allowedSizes & (RibbonItemSize.Small | RibbonItemSize.Medium);\n sizeVal = sizeVal ? sizeVal : RibbonItemSize.Medium;\n ribbonitem.setProperties({ allowedSizes: sizeVal }, true);\n }\n }\n var itemsize = (ribbonitem.allowedSizes & RibbonItemSize.Large) ? RibbonItemSize.Large :\n (ribbonitem.allowedSizes & RibbonItemSize.Medium) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonitem.setProperties({ activeSize: itemsize }, true);\n }\n }\n }\n }\n };\n Ribbon.prototype.createCollection = function (collectionList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var collectionElements = [];\n for (var i = 0; i < collectionList.length; i++) {\n var collection = collectionList[parseInt(i.toString(), 10)];\n var collectionEle = this.createElement('div', {\n className: collection.cssClass,\n id: collection.id\n });\n collectionEle.classList.add(constants.RIBBON_COLLECTION);\n collectionEle.classList.add(((alignType !== 'Column') || (this.activeLayout === 'Simplified')) ?\n constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n collectionElements.push(collectionEle);\n var elements = this.createItems(collection.items, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer);\n append(elements, collectionEle);\n if ((alignType === 'Row') && (i === 2)) {\n break;\n }\n }\n return collectionElements;\n };\n Ribbon.prototype.createRibbonItem = function (item, itemEle) {\n switch (item.type) {\n case 'Button':\n this.ribbonButtonModule.createButton(item, itemEle);\n break;\n case 'DropDown':\n this.ribbonDropDownModule.createDropDown(item, itemEle);\n break;\n case 'SplitButton':\n this.ribbonSplitButtonModule.createSplitButton(item, itemEle);\n break;\n case 'CheckBox':\n this.ribbonCheckBoxModule.createCheckBox(item, itemEle);\n break;\n case 'ColorPicker':\n this.ribbonColorPickerModule.createColorPicker(item, itemEle);\n break;\n case 'ComboBox':\n this.ribbonComboBoxModule.createComboBox(item, itemEle);\n break;\n case 'Template':\n this.createTemplateContent(item, itemEle);\n break;\n case 'GroupButton':\n this.ribbonGroupButtonModule.createGroupButton(item, itemEle);\n break;\n case 'Gallery':\n this.ribbonGalleryModule.createGallery(item, itemEle);\n break;\n }\n };\n Ribbon.prototype.createItems = function (itemList, alignType, groupId, groupHeader, isGroupOF, tabIndex, groupContainer) {\n var _a;\n var itemElements = [];\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[parseInt(i.toString(), 10)];\n //To stop rendering of items with simplified mode position type as none\n var flag = true;\n while (flag &&\n (((this.activeLayout === 'Simplified') && !(item.displayOptions & (DisplayMode.Simplified | DisplayMode.Overflow))) ||\n ((this.activeLayout === 'Classic') && !(item.displayOptions & DisplayMode.Classic)))) {\n i++;\n if (i < itemList.length) {\n item = itemList[parseInt(i.toString(), 10)];\n }\n else {\n flag = false;\n }\n }\n if (!flag) {\n break;\n }\n var itemEle = this.createElement('div', {\n className: item.cssClass,\n id: item.id + constants.CONTAINER_ID\n });\n (_a = itemEle.classList).add.apply(_a, [constants.RIBBON_ITEM].concat((item.disabled ? [constants.DISABLED_CSS] : [])));\n // To avoid undefined items condition is added\n if (item.ribbonTooltipSettings && isTooltipPresent(item.ribbonTooltipSettings)) {\n itemEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemEle.id, data: item.ribbonTooltipSettings });\n }\n if (item.type === RibbonItemType.GroupButton) {\n for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {\n if (this.keyTipElements[parseInt(tabIndex.toString(), 10)] &&\n item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip) {\n this.addKeyTip(tabIndex, item.groupButtonSettings.items[parseInt(i_7.toString(), 10)].keyTip, item.id + (constants.RIBBON_GROUP_BUTTON_ID + i_7), 'item');\n }\n }\n }\n if (item.keyTip) {\n if (item.type === RibbonItemType.Gallery) {\n this.addKeyTip(tabIndex, item.keyTip, (item.id + '_popupButton'), 'item');\n }\n else {\n this.addKeyTip(tabIndex, item.keyTip, item.id, 'item');\n }\n }\n var size = item.activeSize;\n if (!(item.type === RibbonItemType.Gallery)) {\n if (this.activeLayout === 'Simplified') {\n size = ((item.allowedSizes === RibbonItemSize.Large) || (item.allowedSizes & RibbonItemSize.Medium) ||\n (item.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n item.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemEle.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n itemEle.classList.add((size & RibbonItemSize.Medium) ? constants.RIBBON_MEDIUM_ITEM : constants.RIBBON_SMALL_ITEM);\n }\n }\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (initialProps && initialProps.hiddenItems && initialProps.hiddenItems.length) {\n var itemIndex = initialProps.hiddenItems.indexOf(item.id);\n if (itemIndex !== -1) {\n itemEle.classList.add('e-hidden');\n }\n }\n this.createRibbonItem(item, itemEle);\n if ((this.activeLayout === 'Simplified') && ((item.displayOptions === DisplayMode.Overflow) || (item.displayOptions === (DisplayMode.Classic | DisplayMode.Overflow)))) {\n this.createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer);\n if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(item, itemEle, isGroupOF, true);\n }\n }\n else {\n // For normal mode and Simplified mode position type as Group and Auto\n itemElements.push(itemEle);\n }\n if ((alignType === 'Column') && (i === 2)) {\n break;\n }\n }\n return itemElements;\n };\n Ribbon.prototype.createHelpPaneTemplate = function () {\n if (this.helpPaneTemplate) {\n var templateName = 'helpPaneTemplate';\n this.clearTemplate([templateName]);\n this.ribbonTempEle = this.createElement('div', {\n className: constants.RIBBON_HELP_TEMPLATE,\n id: this.element.id + constants.RIBBON_HELP_PANE_TEMPLATE_ID\n });\n var templateFunction = getTemplateFunction(this.helpPaneTemplate);\n append(templateFunction({}, this, templateName, 'helpPaneTemplate', this.isStringTemplate), this.ribbonTempEle);\n var tabEle = this.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n toolbarEle.after(this.ribbonTempEle);\n tabEle.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, this.ribbonTempEle.offsetWidth + 'px');\n this.renderReactTemplates();\n }\n };\n Ribbon.prototype.createTemplateContent = function (item, itemElement) {\n var itemEle = this.createElement('div', {\n className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,\n id: item.id,\n attrs: { 'tabindex': '-1' }\n });\n if (item.disabled) {\n itemEle.classList.add(constants.DISABLED_CSS);\n itemEle.setAttribute('disabled', '');\n }\n itemElement.appendChild(itemEle);\n this.renderItemTemplate(item, itemEle);\n };\n Ribbon.prototype.renderItemTemplate = function (item, itemElement) {\n var templateName = 'ribbon' + item.id + 'itemTemplate';\n this.clearTemplate([templateName]);\n var templateFunction = getTemplateFunction(item.itemTemplate);\n append(templateFunction({ activeSize: RibbonItemSize[item.activeSize] }, this, templateName, (item.id + 'itemTemplate'), this.isStringTemplate), itemElement);\n this.renderReactTemplates();\n };\n Ribbon.prototype.checkID = function (list, type, initId) {\n var key = type === 'tab' ? constants.TAB_ID : type === 'group' ? constants.GROUP_ID :\n type === 'collection' ? constants.COLLECTION_ID : constants.ITEM_ID;\n for (var i = 0; i < list.length; i++) {\n var listitem = list[parseInt(i.toString(), 10)];\n if (!listitem.id) {\n var htmlAttrID = void 0;\n if (type === 'item') {\n htmlAttrID = this.hasHtmlAtrrID(listitem);\n }\n listitem.setProperties({ id: htmlAttrID ? htmlAttrID : initId + key + (this.idIndex++) }, true);\n }\n switch (type) {\n case 'tab':\n listitem.setProperties({ groups: this.checkID(listitem.groups, 'group', listitem.id) }, true);\n break;\n case 'group':\n listitem.setProperties({ collections: this.checkID(listitem.collections, 'collection', listitem.id) }, true);\n break;\n case 'collection':\n listitem.setProperties({ items: this.checkID(listitem.items, 'item', listitem.id) }, true);\n break;\n default:\n break;\n }\n }\n return list;\n };\n Ribbon.prototype.hasHtmlAtrrID = function (listItem) {\n var id = '';\n if (listItem.buttonSettings.htmlAttributes.id) {\n id = listItem.buttonSettings.htmlAttributes.id;\n }\n else if (listItem.checkBoxSettings.htmlAttributes.id) {\n id = listItem.checkBoxSettings.htmlAttributes.id;\n }\n else if (listItem.colorPickerSettings.htmlAttributes.id) {\n id = listItem.colorPickerSettings.htmlAttributes.id;\n }\n else if (listItem.comboBoxSettings.htmlAttributes.id) {\n id = listItem.comboBoxSettings.htmlAttributes.id;\n }\n else if (listItem.dropDownSettings.htmlAttributes.id) {\n id = listItem.dropDownSettings.htmlAttributes.id;\n }\n else if (listItem.splitButtonSettings.htmlAttributes.id) {\n id = listItem.splitButtonSettings.htmlAttributes.id;\n }\n return id;\n };\n Ribbon.prototype.updateCommonProperty = function (commonProp) {\n this.tabObj.setProperties(commonProp);\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.setCommonProperties(commonProp);\n }\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.setCommonProperties(commonProp);\n }\n for (var i = 0; i < this.tabs.length; i++) {\n var tab = this.tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n if (contentEle.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n if (dropdown) {\n updateTooltipProp(dropdown.target, commonProp);\n dropdown.setProperties(commonProp);\n }\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : item.type === RibbonItemType.GroupButton ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id);\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n if (item.type === 'DropDown') {\n this.updatePopupItems(item, dropdown.target, group.enableGroupOverflow, true);\n }\n }\n }\n if (ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName !== 'template') {\n if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i_8 = 0; i_8 < item.groupButtonSettings.items.length; i_8++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_8);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateCommonProperty(ele, 'dropdown-btn', commonProp);\n for (var i_9 = 0; i_9 < item.groupButtonSettings.items.length; i_9++) {\n var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_9);\n updateCommonProperty(btnEle, 'btn', commonProp);\n }\n }\n else {\n updateCommonProperty(ele, moduleName, commonProp);\n }\n }\n else if (!isNullOrUndefined(commonProp.enableRtl)) {\n ele.classList.toggle(constants.RTL_CSS, commonProp.enableRtl);\n }\n }\n }\n }\n }\n }\n }\n };\n Ribbon.prototype.removeLauncherIcon = function (groupId, dropdownElement, contentEle) {\n var containerId = groupId + constants.CONTAINER_ID;\n var containerEle = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, containerId) : contentEle.querySelector('#' + containerId);\n if (containerEle) {\n containerEle.classList.remove(constants.RIBBON_LAUNCHER);\n var launcherIcon = containerEle.querySelector('#' + groupId + constants.LAUNCHER_ID);\n remove(launcherIcon);\n }\n };\n Ribbon.prototype.destroyTabItems = function (tabs) {\n for (var i = 0; i < tabs.length; i++) {\n var tab = tabs[parseInt(i.toString(), 10)];\n var contentEle = this.tabObj.items[parseInt(i.toString(), 10)].content;\n for (var _i = 0, _a = tab.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n dropdownElement = group.isCollapsed ?\n contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n if (group.showLauncherIcon) {\n this.removeLauncherIcon(group.id, dropdownElement, contentEle);\n }\n }\n else {\n dropdownElement = group.enableGroupOverflow ?\n contentEle.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _b = 0, _c = group.collections; _b < _c.length; _b++) {\n var collection = _c[_b];\n for (var _d = 0, _e = collection.items; _d < _e.length; _d++) {\n var item = _e[_d];\n var ele = void 0;\n if (this.activeLayout === RibbonLayout.Classic) {\n if (item.displayOptions & DisplayMode.Classic) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) :\n contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton) {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (item.type === RibbonItemType.Gallery) {\n ele = contentEle.querySelector('#' + item.id + constants.CONTAINER_ID);\n }\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ?\n contentEle.querySelector('#' + item.id) : null;\n if (item.type === RibbonItemType.Gallery) {\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id + constants.CONTAINER_ID) : null;\n }\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown ? dropdown.target.querySelector('#' + item.id) : null;\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if ((this.activeLayout === RibbonLayout.Classic) && dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n else if ((this.activeLayout === RibbonLayout.Simplified) && group.enableGroupOverflow && dropdownElement) {\n this.removeOverflowButton(dropdown);\n }\n }\n }\n if (this.overflowDDB) {\n this.removeOverflowButton(this.overflowDDB);\n this.overflowDDB = null;\n }\n };\n Ribbon.prototype.destroyFunction = function (item, ele) {\n var moduleName = this.getItemModuleName(item);\n if (moduleName === 'colorpicker') {\n this.ribbonColorPickerModule.unwireColorPickerEvents(ele);\n }\n else if (moduleName === 'group-btn') {\n if (this.activeLayout === 'Classic') {\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);\n if (btnEle) {\n destroyControl(btnEle, 'btn');\n }\n }\n }\n else {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n var _loop_4 = function (i) {\n if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings) {\n var groupButtonID_1 = item.id + constants.RIBBON_GROUP_BUTTON_ID + i;\n var index = getIndex(this_4.tooltipData, function (e) { return e.id === groupButtonID_1; });\n if (index !== -1) {\n this_4.tooltipData.splice(index, 1);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < item.groupButtonSettings.items.length; i++) {\n _loop_4(i);\n }\n }\n else if (moduleName === 'gallery') {\n if (ele.closest('.e-ribbon-overflow-target')) {\n destroyControl(ele, 'dropdown-btn');\n var galleryPopupEle = Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '_galleryPopup'));\n galleryPopupEle.concat(Array.prototype.slice.call(document.querySelectorAll('#' + item.id + '-popup')));\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupBtn = document.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n var galleryWrapper = document.querySelector('#' + item.id + '_galleryWrapper');\n if (galleryWrapper) {\n galleryWrapper.remove();\n }\n }\n else {\n var galleryEle = ele.querySelectorAll('.e-ribbon-gallery-item');\n var galleryPopupBtn = ele.parentElement.querySelector('#' + item.id + '_popupButton');\n if (galleryPopupBtn) {\n galleryPopupBtn.remove();\n }\n for (var i = 0; i < galleryEle.length; i++) {\n galleryEle[parseInt(i.toString(), 10)].remove();\n }\n var galleryPopupEle = document.querySelectorAll('#' + item.id + '_galleryPopup');\n for (var i = 0; i < galleryPopupEle.length; i++) {\n galleryPopupEle[parseInt(i.toString(), 10)].remove();\n }\n }\n }\n else if (moduleName !== 'template') {\n destroyControl(ele, moduleName);\n }\n if (item.ribbonTooltipSettings) {\n var index = getIndex(this.tooltipData, function (e) { return e.id === item.id + constants.CONTAINER_ID; });\n if (index !== -1) {\n this.tooltipData.splice(index, 1);\n }\n }\n if (item.type === 'GroupButton') {\n this.ribbonGroupButtonModule.destroyDropDown(item);\n }\n };\n /**\n * Gets the item module name.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n * @hidden\n */\n Ribbon.prototype.getItemModuleName = function (item) {\n switch (item.type) {\n case 'Button':\n return 'btn';\n case 'DropDown':\n return 'dropdown-btn';\n case 'SplitButton':\n return 'split-btn';\n case 'CheckBox':\n return 'checkbox';\n case 'ColorPicker':\n return 'colorpicker';\n case 'ComboBox':\n return 'combobox';\n case 'GroupButton':\n return 'group-btn';\n case 'Gallery':\n return 'gallery';\n default:\n return 'template';\n }\n };\n Ribbon.prototype.clearOverflowResize = function () {\n this.destroyScroll();\n this.clearOverflowDropDown(this.selectedTab);\n var tab = this.tabs[this.selectedTab];\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);\n var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);\n for (var j = 0; (j < tab.groups.length); j++) {\n this.checkSmallToMedium(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n this.checkMediumToLarge(this.selectedTab, tab, j, tabContent, activeContent, true, true);\n }\n };\n /**\n * Refreshes the layout.\n *\n * @returns {void}\n */\n Ribbon.prototype.refreshLayout = function () {\n this.resizeHandler();\n };\n /**\n * Selects the tab\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.selectTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n this.setProperties({ selectedTab: index });\n };\n /**\n * Shows a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be shown.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.showTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, false, isContextual);\n };\n /**\n * Hides a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be hidden.\n * @param {boolean} isContextual - The boolean if the rendering is contextual.\n * @returns {void}\n */\n Ribbon.prototype.hideTab = function (tabId, isContextual) {\n if (isContextual === void 0) { isContextual = false; }\n this.showHideTab(tabId, true, isContextual);\n };\n Ribbon.prototype.showHideTab = function (tabId, value, isContextual) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n this.tabObj.hideTab(index, value);\n if (isContextual) {\n var contextualTab_1;\n var tabEle = this.tabObj.element;\n for (var i = 0; i < this.contextualTabs.length; i++) {\n for (var j = 0; j < this.contextualTabs[parseInt(i.toString(), 10)].tabs.length; j++) {\n if (tabId === this.contextualTabs[parseInt(i.toString(), 10)].tabs[parseInt(j.toString(), 10)].id) {\n contextualTab_1 = this.contextualTabs[parseInt(i.toString(), 10)];\n }\n }\n }\n if (contextualTab_1) {\n var isTabHidden = true;\n var _loop_5 = function (i) {\n var index_1 = getIndex(this_5.tabs, function (e) {\n return e.id === contextualTab_1.tabs[parseInt(i.toString(), 10)].id;\n });\n if (index_1 !== -1) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index_1.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden'))) {\n isTabHidden = false;\n }\n }\n };\n var this_5 = this;\n for (var i = 0; i < contextualTab_1.tabs.length; i++) {\n _loop_5(i);\n }\n if (isTabHidden) {\n contextualTab_1.setProperties({ visible: false }, true);\n }\n else {\n contextualTab_1.setProperties({ visible: true }, true);\n }\n }\n }\n };\n /**\n * Enables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableTab = function (tabId) {\n this.enableDisableTab(tabId, true);\n };\n /**\n * Disables a specific tab in the ribbon.\n *\n * @param {string} tabId - The ID of the tab to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableTab = function (tabId) {\n this.enableDisableTab(tabId, false);\n };\n Ribbon.prototype.enableDisableTab = function (tabId, value) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var tbItems = this.tabObj.items[parseInt(index.toString(), 10)].content;\n this.tabObj.element.querySelector('#' + tabId + constants.HEADER_ID).classList[value ? 'remove' : 'add']('e-disabled');\n tbItems.classList[value ? 'remove' : 'add']('e-disabled');\n this.tabObj.enableTab(index, value);\n };\n /**\n * Adds the ribbon tab.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model\n * @param {string} targetId - Gets the ID of the target tab to add the new tab.\n * @param {boolean} isAfter - Defines whether the tab is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addTab = function (tab, targetId, isAfter) {\n var index = targetId ? getIndex(this.tabs, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? this.tabs.length : (index + (isAfter ? 1 : 0));\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 0, tab);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.checkID([this.tabs[parseInt(index.toString(), 10)]], 'tab', this.element.id);\n this.tabsInternal = this.tabs.slice();\n this.validateItemSize();\n var tabItem = this.createTabItems([tab]);\n this.tabObj.addTab(tabItem, index);\n };\n /**\n * Removes the ribbon tab.\n *\n * @param {string} tabId - Gets the tab ID\n * @returns {void}\n */\n Ribbon.prototype.removeTab = function (tabId) {\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n if (groups && (contentEle.innerHTML !== '')) {\n for (var _i = 0, groups_2 = groups; _i < groups_2.length; _i++) {\n var group = groups_2[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n this.tabsInternal = this.tabs.slice();\n this.tabsInternal.splice(index, 1);\n this.setProperties({ tabs: this.tabsInternal }, true);\n this.tabObj.removeTab(index);\n };\n /**\n * Adds the ribbon group.\n *\n * @param {string} tabId - Gets the tab ID.\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @param {string} targetId - Gets the ID of the target group to add the new group.\n * @param {boolean} isAfter - Defines whether the group is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addGroup = function (tabId, group, targetId, isAfter) {\n var tabIndex = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (tabIndex === -1) {\n return;\n }\n if (this.selectedTab === tabIndex) {\n this.clearOverflowResize();\n }\n var tab = this.tabs[parseInt(tabIndex.toString(), 10)];\n var ribbonGroups = tab.groups.slice();\n var index = targetId ? getIndex(ribbonGroups, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonGroups.length : (index + (isAfter ? 1 : 0));\n ribbonGroups.splice(index, 0, group);\n tab.setProperties({ groups: ribbonGroups }, true);\n this.checkID([tab.groups[parseInt(index.toString(), 10)]], 'group', tabId);\n this.validateItemSize();\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n if (contentEle.innerHTML !== '') {\n var element = this.createGroups([tab.groups[parseInt(index.toString(), 10)]], tabIndex)[0];\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.append(element);\n }\n }\n if (this.selectedTab === tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon group.\n *\n * @param {string} groupId -Gets the group ID.\n * @returns {void}\n */\n Ribbon.prototype.removeGroup = function (groupId) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n var groupEle = contentEle.querySelector('#' + groupId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroups = this.tabs[itemProp.tabIndex].groups.slice();\n ribbonGroups.splice(itemProp.groupIndex, 1);\n this.tabs[itemProp.tabIndex].setProperties({ groups: ribbonGroups }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {\n return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;\n };\n /**\n * Hides a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideGroup = function (groupID) {\n this.showHideGroup(groupID, true);\n };\n /**\n * Shows a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showGroup = function (groupID) {\n this.showHideGroup(groupID, false);\n };\n Ribbon.prototype.showHideGroup = function (groupID, isHidden) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hidden');\n }\n else {\n overflowtarget.classList.remove('e-hidden');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hidden');\n }\n else {\n grpContainer.classList.remove('e-hidden');\n }\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {\n if (isHidden) {\n if (!(element.classList.contains('e-hidden'))) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.add('e-hidden');\n if (key === 'hideItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n this.calculateHiddenElementsWidth(tabIndex);\n }\n }\n else {\n if (element.classList.contains('e-hidden')) {\n this.checkHiddenElements(key, id, tabIndex);\n element.classList.remove('e-hidden');\n this.calculateHiddenElementsWidth(tabIndex);\n if (key === 'showItem') {\n this.checkHiddenItems(group, isHidden, tabIndex);\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {\n if (this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (!hiddenProps) {\n this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};\n hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n }\n if (hiddenProps) {\n if (!hiddenProps[\"\" + key]) {\n hiddenProps[\"\" + key] = [];\n }\n if (hiddenProps[\"\" + key].length) {\n var index = hiddenProps[\"\" + key].indexOf(id);\n if (index === -1) {\n hiddenProps[\"\" + key].push(id);\n }\n }\n else {\n hiddenProps[\"\" + key].push(id);\n }\n }\n }\n };\n Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps && hiddenProps[\"\" + key] && hiddenProps[\"\" + key].length) {\n var _loop_6 = function (i) {\n var contentEle = this_6.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var hiddenEle;\n var groupEle = void 0;\n var isGroupHidden = false;\n var widthDifference = 0;\n if (key === 'hideGroup' || key === 'showGroup') {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n }\n else {\n hiddenEle = contentEle.querySelector('#' + hiddenProps[\"\" + key][parseInt(i.toString(), 10)] + constants.CONTAINER_ID);\n }\n if (hiddenEle) {\n if (key === 'hideGroup' || key === 'hideItem') {\n var isHidden = false;\n if (hiddenEle.classList.contains('e-hidden')) {\n isHidden = true;\n hiddenEle.classList.remove('e-hidden');\n }\n if (key === 'hideItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n widthDifference = this_6.checkWidthDifference(hiddenEle, groupEle);\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);\n if (isHidden) {\n hiddenEle.classList.add('e-hidden');\n }\n }\n else {\n if (key === 'showItem') {\n groupEle = hiddenEle.closest('.e-ribbon-group');\n if (groupEle.classList.contains('e-hide-group')) {\n isGroupHidden = true;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n else {\n if (this_6.hiddenGroups.indexOf(groupEle.id) !== -1) {\n var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.add('e-hidden');\n }\n });\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n hiddenItems.forEach(function (item) {\n if (item.id !== hiddenEle.id) {\n item.classList.remove('e-hidden');\n }\n });\n this_6.hiddenGroups.splice(this_6.hiddenGroups.indexOf(groupEle.id), 1);\n }\n }\n }\n this_6.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);\n this_6.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);\n }\n if (isGroupHidden) {\n groupEle.classList.add('e-hide-group');\n groupEle.classList.add('e-ribbon-emptyCollection');\n }\n }\n var index = hiddenProps[\"\" + key].indexOf(hiddenProps[\"\" + key][parseInt(i.toString(), 10)]);\n if (index !== -1) {\n hiddenProps[\"\" + key].splice(index, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_6 = this, out_i_1;\n for (var i = 0; i < hiddenProps[\"\" + key].length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n }\n };\n Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {\n var widthDifference = 0;\n groupEle.classList.remove('e-hide-group');\n groupEle.classList.remove('e-ribbon-emptyCollection');\n if (this.hiddenGroups.length) {\n if (this.hiddenGroups.indexOf(groupEle.id) === -1) {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n }\n else {\n this.hiddenGroups.push(groupEle.id);\n widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);\n }\n return widthDifference;\n };\n Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {\n if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {\n var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];\n if (hiddenProps) {\n for (var i = 0; i < Object.keys(hiddenProps).length; i++) {\n this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);\n var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);\n }\n }\n }\n var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');\n for (var i = 0; i < groupOFButton.length; i++) {\n var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);\n var overflowBtnTarget = overflowButton.target;\n var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');\n for (var i_10 = 0; i_10 < overflowItems.length; i_10++) {\n if (overflowItems[parseInt(i_10.toString(), 10)].hasAttribute('data-medium-width')) {\n mediumDataItems.push(overflowItems[parseInt(i_10.toString(), 10)]);\n }\n }\n }\n for (var i = 0; i < mediumDataItems.length; i++) {\n if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {\n var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);\n mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());\n }\n }\n }\n };\n Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {\n if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {\n var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;\n for (var i = 0; i < groupList.length; i++) {\n var group = groupList[parseInt(i.toString(), 10)];\n if (group.enableGroupOverflow) {\n var groupContainer = document.querySelector('#' + group.id);\n var overflowButton = void 0;\n var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);\n if (overflowDDB) {\n overflowButton = getInstance(overflowDDB, DropDownButton);\n }\n if (overflowButton) {\n var overflowEle = overflowButton.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i_11 = 0; i_11 < overflowItems.length; i_11++) {\n var previousWidth = parseInt(overflowItems[parseInt(i_11.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i_11.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n }\n }\n if (this.overflowDDB) {\n var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n var overflowEle = this.overflowDDB.target;\n var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');\n for (var i = 0; i < overflowItems.length; i++) {\n var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {\n var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);\n if (previousWidth) {\n overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());\n }\n }\n }\n }\n };\n /**\n * Disables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be disabled.\n * @returns {void}\n */\n Ribbon.prototype.disableGroup = function (groupID) {\n this.enableDisableGroup(groupID, true);\n };\n /**\n * Enables a specific group within a ribbon tab.\n *\n * @param {string} groupID - The ID of the group to be enabled.\n * @returns {void}\n */\n Ribbon.prototype.enableGroup = function (groupID) {\n this.enableDisableGroup(groupID, false);\n };\n Ribbon.prototype.enableDisableGroup = function (groupID, isDisabled) {\n var overflowDDB;\n var overflowtarget;\n var itemProp = getGroup(this.tabs, groupID);\n if (!itemProp) {\n return;\n }\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupID);\n if (groupEle) {\n if (isDisabled) {\n groupEle.classList.add('e-disabled');\n }\n else {\n groupEle.classList.remove('e-disabled');\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, groupID, 'disabledGroups', isDisabled);\n }\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (itemProp.group.enableGroupOverflow) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isDisabled) {\n overflowtarget.classList.add('e-disabled');\n }\n else {\n overflowtarget.classList.remove('e-disabled');\n }\n }\n }\n else if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isDisabled) {\n grpContainer.classList.add('e-disabled');\n }\n else {\n grpContainer.classList.remove('e-disabled');\n }\n }\n }\n }\n };\n /**\n * adds the ribbon collection.\n *\n * @param {string} groupId - Gets the ribbon group ID.\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @param {string} targetId - Gets the ID of the target collection to add the new collection.\n * @param {boolean} isAfter - Defines whether the collection is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addCollection = function (groupId, collection, targetId, isAfter) {\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Row') && (itemProp.group.collections.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonCollections = itemProp.group.collections.slice();\n var index = targetId ? getIndex(ribbonCollections, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonCollections.length : (index + (isAfter ? 1 : 0));\n ribbonCollections.splice(index, 0, collection);\n itemProp.group.setProperties({ collections: ribbonCollections }, true);\n this.checkID([itemProp.group.collections[parseInt(index.toString(), 10)]], 'collection', groupId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var collection_1 = itemProp.group.collections[parseInt(index.toString(), 10)];\n var element = this.createCollection([collection_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n contentEle.querySelector('#' + groupId + constants.CONTENT_ID).append(element);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes the ribbon collection.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @returns {void}\n */\n Ribbon.prototype.removeCollection = function (collectionId) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n var groupEle = contentEle.querySelector('#' + collectionId);\n if (groupEle) {\n groupEle.remove();\n }\n }\n var ribbonGroup = itemProp.group;\n var ribbonCollections = ribbonGroup.collections.slice();\n ribbonCollections.splice(itemProp.collectionIndex, 1);\n ribbonGroup.setProperties({ collections: ribbonCollections }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Adds ribbon item.\n *\n * @param {string} collectionId - Gets the collection ID.\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @param {string} targetId - Gets the ID of the target item to add the new item.\n * @param {boolean} isAfter - Defines whether the item is added before or after the target.\n * @returns {void}\n */\n Ribbon.prototype.addItem = function (collectionId, item, targetId, isAfter) {\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if ((itemProp.group.orientation === 'Column') && (itemProp.collection.items.length === 3)) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n var ribbonItems = itemProp.collection.items.slice();\n var index = targetId ? getIndex(ribbonItems, function (e) { return e.id === targetId; }) : -1;\n index = (index === -1) ? ribbonItems.length : (index + (isAfter ? 1 : 0));\n ribbonItems.splice(index, 0, item);\n itemProp.collection.setProperties({ items: ribbonItems }, true);\n this.checkID([itemProp.collection.items[parseInt(index.toString(), 10)]], 'item', collectionId);\n this.validateItemSize();\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (contentEle.innerHTML !== '') {\n var item_1 = itemProp.collection.items[parseInt(index.toString(), 10)];\n var element = this.createItems([item_1], itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer)[0];\n if (itemProp.group.isCollapsed) {\n contentEle = this.ribbonDropDownModule.getOverflowDropDownPopup(itemProp, contentEle);\n }\n //insert the element in tab items property.\n var targetEle = targetId ? contentEle.querySelector('#' + targetId) : null;\n if (targetEle) {\n targetEle.closest('.' + constants.RIBBON_ITEM).insertAdjacentElement(isAfter ? 'afterend' : 'beforebegin', element);\n }\n else {\n if (element) {\n contentEle.querySelector('#' + collectionId).append(element);\n }\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Removes ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.removeItem = function (itemId) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n var item = itemProp.item;\n this.removeItemElement(contentEle, item, dropdown);\n }\n var ribbonCollection = itemProp.collection;\n var ribbonItems = ribbonCollection.items;\n ribbonItems.splice(itemProp.itemIndex, 1);\n ribbonCollection.setProperties({ items: ribbonItems }, true);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n };\n /**\n * Hides a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be hidden.\n * @returns {void}\n */\n Ribbon.prototype.hideItem = function (itemId) {\n this.showHideItem(itemId, true);\n };\n /**\n * Shows a specific ribbon item.\n *\n * @param {string} itemId - The ID of the item to be shown.\n * @returns {void}\n */\n Ribbon.prototype.showItem = function (itemId) {\n this.showHideItem(itemId, false);\n };\n Ribbon.prototype.showHideItem = function (itemId, isHidden) {\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n }\n else {\n this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);\n }\n };\n Ribbon.prototype.updateInitialProps = function (tabIndex, id, key, isInsert) {\n var initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n if (!initialProps) {\n this.initialPropsData[parseInt(tabIndex.toString(), 10)] = {};\n initialProps = this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n if (initialProps) {\n if (!initialProps[\"\" + key]) {\n initialProps[\"\" + key] = [];\n }\n var itemIndex = initialProps[\"\" + key].indexOf(id);\n if (isInsert) {\n if (itemIndex === -1) {\n initialProps[\"\" + key].push(id);\n }\n }\n else {\n if (itemIndex !== -1) {\n initialProps[\"\" + key].splice(itemIndex, 1);\n }\n if (initialProps[\"\" + key].length === 0) {\n delete initialProps[\"\" + key];\n }\n if (Object.keys(initialProps).length === 0) {\n delete this.initialPropsData[parseInt(tabIndex.toString(), 10)];\n }\n }\n }\n };\n Ribbon.prototype.checkHiddenItems = function (group, isHidden, tabIndex) {\n var isItemsHidden = true;\n var isEmptyCollection;\n var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;\n var groupEle = contentEle.querySelector('#' + group.id);\n if (isHidden) {\n for (var i = 0; i < group.collections.length; i++) {\n if (isItemsHidden) {\n var collection = group.collections[parseInt(i.toString(), 10)];\n for (var j = 0; j < collection.items.length; j++) {\n var item = collection.items[parseInt(j.toString(), 10)];\n var itemEle = void 0;\n if (item.type === 'GroupButton') {\n var itemProp = getItem(this.tabs, item.id);\n itemEle = getItemElement(this, item.id + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else {\n itemEle = getItemElement(this, item.id);\n }\n var itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;\n if (!(itemContainer.classList.contains('e-hidden'))) {\n isItemsHidden = false;\n break;\n }\n }\n }\n }\n if (isItemsHidden) {\n groupEle.classList.add('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n }\n else {\n groupEle.classList.remove('e-hide-group');\n this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);\n }\n if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {\n var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);\n if (itemsLength) {\n isEmptyCollection = this.checkEmptyCollection(itemsLength);\n groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');\n }\n }\n };\n Ribbon.prototype.checkOverflowItems = function (isHidden, contentEle, isGroupOF, tabIndex, groupID) {\n var overflowDDB;\n var overflowtarget;\n if (isGroupOF) {\n var overflowDDBEle = contentEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID);\n if (overflowDDBEle) {\n overflowDDB = getInstance(overflowDDBEle, DropDownButton);\n overflowtarget = overflowDDB.target;\n }\n if (overflowtarget) {\n if (isHidden) {\n overflowtarget.classList.add('e-hide-group');\n }\n else {\n overflowtarget.classList.remove('e-hide-group');\n }\n }\n }\n else {\n if (this.overflowDDB) {\n var overflowEle = this.overflowDDB.target;\n var ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer) {\n var grpContainer = ofTabContainer.querySelector('#' + groupID + constants.CONTAINER_ID);\n if (grpContainer) {\n if (isHidden) {\n grpContainer.classList.add('e-hide-group');\n }\n else {\n grpContainer.classList.remove('e-hide-group');\n }\n }\n }\n }\n }\n };\n /**\n * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.\n *\n * @param {RibbonTabModel} tab - Gets the ribbon tab model.\n * @returns {void}\n */\n Ribbon.prototype.updateTab = function (tab) {\n var tabId = tab.id;\n var index = getIndex(this.tabs, function (e) { return e.id === tabId; });\n if (index === -1) {\n return;\n }\n var contentEle = this.tabObj.items[parseInt(index.toString(), 10)].content;\n var groups = this.tabs[parseInt(index.toString(), 10)].groups;\n var tabEle = this.tabObj.element;\n if (groups && (contentEle.innerHTML !== '')) {\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (tab.cssClass) {\n if (this.tabs[parseInt(index.toString(), 10)].cssClass) {\n contentEle.classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n tabEle.querySelector('.e-active').classList.remove(this.tabs[parseInt(index.toString(), 10)].cssClass);\n }\n }\n // Check whether group is passed by the user, and if it is, then remove the old values.\n if (tab.groups) {\n for (var _i = 0, groups_3 = groups; _i < groups_3.length; _i++) {\n var group = groups_3[_i];\n var dropdownElement = group.isCollapsed ? contentEle.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID) : null;\n for (var _a = 0, _b = group.collections; _a < _b.length; _a++) {\n var collection = _b[_a];\n for (var _c = 0, _d = collection.items; _c < _d.length; _c++) {\n var item = _d[_c];\n var ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id) : contentEle.querySelector('#' + item.id);\n if (item.type === RibbonItemType.GroupButton && this.activeLayout === 'Classic') {\n ele = dropdownElement ? this.ribbonDropDownModule.getDDBItemElement(dropdownElement, item.id +\n constants.RIBBON_GROUP_BUTTON_ID) : contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (ele) {\n this.destroyFunction(item, ele);\n }\n }\n }\n if (dropdownElement) {\n this.ribbonDropDownModule.removeOverFlowDropDown(dropdownElement);\n }\n }\n var groupElements = contentEle.querySelectorAll('.e-ribbon-group');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n groupElements.forEach(function (groupEle) { groupEle.remove(); });\n }\n }\n if (index === this.selectedTab) {\n this.isAddRemove = true;\n }\n var ribbonTab = this.tabs[parseInt(index.toString(), 10)];\n ribbonTab.setProperties(tab, true);\n this.setProperties({ groups: this.checkID(ribbonTab.groups, 'group', ribbonTab.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML === '') {\n // Check whether group is passed by the user and sets the updated values.\n if (tab.groups) {\n var elements = this.createGroups(ribbonTab.groups, index);\n append(elements, contentEle);\n }\n if (this.selectedTab === index) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (tab.cssClass) {\n contentEle.classList.add(ribbonTab.cssClass);\n tabEle.querySelector('.e-active').classList.add(ribbonTab.cssClass);\n }\n // Check whether header is passed by the user and sets the updated values.\n if (tab.header) {\n tabEle.querySelector('#' + tabId + constants.HEADER_ID).innerText = ribbonTab.header;\n }\n }\n };\n /**\n * group - Gets the ribbon group to be updated. The id of the group is a required property. Other properties are optional.\n *\n * @param {RibbonGroupModel} group - Gets the ribbon group model.\n * @returns {void}\n */\n Ribbon.prototype.updateGroup = function (group) {\n var groupId = group.id;\n var itemProp = getGroup(this.tabs, groupId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + groupId);\n var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);\n var dropdownElement;\n var dropdown;\n if (contentEle.innerHTML !== '') {\n if (itemProp.group.showLauncherIcon) {\n this.removeLauncherIcon(itemProp.group.id, null, contentEle);\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (group.cssClass) {\n if (itemProp.group.cssClass) {\n groupEle.classList.remove(itemProp.group.cssClass);\n if (groupContainer) {\n groupContainer.classList.remove(itemProp.group.cssClass);\n }\n }\n }\n // Check whether collections or orientation is passed by the user, and if it is, then remove the old values.\n if (group.collections || group.orientation) {\n if (itemProp.group.collections || itemProp.group.orientation) {\n for (var _i = 0, _a = itemProp.group.collections; _i < _a.length; _i++) {\n var collection = _a[_i];\n for (var _b = 0, _c = collection.items; _b < _c.length; _b++) {\n var item = _c[_b];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n var collectionElements = groupEle.querySelectorAll('.e-ribbon-collection');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n collectionElements.forEach(function (collectionEle) { collectionEle.remove(); });\n if (group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n var removeCss = groupContent.classList.value.match(/(e-ribbon-[column|row]+)/g);\n if (removeCss) {\n removeClass([groupContent], removeCss);\n }\n }\n }\n }\n if (this.activeLayout === RibbonLayout.Simplified) {\n if (itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount\n === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n else {\n var ofGroupContainer = dropdown.target.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n if (ofGroupContainer && ofGroupContainer.childElementCount === 1) {\n ofGroupContainer.remove();\n }\n var ofTabContainer = dropdown.target.querySelector('#' + this.tabs[parseInt(itemProp.tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);\n if (ofTabContainer && ofTabContainer.childElementCount === 0) {\n ofTabContainer.remove();\n }\n }\n }\n }\n var ribbongroup = itemProp.group;\n ribbongroup.setProperties(group, true);\n ribbongroup.setProperties({ collections: this.checkID(ribbongroup.collections, 'collection', ribbongroup.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // Check whether showLauncherIcon or orientation is passed by the user and sets the updated values.\n if (group.showLauncherIcon) {\n this.createLauncherIcon(ribbongroup.id, groupContainer, itemProp.tabIndex);\n }\n // Check whether collections or orientation is passed by the user and sets the updated values.\n if (group.collections || group.orientation) {\n var groupContent = groupContainer.querySelector('.e-ribbon-group-content');\n groupContent.classList.add(((ribbongroup.orientation === 'Column') || (this.activeLayout === 'Simplified')) ? constants.RIBBON_COLUMN : constants.RIBBON_ROW);\n var elements = this.createCollection(ribbongroup.collections, ribbongroup.orientation, ribbongroup.id, ribbongroup.header, ribbongroup.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, groupContent);\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (group.cssClass) {\n groupEle.classList.add(ribbongroup.cssClass);\n if (groupContainer) {\n groupContainer.classList.add(ribbongroup.cssClass);\n }\n }\n // Check whether header is passed by the user and sets the updated values.\n if (group.header) {\n if (this.activeLayout === RibbonLayout.Simplified && !group.enableGroupOverflow) {\n var overflowHeader = dropdown.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n else if (this.activeLayout === RibbonLayout.Classic && !ribbongroup.isCollapsed) {\n groupEle.querySelector('.e-ribbon-group-header').innerText = ribbongroup.header;\n }\n else if (this.activeLayout === RibbonLayout.Classic && ribbongroup.isCollapsed) {\n var overflowEle = groupEle.querySelector('#' + ribbongroup.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n // need to set instance for dropdown\n var dropDownBtn = getInstance(overflowEle, DropDownButton);\n var overflowHeader = dropDownBtn.target.querySelector('#' + group.id + constants.HEADER_ID);\n if (overflowHeader) {\n overflowHeader.innerText = ribbongroup.header;\n }\n }\n }\n }\n };\n /**\n * collection - Gets the ribbon collection to be updated. The id of the collection is a required property. Other properties are optional.\n *\n * @param {RibbonCollectionModel} collection - Gets the ribbon collection model.\n * @returns {void}\n */\n Ribbon.prototype.updateCollection = function (collection) {\n var collectionId = collection.id;\n var itemProp = getCollection(this.tabs, collectionId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var collectionEle = contentEle.querySelector('#' + collectionId);\n if (contentEle.innerHTML !== '') {\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (collection.cssClass) {\n if (itemProp.collection.cssClass) {\n collectionEle.classList.remove(itemProp.collection.cssClass);\n }\n }\n if (collection.items) {\n if (itemProp.collection.items) {\n for (var _i = 0, _a = itemProp.collection.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.removeItemElement(contentEle, item, dropdown);\n }\n }\n }\n }\n var ribboncollection = itemProp.collection;\n ribboncollection.setProperties(collection, true);\n ribboncollection.setProperties({ items: this.checkID(ribboncollection.items, 'item', ribboncollection.id) }, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n if (collection.items) {\n var groupContainer = contentEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var elements = this.createItems(ribboncollection.items, itemProp.group.orientation, itemProp.group.id, itemProp.group.header, itemProp.group.enableGroupOverflow, itemProp.tabIndex, groupContainer);\n append(elements, collectionEle);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n // Check whether cssClass is passed by the user and sets the updated values.\n if (collection.cssClass) {\n collectionEle.classList.add(ribboncollection.cssClass);\n }\n };\n /**\n * item - Gets the ribbon item to be updated. The id of the item is a required property. Other properties are optional.\n *\n * @param {RibbonItemModel} item - Gets the ribbon item model.\n * @returns {void}\n */\n Ribbon.prototype.updateItem = function (item) {\n var itemId = item.id;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.clearOverflowResize();\n }\n //Check whether the tab items are rendered\n var contentEle = this.tabObj.items[itemProp.tabIndex].content;\n var groupEle = contentEle.querySelector('#' + itemProp.group.id);\n if (groupEle) {\n var groupContainer = groupEle.querySelector('#' + itemProp.group.id + constants.CONTAINER_ID);\n var itemContainer = null;\n var itemEle = null;\n var dropdownElement = void 0;\n var dropdown = void 0;\n if (contentEle.innerHTML !== '') {\n if (this.activeLayout === RibbonLayout.Simplified) {\n dropdownElement = itemProp.group.enableGroupOverflow ?\n contentEle.querySelector('#' + itemProp.group.id + constants.GROUPOF_BUTTON_ID) : null;\n dropdown = dropdownElement ? getComponent(dropdownElement, DropDownButton) : this.overflowDDB;\n }\n if (this.activeLayout === RibbonLayout.Simplified && itemProp.item.displayOptions === DisplayMode.Overflow) {\n itemContainer = dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = dropdown.target.querySelector('#' + itemId);\n if (item.displayOptions && item.displayOptions !== DisplayMode.Overflow) {\n var collectionEle = groupContainer.querySelector('#' + itemProp.collection.id);\n if (collectionEle) {\n collectionEle.appendChild(itemContainer);\n }\n }\n }\n else {\n itemContainer = groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n itemEle = contentEle.querySelector('#' + itemId);\n if (!itemContainer) {\n itemContainer = dropdown ? dropdown.target.querySelector('#' + itemId + constants.CONTAINER_ID) : groupContainer.querySelector('#' + itemId + constants.CONTAINER_ID);\n }\n if (!itemEle) {\n itemEle = dropdown ? dropdown.target.querySelector('#' + itemId) : contentEle.querySelector('#' + itemId);\n }\n if (itemProp.item.type === 'Gallery') {\n if (!itemEle) {\n itemEle = contentEle.querySelector('#' + itemId + '_galleryWrapper');\n }\n }\n if (itemProp.item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Classic) {\n itemEle = contentEle.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID);\n }\n if (this.activeLayout === RibbonLayout.Simplified && item.displayOptions === DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n if ((itemProp.item.type === RibbonItemType.DropDown) || (itemProp.item.type === RibbonItemType.SplitButton) ||\n (item.type === RibbonItemType.GroupButton) || (item.type === RibbonItemType.Gallery)) {\n this.updatePopupItems(itemProp.item, itemContainer, itemProp.group.enableGroupOverflow, true);\n }\n }\n }\n // Check whether cssClass is passed by the user, and if it is, then remove the old values.\n if (item.cssClass) {\n if (itemProp.item.cssClass) {\n itemContainer.classList.remove(itemProp.item.cssClass);\n }\n }\n this.destroyFunction(itemProp.item, itemEle);\n itemEle.remove();\n var removeCss = itemContainer.classList.value.match(/(e-ribbon-[large|medium|small]+-item)/g);\n if (removeCss) {\n removeClass([itemContainer], removeCss);\n }\n }\n var ribbonItem = itemProp.item;\n ribbonItem.setProperties(item, true);\n this.validateItemSize();\n if (contentEle.innerHTML !== '') {\n // To avoid undefined items condition is added\n if (ribbonItem.ribbonTooltipSettings && isTooltipPresent(ribbonItem.ribbonTooltipSettings)) {\n itemContainer.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.tooltipData.push({ id: itemContainer.id, data: ribbonItem.ribbonTooltipSettings });\n }\n var size = ribbonItem.activeSize;\n if (this.activeLayout === 'Simplified') {\n size = ((ribbonItem.allowedSizes === RibbonItemSize.Large) || (ribbonItem.allowedSizes & RibbonItemSize.Medium) ||\n (ribbonItem.displayOptions === DisplayMode.Overflow)) ? RibbonItemSize.Medium : RibbonItemSize.Small;\n ribbonItem.setProperties({ activeSize: size }, true);\n }\n if (size & RibbonItemSize.Large) {\n itemContainer.classList.add(constants.RIBBON_LARGE_ITEM, constants.RIBBON_CONTENT_HEIGHT);\n }\n else {\n if (size & RibbonItemSize.Medium) {\n itemContainer.classList.add(constants.RIBBON_MEDIUM_ITEM);\n }\n else {\n itemContainer.classList.add(constants.RIBBON_SMALL_ITEM);\n }\n }\n this.createRibbonItem(ribbonItem, itemContainer);\n if (itemProp.item.type === 'Gallery' && document.querySelector('#' + itemId + '_container').closest('.e-ribbon-overflow-target') && item.displayOptions !== DisplayMode.Overflow) {\n this.createOverflowPopup(itemProp.item, itemProp.tabIndex, itemProp.group.enableGroupOverflow, itemProp.group.id, itemProp.group.header, itemContainer, groupContainer);\n }\n if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {\n if (dropdown.target.childElementCount === 0 ||\n (dropdown.target.childElementCount === 1 &&\n this.isHeaderVisible(dropdown.target, itemProp.group.id))) {\n this.removeOverflowButton(dropdown);\n }\n }\n if (this.selectedTab === itemProp.tabIndex) {\n this.refreshLayout();\n }\n if (item.cssClass) {\n itemContainer.classList.add(ribbonItem.cssClass);\n }\n if (!(ribbonItem.disabled) && itemContainer.classList.contains(constants.DISABLED_CSS)) {\n itemContainer.classList.remove(constants.DISABLED_CSS);\n }\n this.enableDisableItem(ribbonItem.id, ribbonItem.disabled);\n }\n }\n else {\n this.isUpdateItems = true;\n this.itemsModel.push(item);\n this.targetTabs[item.id] = itemProp.tabIndex;\n }\n };\n Ribbon.prototype.removeItemElement = function (contentEle, item, dropdown) {\n var ele = null;\n if (this.activeLayout === RibbonLayout.Classic) {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id) : null;\n if (item.type === 'GroupButton') {\n ele = (item.displayOptions & DisplayMode.Classic) ? contentEle.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID) : null;\n }\n }\n else {\n //Checks for Simplified and Auto options (Auto = classic + simplified + popup)\n ele = (item.displayOptions & DisplayMode.Simplified) ? contentEle.querySelector('#' + item.id) : null;\n // element will be null for \"Popup\" and if the item is moved to overflow in \"Auto\" mode\n if (!ele) {\n ele = dropdown.target.querySelector('#' + item.id);\n }\n }\n if (ele) {\n this.destroyFunction(item, ele);\n if (item.type === 'GroupButton' && this.activeLayout === RibbonLayout.Simplified) {\n document.getElementById(item.id + constants.CONTAINER_ID).remove();\n }\n else {\n ele.closest('#' + item.id + constants.CONTAINER_ID).remove();\n }\n }\n };\n /**\n * Enables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.enableItem = function (itemId) {\n this.enableDisableItem(itemId, false);\n };\n /**\n * Disables ribbon item.\n *\n * @param {string} itemId - Gets the item ID.\n * @returns {void}\n */\n Ribbon.prototype.disableItem = function (itemId) {\n this.enableDisableItem(itemId, true);\n };\n /**\n * Gets the Ribbon item model associated with the specified item ID.\n *\n * @param {string} itemId - The unique ID of the Ribbon item.\n * @returns {RibbonItemModel} - Returns the Ribbon item model.\n */\n Ribbon.prototype.getItem = function (itemId) {\n return getItem(this.tabs, itemId).item;\n };\n Ribbon.prototype.enableDisableItem = function (itemId, isDisabled) {\n var isUpdated = false;\n var isOverflow = false;\n var itemProp = getItem(this.tabs, itemId);\n if (!itemProp) {\n return;\n }\n itemProp.item.setProperties({ disabled: isDisabled }, true);\n var ele;\n if (itemProp.item.type === 'GroupButton') {\n ele = getItemElement(this, itemId + constants.RIBBON_GROUP_BUTTON_ID, itemProp);\n }\n else if (itemProp.item.type === 'Gallery') {\n ele = document.querySelector('#' + itemId);\n if (!ele) {\n ele = document.querySelector('#' + itemId + '_galleryWrapper');\n }\n else {\n isOverflow = true;\n }\n }\n else {\n ele = getItemElement(this, itemId, itemProp);\n }\n if (ele) {\n var itemEle = closest(ele, '.e-ribbon-item');\n var moduleName = this.getItemModuleName(itemProp.item);\n isUpdated = isDisabled ? !itemEle.classList.contains(constants.DISABLED_CSS) :\n itemEle.classList.contains(constants.DISABLED_CSS);\n if (moduleName !== 'template') {\n if (isUpdated) {\n if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {\n updateControlDisabled(ele, 'dropdown-btn', isDisabled);\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = document.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n var btnEle = ele.querySelector('#' + itemId + constants.RIBBON_GROUP_BUTTON_ID + i);\n updateControlDisabled(btnEle, 'btn', isDisabled);\n }\n }\n else if (moduleName === 'gallery') {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n document.getElementById(itemId + '_popupButton').classList.toggle(constants.DISABLED_CSS, isDisabled);\n if (isOverflow) {\n var galleryEle = document.getElementById(itemId + '_galleryWrapper');\n galleryEle.classList.toggle(constants.DISABLED_CSS, isDisabled);\n }\n }\n else {\n updateControlDisabled(ele, moduleName, isDisabled);\n }\n }\n }\n else {\n ele.classList.toggle(constants.DISABLED_CSS, isDisabled);\n ele.toggleAttribute('disabled', isDisabled);\n }\n itemEle.classList.toggle(constants.DISABLED_CSS, itemProp.item.disabled);\n }\n };\n Ribbon.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'keydown', this.keytipActionHandler);\n EventHandler.remove(document, 'mousedown', this.mouseEventHandler);\n EventHandler.remove(document, 'scroll', this.mouseEventHandler);\n };\n Ribbon.prototype.destroy = function () {\n this.keyboardModuleRibbon.destroy();\n this.keyboardModuleRibbon = null;\n destroyTooltip(this.element);\n if (this.refreshing) {\n this.clearOverflowDropDown(this.selectedTab);\n }\n this.destroyTabItems(this.tabs);\n if (!this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n this.collapseButton = undefined;\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n }\n _super.prototype.destroy.call(this);\n this.tabObj.destroy();\n this.tabObj = undefined;\n this.initialPropsData = {};\n this.hiddenGroups = [];\n this.hiddenElements = {};\n this.keyTipElements = {};\n this.itemsModel = [];\n this.targetTabs = {};\n remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));\n this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);\n this.element.style.removeProperty('width');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(constants.SPACE));\n }\n this.element.classList.remove(constants.RTL_CSS, constants.RIBBON_SIMPLIFIED_MODE, constants.RIBBON_OVERFLOW, constants.RIBBON_COLLAPSIBLE, constants.RIBBON_MINIMIZE, 'e-rbn');\n this.unwireEvents();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RibbonModel} newProp - Specifies new properties\n * @param {RibbonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Ribbon.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _a, _b;\n for (var _i = 0, _c = Object.keys(newProp); _i < _c.length; _i++) {\n var prop = _c[_i];\n switch (prop) {\n case 'activeLayout':\n this.switchLayout();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n (_a = this.element.classList).remove.apply(_a, oldProp.cssClass.split(constants.SPACE));\n }\n if (newProp.cssClass) {\n (_b = this.element.classList).add.apply(_b, newProp.cssClass.split(constants.SPACE));\n }\n break;\n case 'isMinimized':\n this.element.classList.toggle(constants.RIBBON_MINIMIZE, this.isMinimized);\n this.tabObj.element.querySelector('.e-content').style.display = this.isMinimized ? 'none' : 'block';\n if (!this.isMinimized) {\n this.refreshLayout();\n }\n break;\n case 'locale':\n this.updateCommonProperty({ locale: this.locale });\n break;\n case 'enablePersistence':\n this.updateCommonProperty({ enablePersistence: this.enablePersistence });\n break;\n case 'enableRtl':\n this.element.classList.toggle(constants.RTL_CSS, this.enableRtl);\n this.updateCommonProperty({ enableRtl: newProp.enableRtl });\n if (this.scrollModule) {\n this.scrollModule.setProperties({ enableRtl: newProp.enableRtl });\n }\n break;\n case 'launcherIconCss':\n for (var i = 0; i < this.tabs.length; i++) {\n var tabContent = this.tabObj.items[parseInt(i.toString(), 10)].content;\n var tab = this.tabs[parseInt(i.toString(), 10)];\n if (tabContent.querySelector('.' + constants.RIBBON_GROUP)) {\n for (var _d = 0, _e = tab.groups; _d < _e.length; _d++) {\n var group = _e[_d];\n if (group.showLauncherIcon) {\n var className = constants.RIBBON_LAUNCHER_ICON_ELE + ' ' + (this.launcherIconCss || constants.RIBBON_LAUNCHER_ICON);\n if (group.isCollapsed) {\n var element = tabContent.querySelector('#' + group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID);\n var dropdown = getComponent(element, DropDownButton);\n var launcherIconEle = dropdown.target.querySelector('#' + group.id + constants.LAUNCHER_ID);\n launcherIconEle.className = className;\n }\n else {\n var element = tabContent.querySelector('#' + group.id + constants.LAUNCHER_ID);\n element.className = className;\n }\n }\n }\n }\n }\n break;\n case 'selectedTab': {\n var tabEle = this.tabObj.element;\n var toolbarItem = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(newProp.selectedTab.toString(), 10)];\n if (!(toolbarItem.classList.contains('e-hidden') || toolbarItem.classList.contains('e-disable'))) {\n this.tabObj.setProperties({ selectedItem: newProp.selectedTab });\n }\n break;\n }\n case 'tabAnimation':\n this.tabObj.setProperties({ animation: newProp.tabAnimation });\n break;\n case 'tabs':\n this.reRenderTabs(newProp.tabs);\n break;\n case 'contextualTabs':\n for (var i = 0; i < this.contextualTabs.length; i++) {\n if (newProp.contextualTabs[parseInt(i.toString(), 10)]) {\n this.ribbonContextualTabModule.updateContextualTabs(newProp.contextualTabs[parseInt(i.toString(), 10)], this.contextualTabs[parseInt(i.toString(), 10)]);\n }\n }\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.refreshLayout();\n break;\n case 'fileMenu': {\n if (this.ribbonFileMenuModule) {\n this.ribbonFileMenuModule.updateFileMenu(this.fileMenu);\n }\n var toolbarEle = this.tabObj['tbObj'];\n toolbarEle.refreshOverflow();\n break;\n }\n case 'backStageMenu': {\n if (this.ribbonBackstageModule) {\n this.ribbonBackstageModule.updateBackStageMenu(this.backStageMenu);\n }\n var toolbarElement = this.tabObj['tbObj'];\n toolbarElement.refreshOverflow();\n break;\n }\n case 'helpPaneTemplate': {\n if (this.ribbonTempEle) {\n remove(this.ribbonTempEle);\n this.ribbonTempEle = null;\n this.tabObj.element.style.setProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH, '0px');\n }\n if (this.helpPaneTemplate) {\n this.createHelpPaneTemplate();\n }\n var toolbar_1 = this.tabObj['tbObj'];\n toolbar_1.refreshOverflow();\n break;\n }\n case 'hideLayoutSwitcher':\n if (this.hideLayoutSwitcher) {\n this.removeExpandCollapse();\n }\n else {\n this.addExpandCollapse();\n }\n break;\n }\n }\n };\n var Ribbon_1;\n __decorate([\n Property('Classic')\n ], Ribbon.prototype, \"activeLayout\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"enableKeyTips\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"layoutSwitcherKeyTip\", void 0);\n __decorate([\n Complex({}, FileMenuSettings)\n ], Ribbon.prototype, \"fileMenu\", void 0);\n __decorate([\n Complex({}, BackStageMenu)\n ], Ribbon.prototype, \"backStageMenu\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"launcherIconCss\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"isMinimized\", void 0);\n __decorate([\n Property('en-us')\n ], Ribbon.prototype, \"locale\", void 0);\n __decorate([\n Property(0)\n ], Ribbon.prototype, \"selectedTab\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Ribbon.prototype, \"tabAnimation\", void 0);\n __decorate([\n Collection([], RibbonTab)\n ], Ribbon.prototype, \"tabs\", void 0);\n __decorate([\n Collection([], RibbonContextualTabSettings)\n ], Ribbon.prototype, \"contextualTabs\", void 0);\n __decorate([\n Property('100%')\n ], Ribbon.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Ribbon.prototype, \"helpPaneTemplate\", void 0);\n __decorate([\n Property(false)\n ], Ribbon.prototype, \"hideLayoutSwitcher\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelecting\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"tabSelected\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonExpanding\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonCollapsing\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"ribbonLayoutSwitched\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"launcherIconClick\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupOpen\", void 0);\n __decorate([\n Event()\n ], Ribbon.prototype, \"overflowPopupClose\", void 0);\n Ribbon = Ribbon_1 = __decorate([\n NotifyPropertyChanges\n ], Ribbon);\n return Ribbon;\n}(Component));\nexport { Ribbon };\n","import { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex, isTooltipPresent } from '../base/index';\nimport * as constants from '../base/constant';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonFileMenu = /** @class */ (function () {\n function RibbonFileMenu(parent) {\n this.parent = parent;\n }\n RibbonFileMenu.prototype.getModuleName = function () {\n return 'ribbonFileMenu';\n };\n RibbonFileMenu.prototype.destroy = function () {\n if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates File Menu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.createFileMenu = function (fileMenuOptions) {\n var _this = this;\n if (!fileMenuOptions.visible) {\n return;\n }\n this.ddbElement = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.ddbElement, toolbarEle);\n this.fileMenuDDB = new DropDownButton({\n content: fileMenuOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-file-menu e-caret-hide',\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.ddbElement.offsetWidth + 'px');\n },\n beforeClose: this.ddbBeforeEvent.bind(this, false),\n beforeOpen: this.ddbBeforeEvent.bind(this, true),\n close: this.ddbAfterEvent.bind(this, false),\n open: this.ddbAfterEvent.bind(this, true)\n }, this.ddbElement);\n if (this.parent.fileMenu.popupTemplate) {\n this.fileMenuDDB.setProperties({ target: this.parent.fileMenu.popupTemplate });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n this.parent.tabObj.refreshActiveTabBorder();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n };\n RibbonFileMenu.prototype.addFileMenuTooltip = function (fileMenuOptions) {\n if (isTooltipPresent(fileMenuOptions.ribbonTooltipSettings)) {\n this.ddbElement.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.ddbElement.id, data: fileMenuOptions.ribbonTooltipSettings });\n }\n };\n RibbonFileMenu.prototype.addFileMenuKeytip = function () {\n if (this.parent.fileMenu.keyTip) {\n this.parent.keyTipElements['filemenu'] = [];\n this.parent.keyTipElements['filemenu'].push({ id: this.ddbElement.id, type: 'filemenu', keyTip: this.parent.fileMenu.keyTip });\n }\n };\n RibbonFileMenu.prototype.ddbBeforeEvent = function (isOpen, args) {\n //args.event is null when dropdown button is closed using a method call\n if (!isOpen && args.event && args.event.target.closest('.e-ribbon-menu')) {\n args.cancel = true;\n }\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = { cancel: args.cancel, element: args.element, event: args.event };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.ddbAfterEvent = function (isOpen, args) {\n var element = isOpen ? this.fileMenuDDB.target : this.fileMenuDDB.element;\n element.focus();\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element };\n event.call(this, eventArgs);\n }\n };\n //Clone RibbonMenuItems before assigning to avoid reference issues.\n RibbonFileMenu.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n itemsList.push({\n iconCss: item.iconCss,\n id: item.id,\n separator: item.separator,\n text: item.text,\n url: item.url,\n items: this.cloneMenuItem(item.items)\n });\n }\n return itemsList;\n };\n RibbonFileMenu.prototype.createRibbonMenu = function (menuOptions) {\n var _this = this;\n var ulElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FILE_MENU_LIST\n });\n this.fileMenuDDB.setProperties({ target: ulElem });\n this.menuctrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: 'e-ribbon-menu',\n animationSettings: menuOptions.animationSettings,\n items: this.cloneMenuItem(menuOptions.menuItems),\n showItemOnClick: menuOptions.showItemOnClick,\n template: menuOptions.itemTemplate,\n beforeClose: this.menuBeforeEvent.bind(this, false),\n beforeOpen: this.menuBeforeEvent.bind(this, true),\n beforeItemRender: this.beforeItemRender.bind(this),\n onClose: this.menuAfterEvent.bind(this, false),\n onOpen: this.menuAfterEvent.bind(this, true),\n select: this.menuSelect.bind(this)\n }, ulElem);\n EventHandler.add(ulElem, 'keydown', function (e) {\n if (e.key === 'Tab') {\n _this.fileMenuDDB.toggle();\n }\n }, this);\n };\n RibbonFileMenu.prototype.menuBeforeEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.beforeOpen :\n this.parent.fileMenu.beforeClose;\n if (event) {\n var eventArgs = {\n cancel: args.cancel, element: args.element, event: args.event,\n items: args.items, parentItem: args.parentItem\n };\n event.call(this, eventArgs);\n args.cancel = eventArgs.cancel;\n }\n };\n RibbonFileMenu.prototype.menuAfterEvent = function (isOpen, args) {\n var event = isOpen ? this.parent.fileMenu.open : this.parent.fileMenu.close;\n if (event) {\n var eventArgs = { element: args.element, items: args.items, parentItem: args.parentItem };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.beforeItemRender = function (args) {\n var event = this.parent.fileMenu.beforeItemRender;\n if (event) {\n var eventArgs = { element: args.element, item: args.item };\n event.call(this, eventArgs);\n }\n };\n RibbonFileMenu.prototype.menuSelect = function (args) {\n var event = this.parent.fileMenu.select;\n if (event) {\n var eventArgs = { element: args.element, item: args.item, event: args.event };\n event.call(this, eventArgs);\n if (!args.element.classList.contains('e-menu-caret-icon')) {\n this.fileMenuDDB.toggle();\n }\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.setCommonProperties = function (commonProp) {\n if (this.fileMenuDDB) {\n this.fileMenuDDB.setProperties(commonProp);\n if (this.menuctrl) {\n this.menuctrl.setProperties(commonProp);\n }\n }\n };\n /**\n * Update FileMenu\n *\n * @param {FileMenuSettingsModel} fileMenuOptions - Gets the property of filemenu.\n * @returns {void}\n * @hidden\n */\n RibbonFileMenu.prototype.updateFileMenu = function (fileMenuOptions) {\n if (fileMenuOptions.visible) {\n if (this.fileMenuDDB) {\n if (fileMenuOptions.text) {\n this.fileMenuDDB.setProperties({\n content: fileMenuOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.ddbElement.offsetWidth + 'px');\n }\n if (fileMenuOptions.popupTemplate) {\n if (this.menuctrl) {\n this.destroyMenu();\n }\n this.fileMenuDDB.setProperties({ target: fileMenuOptions.popupTemplate });\n }\n else {\n if (this.menuctrl) {\n this.menuctrl.setProperties({\n animationSettings: fileMenuOptions.animationSettings,\n items: this.cloneMenuItem(fileMenuOptions.menuItems),\n showItemOnClick: fileMenuOptions.showItemOnClick,\n template: fileMenuOptions.itemTemplate\n });\n }\n else {\n this.createRibbonMenu(fileMenuOptions);\n }\n }\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n this.addFileMenuTooltip(fileMenuOptions);\n this.addFileMenuKeytip();\n }\n else {\n this.createFileMenu(fileMenuOptions);\n }\n }\n else if (this.fileMenuDDB) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonFileMenu.prototype.destroyMenu = function () {\n if (this.menuctrl) {\n this.menuctrl.destroy();\n this.menuctrl = null;\n }\n };\n RibbonFileMenu.prototype.destroyDDB = function () {\n this.removeFileMenuTooltip();\n this.removeFileMenuKeytip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.fileMenuDDB.destroy();\n this.fileMenuDDB = null;\n remove(this.ddbElement);\n this.ddbElement = null;\n };\n RibbonFileMenu.prototype.removeFileMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.ddbElement.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonFileMenu.prototype.removeFileMenuKeytip = function () {\n var _this = this;\n if (this.parent.keyTipElements['filemenu']) {\n var index = getIndex(this.parent.keyTipElements['filemenu'], function (e) { return e.id === _this.ddbElement.id; });\n if (index !== -1) {\n this.parent.keyTipElements['filemenu'].splice(index, 1);\n }\n }\n };\n /**\n * Add items to FileMenu.\n *\n * @param {MenuItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.addItems = function (items, target, isAfter, isUniqueId) {\n if (isAfter) {\n this.menuctrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuctrl.insertBefore(items, target, isUniqueId);\n }\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Remove items from FileMenu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.removeItems = function (items, isUniqueId) {\n this.menuctrl.removeItems(items, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Enable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be enabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.enableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, true, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Disable items in FileMenu.\n *\n * @param {string[]} items - Gets the items to be disabled.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.disableItems = function (items, isUniqueId) {\n this.menuctrl.enableItems(items, false, isUniqueId);\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n /**\n * Update items in FileMenu.\n *\n * @param {MenuItem} item - Gets the item to be updated.\n * @param {boolean} id - Gets the id of the item to be updated.\n * @param {boolean} isUniqueId - Gets whether the id provided is uniqueId or not.\n * @returns {void}\n */\n RibbonFileMenu.prototype.setItem = function (item, id, isUniqueId) {\n this.menuctrl.setItem(item, id, isUniqueId);\n this.menuctrl.refresh();\n this.parent.fileMenu.setProperties({ menuItems: this.menuctrl.items }, true);\n };\n return RibbonFileMenu;\n}());\nexport { RibbonFileMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { getIndex } from '../base/index';\nimport { getTemplateFunction, isTooltipPresent } from '../base/utils';\nimport * as constants from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\n/**\n * Defines the items of Ribbon.\n */\nvar RibbonBackstage = /** @class */ (function (_super) {\n __extends(RibbonBackstage, _super);\n function RibbonBackstage(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.render = function () {\n // render code\n };\n /**\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.preRender = function () {\n // pre render code\n };\n RibbonBackstage.prototype.getPersistData = function () {\n return '';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n RibbonBackstage.prototype.onPropertyChanged = function () {\n // onProperty changes code\n };\n RibbonBackstage.prototype.getModuleName = function () {\n return 'ribbonBackstage';\n };\n RibbonBackstage.prototype.destroy = function () {\n if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent = null;\n };\n /**\n * Creates Backstage Menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.createBackStage = function (backStageOptions) {\n var _this = this;\n if (!backStageOptions.visible) {\n return;\n }\n this.backstageButtonEle = this.parent.createElement('button', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID\n });\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelector('.e-toolbar');\n tabEle.insertBefore(this.backstageButtonEle, toolbarEle);\n this.backstageButton = new Button({\n content: backStageOptions.text,\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE,\n created: function () {\n tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');\n }\n }, this.backstageButtonEle);\n this.createBackStagePopup(backStageOptions);\n if (this.parent.backStageMenu.template) {\n this.createBackStageTemplate(this.parent.backStageMenu.template);\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n if (this.menuCtrl) {\n this.checkMenuItems(this.menuCtrl.items);\n }\n if (this.footerMenuCtrl) {\n this.checkMenuItems(this.footerMenuCtrl.items);\n }\n }\n this.backstageButtonEle.onclick = function (e) {\n e.stopPropagation();\n _this.showBackstage();\n _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);\n var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');\n if (menuItem) {\n menuItem.classList.remove('e-selected');\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {\n var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);\n if (firstMenuEle) {\n firstMenuEle.classList.add('e-selected');\n firstMenuEle.focus();\n _this.menuIndex = 0;\n _this.isCloseBtn = false;\n }\n _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);\n break;\n }\n else {\n continue;\n }\n }\n };\n this.parent.tabObj.refreshActiveTabBorder();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n EventHandler.add(document, 'click', this.onClickEvent, this);\n };\n RibbonBackstage.prototype.onClickEvent = function (e) {\n var targetEle = e.target;\n if (this.popupHTMLElement.contains(targetEle)) {\n return;\n }\n else {\n this.hideBackstage();\n }\n };\n RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {\n if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {\n this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });\n }\n };\n RibbonBackstage.prototype.addBackStageMenuKeyTip = function (backStageOptions) {\n if (backStageOptions.keyTip) {\n if (!(this.parent.keyTipElements['backstage'])) {\n this.parent.keyTipElements['backstage'] = [];\n }\n this.parent.keyTipElements['backstage'].push({ id: this.backstageButtonEle.id, type: 'backstage', keyTip: backStageOptions.keyTip });\n }\n if (backStageOptions.items && backStageOptions.items.length) {\n if (!(this.parent.keyTipElements['backstageMenu'])) {\n this.parent.keyTipElements['backstageMenu'] = [];\n }\n for (var i = 0; i < backStageOptions.items.length; i++) {\n if (backStageOptions.items[parseInt(i.toString(), 10)].keyTip) {\n this.parent.keyTipElements['backstageMenu'].push({ id: backStageOptions.items[parseInt(i.toString(), 10)].id, type: 'backstageMenu', keyTip: backStageOptions.items[parseInt(i.toString(), 10)].keyTip });\n }\n }\n }\n };\n RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {\n for (var i = 0; i < backStageItems.length; i++) {\n var item = backStageItems[parseInt(i.toString(), 10)];\n if (!item.iconCss) {\n var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);\n menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);\n }\n }\n };\n RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {\n var _this = this;\n this.popupHTMLElement = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,\n className: constants.RIBBON_BACKSTAGE_POPUP\n });\n var targetEle;\n if (backStageOptions.target) {\n targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target :\n document.querySelector(backStageOptions.target);\n targetEle.appendChild(this.popupHTMLElement);\n }\n else {\n this.parent.element.appendChild(this.popupHTMLElement);\n }\n this.popupEle = new Popup(this.popupHTMLElement, {\n height: backStageOptions.height,\n width: backStageOptions.width,\n relateTo: backStageOptions.target || this.parent.element,\n enableRtl: this.parent.enableRtl\n });\n if (this.parent.enableRtl) {\n this.updatePopupPositionOnRtl(this.parent.enableRtl);\n }\n this.hideBackstage();\n EventHandler.add(this.popupHTMLElement, 'keyup', function (e) {\n if (e.code === 'Escape') {\n _this.hideBackstage();\n }\n _this.handleNavigation(e);\n }, this);\n };\n RibbonBackstage.prototype.handleNavigation = function (e) {\n var closeBtnEle = this.popupHTMLElement.querySelector('.e-ribbon-close-btn');\n var menuItems = this.popupHTMLElement.querySelectorAll('.e-menu-item');\n var arrowUp = e.key === 'ArrowUp';\n var arrowDown = e.key === 'ArrowDown';\n if (arrowUp || arrowDown) {\n if ((arrowUp && this.menuIndex > 0) || (arrowDown && this.menuIndex < menuItems.length - 1 && !this.isCloseBtn)) {\n this.menuIndex = arrowUp ? this.menuIndex - 1 : this.menuIndex + 1;\n }\n else {\n if (closeBtnEle && !this.isCloseBtn) {\n closeBtnEle.focus();\n this.isCloseBtn = true;\n }\n else {\n this.menuIndex = arrowUp ? menuItems.length - 1 : 0;\n this.isCloseBtn = false;\n }\n }\n for (var i = 0; i < menuItems.length; i++) {\n menuItems[parseInt(i.toString(), 10)].classList.remove('e-focused');\n }\n if (!this.isCloseBtn) {\n if (arrowUp && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex--;\n }\n else if (arrowDown && menuItems[this.menuIndex].classList.contains('e-separator')) {\n this.menuIndex++;\n }\n menuItems[this.menuIndex].classList.add('e-focused');\n menuItems[this.menuIndex].focus();\n }\n }\n };\n RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {\n var popupStyle = this.popupHTMLElement.style;\n if (enableRtl) {\n popupStyle.right = popupStyle.left;\n popupStyle.left = 'unset';\n }\n else {\n popupStyle.left = popupStyle.right;\n popupStyle.right = 'unset';\n }\n };\n RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {\n var _this = this;\n var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');\n if (!wrapperEle) {\n this.menuWrapper = this.parent.createElement('div', {\n id: this.parent.element.id + '_wrapper',\n className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER\n });\n this.popupHTMLElement.appendChild(this.menuWrapper);\n }\n if (menuOptions.backButton.visible && !isFooter) {\n var closeBtnEle = this.parent.createElement('button', {\n id: this.parent.element.id + '_close',\n className: 'e-ribbon-close-btn'\n });\n this.closeBtn = new Button({\n content: menuOptions.backButton.text,\n iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,\n enableRtl: this.parent.enableRtl\n }, closeBtnEle);\n this.menuWrapper.append(closeBtnEle);\n closeBtnEle.onclick = function () {\n _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n _this.hideBackstage();\n _this.isBackButtonClicked = true;\n };\n }\n var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');\n if (!itemsWrapperEle) {\n this.itemsWrapperEle = this.parent.createElement('div', {\n id: this.parent.element.id + '_itemswrapper',\n className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER\n });\n this.menuWrapper.append(this.itemsWrapperEle);\n }\n var ulFooterElem;\n if (isFooter) {\n ulFooterElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(ulFooterElem);\n }\n else {\n this.ulMenuElem = this.parent.createElement('ul', {\n id: this.parent.element.id + constants.RIBBON_MENU_LIST\n });\n this.itemsWrapperEle.appendChild(this.ulMenuElem);\n }\n if (!isFooter) {\n this.menuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, this.ulMenuElem);\n }\n else {\n this.footerMenuCtrl = new Menu({\n orientation: 'Vertical',\n enableRtl: this.parent.enableRtl,\n cssClass: constants.RIBBON_BACKSTAGE_MENU,\n items: this.cloneFooterMenuItem(menuOptions.items),\n select: this.menuSelect.bind(this, menuOptions)\n }, ulFooterElem);\n }\n };\n RibbonBackstage.prototype.cloneMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {\n var itemsList = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (!item.isFooter) {\n continue;\n }\n else {\n itemsList.push({\n id: item.id,\n iconCss: item.iconCss,\n separator: item.separator,\n text: item.text\n });\n }\n }\n return itemsList;\n };\n RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {\n var templateName = 'backstageContent';\n this.clearTemplate([templateName]);\n if (!this.backstageContentEle) {\n this.backstageContentEle = this.parent.createElement('div', {\n id: itemId + constants.CONTENT_ID,\n className: constants.RIBBON_BACKSTAGE_CONTENT\n });\n }\n else {\n this.backstageContentEle.innerHTML = '';\n this.backstageContentEle.id = itemId + constants.CONTENT_ID;\n }\n var templateFunction = getTemplateFunction(content);\n append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);\n if (content) {\n this.popupHTMLElement.append(this.backstageContentEle);\n }\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.createBackStageTemplate = function (template) {\n var templateName = 'backstageTemplate';\n this.clearTemplate([templateName]);\n this.backstageTempEle = this.parent.createElement('div', {\n id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',\n className: constants.RIBBON_BACKSTAGE_TEMPLATE\n });\n var templateFunction = getTemplateFunction(template);\n append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);\n this.popupHTMLElement.append(this.backstageTempEle);\n this.renderReactTemplates();\n return templateFunction;\n };\n RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {\n for (var i = 0; i < menuOptions.items.length; i++) {\n var item = menuOptions.items[parseInt(i.toString(), 10)];\n if (item.text === args.item.text) {\n this.contentItem = item;\n this.menuIndex = i;\n break;\n }\n }\n this.createBackStageContent(args.item.id, this.contentItem.content);\n var eventArgs = { cancel: false, target: args.element,\n item: this.contentItem, isBackButton: this.isBackButtonClicked };\n if (this.contentItem.backStageItemClick) {\n this.contentItem.backStageItemClick.call(this, eventArgs);\n }\n if (eventArgs.cancel) {\n return;\n }\n };\n /**\n * setRtl\n *\n * @param {commonProperties} commonProp - Get the common property of ribbon.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.setCommonProperties = function (commonProp) {\n if (this.backstageButton) {\n this.backstageButton.setProperties(commonProp);\n if (this.popupEle) {\n this.popupEle.setProperties(commonProp);\n if (this.popupHTMLElement) {\n this.updatePopupPositionOnRtl(commonProp.enableRtl);\n }\n if (this.menuCtrl) {\n this.menuCtrl.setProperties(commonProp);\n if (this.closeBtn) {\n this.closeBtn.setProperties(commonProp);\n }\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties(commonProp);\n }\n }\n }\n };\n /**\n * Update Backstage menu\n *\n * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.\n * @returns {void}\n * @hidden\n */\n RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {\n if (backStageOptions.visible) {\n if (this.backstageButton) {\n if (backStageOptions.text) {\n this.backstageButton.setProperties({\n content: backStageOptions.text\n });\n this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');\n }\n if (this.popupEle) {\n this.popupEle.setProperties({\n height: backStageOptions.height,\n width: backStageOptions.width,\n target: backStageOptions.target || this.parent.element\n });\n }\n if (backStageOptions.template) {\n if (this.backstageTempEle) {\n remove(this.backstageTempEle);\n this.backstageTempEle = null;\n }\n this.createBackStageTemplate(backStageOptions.template);\n }\n else {\n if (this.menuCtrl) {\n this.menuCtrl.setProperties({\n items: this.cloneMenuItem(backStageOptions.items)\n });\n }\n if (this.footerMenuCtrl) {\n this.footerMenuCtrl.setProperties({\n items: this.cloneFooterMenuItem(backStageOptions.items)\n });\n }\n else {\n var footerItemCount = 0;\n var itemCount = 0;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n footerItemCount++;\n }\n else {\n itemCount++;\n }\n }\n if (itemCount > 0) {\n this.createBackstageMenu(backStageOptions, false);\n }\n if (footerItemCount > 0) {\n this.createBackstageMenu(backStageOptions, true);\n }\n }\n }\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n this.addBackStageMenuTooltip(backStageOptions);\n this.addBackStageMenuKeyTip(backStageOptions);\n }\n else {\n this.createBackStage(backStageOptions);\n }\n }\n else if (this.backstageButton) {\n this.destroyDDB();\n }\n this.parent.tabObj.refreshActiveTabBorder();\n };\n RibbonBackstage.prototype.destroyMenu = function () {\n if (this.menuCtrl) {\n this.menuCtrl.destroy();\n this.menuCtrl = null;\n }\n };\n RibbonBackstage.prototype.destroyDDB = function () {\n this.removeBackstageMenuTooltip();\n this.removeBackstageMenuKeyTip();\n var tabEle = this.parent.tabObj.element;\n tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);\n this.destroyMenu();\n this.backstageButton.destroy();\n this.backstageButton = null;\n remove(this.backstageButtonEle);\n this.backstageButtonEle = null;\n EventHandler.remove(document, 'click', this.onClickEvent);\n };\n RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {\n var _this = this;\n var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);\n this.parent.tooltipData.splice(index, 1);\n }\n };\n RibbonBackstage.prototype.removeBackstageMenuKeyTip = function () {\n var _this = this;\n if (this.parent.keyTipElements['backstage'] && this.parent.keyTipElements['backstage'].length) {\n var index = getIndex(this.parent.keyTipElements['backstage'], function (e) { return e.id === _this.backstageButtonEle.id; });\n if (index !== -1) {\n this.parent.keyTipElements['backstage'].splice(index, 1);\n }\n }\n if (this.parent.keyTipElements['backstageMenu'] && this.parent.keyTipElements['backstageMenu'].length) {\n for (var i = 0; i < this.parent.keyTipElements['backstageMenu'].length; i++) {\n this.parent.keyTipElements['backstageMenu'].splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Add items to Backstage Menu.\n *\n * @param {BackstageItemModel[]} items - Gets the items to be added.\n * @param {string} target - Gets the target item to add the items.\n * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n var item = items[parseInt(i.toString(), 10)];\n if (item.isFooter) {\n if (isAfter) {\n this.footerMenuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.footerMenuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n else {\n if (isAfter) {\n this.menuCtrl.insertAfter(items, target, isUniqueId);\n }\n else {\n this.menuCtrl.insertBefore(items, target, isUniqueId);\n }\n }\n }\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n var backStageOptions = this.parent.backStageMenu;\n for (var i = 0; i < backStageOptions.items.length; i++) {\n var item = backStageOptions.items[parseInt(i.toString(), 10)];\n for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {\n var item1 = backstageItems[parseInt(i_1.toString(), 10)];\n if (item.text === item1.text) {\n item1.content = item.content;\n break;\n }\n }\n }\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Remove items from Backstage Menu.\n *\n * @param {string[]} items - Gets the items to be removed.\n * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.\n * @returns {void}\n */\n RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {\n this.menuCtrl.removeItems(items, isUniqueId);\n this.footerMenuCtrl.removeItems(items, isUniqueId);\n var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);\n this.parent.backStageMenu.setProperties({ items: backstageItems }, true);\n };\n /**\n * Renders the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.showBackstage = function () {\n this.popupEle.show();\n };\n /**\n * Hides the backstage dynamically.\n *\n * @returns {void}\n */\n RibbonBackstage.prototype.hideBackstage = function () {\n if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {\n this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);\n }\n this.popupEle.hide();\n };\n return RibbonBackstage;\n}(Component));\nexport { RibbonBackstage };\n","import * as constants from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Defines the ribbon contextual tab.\n */\nvar RibbonContextualTab = /** @class */ (function () {\n function RibbonContextualTab(parent) {\n this.parent = parent;\n }\n RibbonContextualTab.prototype.getModuleName = function () {\n return 'ribbonContextualTab';\n };\n RibbonContextualTab.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates Contextual tab.\n *\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.addContextualTabs = function () {\n var isSelected = false;\n for (var n = 0; n < this.parent.contextualTabs.length; n++) {\n for (var i = 0; i < this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs.length; i++) {\n this.parent.addTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)]);\n var index = this.parent.tabs.length - 1;\n var tabEle = this.parent.tabObj.element;\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(index.toString(), 10)];\n toolbarEle.classList.add(constants.RIBBON_CONTEXTUAL_TAB);\n toolbarEle.classList.add('e-hidden');\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].visible) {\n this.parent.showTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[parseInt(i.toString(), 10)].id, true);\n if (this.parent.contextualTabs[parseInt(n.toString(), 10)].isSelected && !isSelected) {\n this.parent.selectTab(this.parent.contextualTabs[parseInt(n.toString(), 10)].tabs[0].id);\n isSelected = true;\n }\n }\n }\n }\n };\n /**\n * Updates Contextual tab.\n *\n * @param {RibbonContextualTabSettingsModel} newProp - Specifies new properties.\n * @param {RibbonContextualTabSettingsModel} contextualTab - Gets the property of contextual tab.\n * @returns {void}\n * @hidden\n */\n RibbonContextualTab.prototype.updateContextualTabs = function (newProp, contextualTab) {\n if (!(isNullOrUndefined(newProp.visible))) {\n for (var i = 0; i < contextualTab.tabs.length; i++) {\n if (newProp.visible) {\n this.parent.showTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n else {\n this.parent.hideTab(contextualTab.tabs[parseInt(i.toString(), 10)].id, true);\n }\n }\n }\n if (!(isNullOrUndefined(newProp.isSelected))) {\n if (newProp.isSelected && contextualTab.visible) {\n this.parent.selectTab(contextualTab.tabs[0].id);\n }\n else {\n var tabEle = this.parent.tabObj.element;\n for (var i = 0; i < this.parent.tabs.length; i++) {\n var toolbarEle = tabEle.querySelectorAll('.e-toolbar-item')[parseInt(i.toString(), 10)];\n if (!(toolbarEle.classList.contains('e-hidden') || toolbarEle.classList.contains('e-disable'))) {\n this.parent.selectTab(this.parent.tabs[parseInt(i.toString(), 10)].id);\n break;\n }\n }\n }\n }\n if (newProp.tabs) {\n var _loop_1 = function (key) {\n var index = parseInt(key, 10);\n var tab = this_1.parent.tabs.filter(function (e) {\n return e.id === contextualTab.tabs[parseInt(index.toString(), 10)].id;\n })[0];\n this_1.parent.updateTab(tab);\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp.tabs); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n }\n };\n return RibbonContextualTab;\n}());\nexport { RibbonContextualTab };\n","import { getGroup, getItem } from '../base/utils';\nimport { getIndex } from '../base/index';\nimport * as constants from '../base/constant';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { getInstance, remove } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/**\n * Defines the keytip of Ribbon.\n */\nvar RibbonKeyTip = /** @class */ (function () {\n function RibbonKeyTip(parent) {\n this.isKeytipPopupOpen = false;\n this.parent = parent;\n }\n RibbonKeyTip.prototype.getModuleName = function () {\n return 'ribbonKeyTip';\n };\n RibbonKeyTip.prototype.destroy = function () {\n this.parent = null;\n };\n /**\n * Creates the keytips.\n *\n * @param {string} key - get's the keytip type.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.createKeytip = function (key) {\n if (this.parent.keyTipElements) {\n var keytipData = void 0;\n if (key === 'tab') {\n for (var i = 0; i < this.parent.tabs.length; i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][\"\" + key];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'tab', 'center', 'bottom', true);\n }\n }\n if (this.parent.keyTipElements['filemenu']) {\n keytipData = this.parent.keyTipElements['filemenu'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'filemenu');\n }\n if (this.parent.keyTipElements['backstage']) {\n keytipData = this.parent.keyTipElements['backstage'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'backstage');\n }\n if (this.parent.keyTipElements['collapse']) {\n keytipData = this.parent.keyTipElements['collapse'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'collapse');\n }\n if (this.parent.keyTipElements['taboverflow']) {\n keytipData = this.parent.keyTipElements['taboverflow'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'taboverflow');\n }\n }\n else if (key === 'popupitem') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['popupitem']) {\n var popupKeyTipData = this.parent.keyTipElements[this.parent.selectedTab]['popupitem'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['popupitem']).length; i++) {\n this.createKeyTipElement((popupKeyTipData[parseInt(i.toString(), 10)].id), popupKeyTipData[parseInt(i.toString(), 10)].keyTip, 'popupitem', 'left', 'top', false, true);\n }\n }\n }\n else if (key === 'backstageMenu') {\n if (this.parent.keyTipElements['backstageMenu']) {\n var backstageKeyTipData = this.parent.keyTipElements['backstageMenu'];\n for (var i = 0; i < Object.keys(this.parent.keyTipElements['backstageMenu']).length; i++) {\n this.createKeyTipElement((backstageKeyTipData[parseInt(i.toString(), 10)].id), backstageKeyTipData[parseInt(i.toString(), 10)].keyTip, 'backstageMenu', 'left', 'center');\n }\n }\n }\n else if (key === 'grpoverflowpopup' && this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflowpopup']) {\n this.calculateItemPosition(key);\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher', 'center', 'bottom', false, true);\n }\n }\n }\n else {\n this.calculateItemPosition(key);\n if (this.parent.activeLayout === 'Classic') {\n if (this.parent.keyTipElements[this.parent.selectedTab]['launcher']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['launcher']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['launcher'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'launcher');\n }\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpoverflow'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpoverflow');\n }\n }\n }\n if (this.parent.activeLayout === 'Simplified') {\n if (this.parent.keyTipElements['overflowbtn']) {\n keytipData = this.parent.keyTipElements['overflowbtn'];\n this.createKeyTipElement((keytipData[0].id), keytipData[0].keyTip, 'overflowbtn');\n }\n if (this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn']).length; i++) {\n keytipData = this.parent.keyTipElements[this.parent.selectedTab]['grpofbtn'];\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, 'grpofbtn');\n }\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.calculateItemPosition = function (key, isMethod, keyTip) {\n if (isMethod === void 0) { isMethod = false; }\n var xOffset;\n var yOffset;\n var keytipData = this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key];\n if (keytipData) {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[parseInt(this.parent.selectedTab.toString(), 10)][\"\" + key]).length; i++) {\n if ((isMethod && (keytipData[parseInt(i.toString(), 10)].keyTip === keyTip)) || !isMethod) {\n var itemID = keytipData[parseInt(i.toString(), 10)].id;\n if (keytipData[parseInt(i.toString(), 10)].id.indexOf('_grpbtn') !== -1) {\n itemID = keytipData[parseInt(i.toString(), 10)].id.replace(/_grpbtn\\d+/, '');\n }\n var itemProp = getItem(this.parent.tabs, itemID);\n if (itemProp && itemProp.group.orientation === 'Column' && itemProp.collection.items.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.itemIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else if (itemProp.itemIndex === 1) {\n xOffset = 'center';\n yOffset = 'center';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n else if (itemProp && itemProp.group.orientation === 'Row' && itemProp.group.collections.length > 1 && this.parent.activeLayout !== 'Simplified') {\n if (itemProp.collectionIndex === 0) {\n xOffset = 'center';\n yOffset = 'top';\n }\n else {\n xOffset = 'center';\n yOffset = 'bottom';\n }\n }\n if (key === 'item') {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset);\n }\n else {\n this.createKeyTipElement((keytipData[parseInt(i.toString(), 10)].id), keytipData[parseInt(i.toString(), 10)].keyTip, key, xOffset, yOffset, false, true);\n }\n }\n }\n }\n };\n RibbonKeyTip.prototype.createKeyTipElement = function (id, keyTip, type, xOffset, yOffset, isTab, isPopUpItem) {\n if (xOffset === void 0) { xOffset = 'center'; }\n if (yOffset === void 0) { yOffset = 'bottom'; }\n if (isTab === void 0) { isTab = false; }\n if (isPopUpItem === void 0) { isPopUpItem = false; }\n var keyEle = document.querySelector('#' + id);\n var isPopUpPresent = false;\n var splitBtnID;\n if (isTab) {\n keyEle = document.querySelector('#' + id + constants.HEADER_ID);\n }\n if (keyEle) {\n if (keyEle.closest('.e-ribbon-group-overflow-ddb')) {\n isPopUpPresent = true;\n }\n if ((isTab && isPopUpItem) && keyEle.closest('.e-toolbar-pop')) {\n isPopUpPresent = true;\n }\n if (keyEle.closest('.e-split-btn-wrapper')) {\n var splitBtn = keyEle.closest('.e-split-btn-wrapper');\n splitBtnID = splitBtn.closest('.e-ribbon-item').id;\n }\n else {\n if (keyEle.closest('.e-colorpicker-wrapper')) {\n keyEle = keyEle.closest('.e-colorpicker-wrapper');\n splitBtnID = keyEle.closest('.e-ribbon-item').id;\n }\n }\n }\n if ((keyEle && keyEle.offsetParent) || (isTab && isPopUpItem)) {\n if ((isPopUpItem && isPopUpPresent) || !isPopUpItem) {\n var keytipElement = this.parent.createElement('div', {\n className: constants.RIBBON_KEYTIP,\n id: id + constants.RIBBON_KEYTIP_ID,\n attrs: { role: 'dialog', 'aria-label': 'ribbon-keytip' }\n });\n document.body.append(keytipElement);\n var keytipPopup = new Popup(keytipElement, {\n relateTo: '#' + (isTab ? id + constants.HEADER_ID : splitBtnID ? splitBtnID : id),\n content: keyTip,\n collision: { X: 'fit', Y: 'flip' },\n targetType: 'relative',\n position: { X: xOffset, Y: yOffset },\n enableRtl: this.parent.enableRtl,\n actionOnScroll: 'hide'\n });\n keytipPopup.show();\n this.calculateKeyTipPosition(keyEle, keytipElement, type, yOffset);\n this.parent.isKeytipOpen = true;\n }\n }\n };\n RibbonKeyTip.prototype.calculateKeyTipPosition = function (itemEle, keytipElement, type, yOffset) {\n var position = itemEle.getBoundingClientRect();\n if (type === 'backstageMenu') {\n keytipElement.style.top = position.top + ((keytipElement.offsetHeight) / 2) + 'px';\n keytipElement.style.left = position.left + (itemEle.offsetWidth / 5) + 'px';\n }\n else {\n if (type !== 'popupitem') {\n keytipElement.style.left = position.left + (position.width - keytipElement.offsetWidth) / 2 + 'px';\n }\n }\n if (type === 'filemenu' || type === 'backstage') {\n keytipElement.style.top = position.top + ((itemEle.offsetHeight - (itemEle.offsetHeight / 3)) + (keytipElement.offsetHeight / 6)) + 'px';\n }\n else if ((type === 'item' && yOffset === 'top')) {\n keytipElement.style.top = (position.top - (itemEle.offsetHeight) / 2) + 'px';\n }\n };\n /**\n * Performs keytip action.\n *\n * @param {string} keyPress - Gets the keytip text.\n * @param {boolean} isMethod - Gets the isMethod.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.keytipPress = function (keyPress, isMethod) {\n var _this = this;\n if (isMethod === void 0) { isMethod = false; }\n this.isKeytipPresent = false;\n for (var i = 0; ((i < Object.keys(this.parent.keyTipElements).length) && !this.isKeytipPresent); i++) {\n if (this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n for (var j = 0; ((j < Object.keys(this.parent.keyTipElements[parseInt(i.toString(), 10)]).length) &&\n !this.isKeytipPresent); j++) {\n var keytipData = this.parent.keyTipElements[parseInt(i.toString(), 10)][Object.\n keys(this.parent.keyTipElements[parseInt(i.toString(), 10)])[parseInt(j.toString(), 10)]];\n for (var k = 0; ((k < Object.keys(keytipData).length) && !this.isKeytipPresent); k++) {\n if (keyPress.toUpperCase() === keytipData[parseInt(k.toString(), 10)].keyTip) {\n var keyTipElement = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id + constants.RIBBON_KEYTIP_ID);\n if (keyTipElement || isMethod) {\n this.isKeytipPresent = true;\n this.removeKeytip();\n if (keytipData[parseInt(k.toString(), 10)].type === 'tab') {\n if (i !== this.parent.selectedTab) {\n this.parent.tabObj.select(i);\n setTimeout(function () {\n var tabOverflow = _this.parent.tabObj.element.querySelector('.e-nav-active');\n if (tabOverflow) {\n tabOverflow.click();\n }\n _this.createKeytip('item');\n }, 600);\n }\n else {\n this.createKeytip('item');\n }\n }\n else {\n if (keytipData[parseInt(k.toString(), 10)].type === 'item' || keytipData[parseInt(k.toString(), 10)].type === 'grpoverflowpopup' || keytipData[parseInt(k.toString(), 10)].type === 'popupitem') {\n if (document.getElementById(keytipData[parseInt(k.toString(), 10)].id) && document.getElementById(keytipData[parseInt(k.toString(), 10)].id).classList.contains('e-ribbon-group-button')) {\n document.getElementById(keytipData[parseInt(k.toString(), 10)].id).click();\n }\n else {\n var itemProp = void 0;\n if ((keytipData[parseInt(k.toString(), 10)].id).indexOf('_popupButton') !== -1) {\n var galleryID = keytipData[parseInt(k.toString(), 10)].id.replace(/_popupButton/g, '');\n itemProp = getItem(this.parent.tabs, galleryID);\n }\n else {\n itemProp = getItem(this.parent.tabs, keytipData[parseInt(k.toString(), 10)].id);\n }\n if (!isMethod || (isMethod && itemProp.tabIndex === this.parent.selectedTab)) {\n this.clickItems(itemProp, keytipData, k, false, isMethod);\n }\n }\n }\n else if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow' || keytipData[parseInt(k.toString(), 10)].type === 'grpofbtn' || keytipData[parseInt(k.toString(), 10)].type === 'launcher') {\n var keyEle = document.querySelector('#' + keytipData[parseInt(k.toString(), 10)].id);\n this.removeKeytip();\n if (keyEle) {\n var groupID = keytipData[parseInt(k.toString(), 10)].id;\n if (isMethod) {\n if (keytipData[parseInt(k.toString(), 10)].id.indexOf('_launcher') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_sim_grp_overflow') !== -1 || keytipData[parseInt(k.toString(), 10)].id.indexOf('_overflow_dropdown') !== -1) {\n groupID = keytipData[parseInt(k.toString(), 10)].id.replace(/_launcher|_sim_grp_overflow|_overflow_dropdown/g, '');\n var itemProp = getGroup(this.parent.tabs, groupID);\n if (itemProp.tabIndex === this.parent.selectedTab) {\n this.clickItems(itemProp, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n else {\n this.clickItems(null, keytipData, k, true, isMethod, keyEle);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.keyTipElements) {\n this.commonItemsKeyTipPress(keyPress, Object.keys(this.parent.keyTipElements)[parseInt(i.toString(), 10)], isMethod);\n }\n }\n }\n };\n RibbonKeyTip.prototype.clickItems = function (itemProp, keytipData, k, isGroupItems, isMethod, keyEle) {\n if (isGroupItems) {\n keyEle.click();\n if (!(keytipData[parseInt(k.toString(), 10)].type === 'launcher')) {\n this.isKeytipPopupOpen = true;\n if (keytipData[parseInt(k.toString(), 10)].type === 'grpoverflow') {\n this.createKeytip('grpoverflowpopup');\n }\n else {\n this.createKeytip('popupitem');\n }\n }\n }\n else {\n var itemID = keytipData[parseInt(k.toString(), 10)].id;\n if (document.querySelector('#' + itemID) && isMethod) {\n if (this.parent.activeLayout === 'Simplified') {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + '_sim_grp_overflow-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + '_sim_grp_overflow').click();\n }\n else if (document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + this.parent.tabObj.element.id + constants.OVRLOF_BUTTON_ID).click();\n }\n }\n else {\n if (document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup') && document.querySelector('#' + itemID).closest('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID + '-popup').classList.contains('e-popup-close')) {\n document.querySelector('#' + itemProp.group.id + constants.OVERFLOW_ID + constants.DROPDOWN_ID).click();\n }\n }\n }\n var itemType = this.parent.getItemModuleName(itemProp.item);\n switch (itemType) {\n case 'btn':\n this.parent.ribbonButtonModule.click(itemID);\n break;\n case 'dropdown-btn':\n this.parent.ribbonDropDownModule.toggle(itemID);\n break;\n case 'split-btn':\n this.parent.ribbonSplitButtonModule.toggle(itemID);\n break;\n case 'checkbox':\n this.parent.ribbonCheckBoxModule.click(itemID);\n break;\n case 'colorpicker':\n this.parent.ribbonColorPickerModule.toggle(itemID);\n break;\n case 'combobox': {\n var itemEle_1 = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemEle_1)) {\n setTimeout(function () {\n itemEle_1.focus();\n }, 100);\n }\n break;\n }\n case 'gallery': {\n var galleryEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(galleryEle)) {\n galleryEle.click();\n }\n break;\n }\n case 'template': {\n var templateEle = document.querySelector('#' + itemID);\n if (this.isInteractableElement(templateEle)) {\n templateEle.focus();\n }\n break;\n }\n case 'group-btn': {\n var itemElement = document.querySelector('#' + itemID);\n if (this.isInteractableElement(itemElement)) {\n var item = getInstance(itemElement, DropDownButton);\n item.toggle();\n for (var i = 0; i < itemProp.item.groupButtonSettings.items.length; i++) {\n if (itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip) {\n this.createKeyTipElement(itemID + (constants.RIBBON_GROUP_BUTTON_ID + i), itemProp.item.groupButtonSettings.items[parseInt(i.toString(), 10)].keyTip, 'item');\n }\n }\n }\n break;\n }\n }\n }\n };\n RibbonKeyTip.prototype.isInteractableElement = function (element) {\n return element && !element.closest('.e-ribbon-item').classList.contains('e-disabled');\n };\n RibbonKeyTip.prototype.commonItemsKeyTipPress = function (keyPress, key, isMethod) {\n var _this = this;\n if (this.parent.keyTipElements[\"\" + key]) {\n var isKeyPressed = false;\n var keytipData = this.parent.keyTipElements[\"\" + key];\n var keyEle = void 0;\n var keytipElement = void 0;\n if (keytipData) {\n if (key === 'backstageMenu') {\n for (var i = 0; i < Object.keys(this.parent.keyTipElements[\"\" + key]).length; i++) {\n if (keytipData[parseInt(i.toString(), 10)].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[parseInt(i.toString(), 10)].id);\n keytipElement = document.querySelector('#' + keyEle.id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n if (isMethod && document.querySelector('.e-ribbon-backstage-popup').classList.contains('e-popup-close')) {\n this.parent.tabObj.element.querySelector('.e-ribbon-backstage').click();\n }\n break;\n }\n }\n }\n }\n else {\n if (keytipData[0] && keytipData[0].keyTip === keyPress.toUpperCase()) {\n keyEle = document.querySelector('#' + keytipData[0].id);\n keytipElement = document.querySelector('#' + keytipData[0].id + constants.RIBBON_KEYTIP_ID);\n if (keytipElement || isMethod) {\n isKeyPressed = true;\n }\n }\n }\n }\n if (isKeyPressed) {\n this.removeKeytip();\n this.isKeytipPresent = true;\n if (keyEle) {\n keyEle.click();\n if (key === 'backstage') {\n this.createKeytip('backstageMenu');\n }\n else if (key === 'overflowbtn') {\n this.isKeytipPopupOpen = true;\n this.createKeytip('popupitem');\n }\n else if (key === 'taboverflow') {\n setTimeout(function () {\n for (var i = 0; i < Object.keys(_this.parent.keyTipElements).length; i++) {\n if (_this.parent.keyTipElements[parseInt(i.toString(), 10)]) {\n var keytipData_1 = _this.parent.keyTipElements[parseInt(i.toString(), 10)]['tab'];\n _this.createKeyTipElement((keytipData_1[0].id), keytipData_1[0].keyTip, 'tab', 'center', 'bottom', true, true);\n }\n }\n }, 600);\n }\n }\n }\n }\n };\n /**\n * Removes the keytip.\n *\n * @param {string} key - Gets the keyboard key element.\n * @returns {void}\n * @hidden\n */\n RibbonKeyTip.prototype.removeKeytip = function (key) {\n var _this = this;\n var keyTipItems = document.querySelectorAll('.e-ribbon-keytip');\n var isKeyTipExist = false;\n this.parent.keysPress = '';\n var _loop_1 = function (i) {\n var keyTipItem = keyTipItems[parseInt(i.toString(), 10)];\n if (key === 'Escape' && this_1.parent.keyTipElements && this_1.parent.keyTipElements[this_1.parent.selectedTab]) {\n for (var j = 0; j < Object.keys(this_1.parent.keyTipElements[this_1.parent.selectedTab]).length; j++) {\n var keyText = (Object.keys(this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)]))[parseInt(j.toString(), 10)];\n var keyTipElement = this_1.parent.keyTipElements[parseInt(this_1.parent.selectedTab.toString(), 10)];\n var index = getIndex(keyTipElement[\"\" + keyText], function (e) {\n return e.id +\n constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id;\n });\n if (index !== -1) {\n if ((keyText === 'item' && !(this_1.isKeytipPopupOpen)) || (keyText === 'grpoverflow' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n break;\n }\n else if (this_1.isKeytipPopupOpen) {\n if ((keyText === 'popupitem' && this_1.parent.activeLayout === 'Simplified') || (keyText === 'grpoverflowpopup' && this_1.parent.activeLayout === 'Classic')) {\n this_1.createKeytip('item');\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n }\n for (var n = 0; n < Object.keys(this_1.parent.keyTipElements).length; n++) {\n if (this_1.parent.keyTipElements[parseInt(n.toString(), 10)]) {\n var keytipData = this_1.parent.keyTipElements[parseInt(n.toString(), 10)]['tab'];\n for (var j = 0; j < Object.keys(keytipData).length; j++) {\n if (keyTipItem.id === keytipData[0].id + constants.RIBBON_KEYTIP_ID) {\n if (document.querySelector('#' + keytipData[0].id + constants.HEADER_ID).closest('.e-toolbar-pop')) {\n var tabOverflow = this_1.parent.tabObj.element.querySelector('.e-nav-active');\n tabOverflow.click();\n setTimeout(function () {\n _this.createKeytip('tab');\n }, 600);\n key = '';\n isKeyTipExist = true;\n break;\n }\n }\n }\n if (isKeyTipExist) {\n break;\n }\n }\n }\n if (!isKeyTipExist && this_1.parent.keyTipElements['backstageMenu']) {\n var index = getIndex(this_1.parent.keyTipElements['backstageMenu'], function (e) { return e.id + constants.RIBBON_KEYTIP_ID === keyTipItems[parseInt(i.toString(), 10)].id; });\n if (index !== -1) {\n this_1.createKeytip('tab');\n key = '';\n isKeyTipExist = true;\n }\n }\n }\n if (keyTipItem) {\n remove(keyTipItem);\n }\n };\n var this_1 = this;\n for (var i = 0; i < keyTipItems.length; i++) {\n _loop_1(i);\n }\n this.isKeytipPopupOpen = false;\n if (!isKeyTipExist) {\n this.parent.isKeytipOpen = false;\n }\n };\n /**\n * Shows the Keytip dynamically.\n *\n * @param {string} keyAction - Item for which the tooltip is to be shown.\n * @returns {void}\n */\n RibbonKeyTip.prototype.showKeyTips = function (keyAction) {\n if (this.parent.enableKeyTips) {\n if (keyAction) {\n this.keytipPress(keyAction, true);\n }\n else {\n this.createKeytip('tab');\n }\n }\n };\n /**\n * Hides the Keytip dynamically.\n *\n * @returns {void}\n */\n RibbonKeyTip.prototype.hideKeyTips = function () {\n this.removeKeytip();\n };\n return RibbonKeyTip;\n}());\nexport { RibbonKeyTip };\n","import * as index from './index';\nindex.Ribbon.Inject(index.RibbonButton, index.RibbonDropDown, index.RibbonSplitButton, index.RibbonCheckBox, index.RibbonColorPicker, index.RibbonComboBox, index.RibbonGroupButton, index.RibbonFileMenu, index.RibbonBackstage, index.RibbonKeyTip, index.RibbonContextualTab, index.RibbonGallery);\nexport * from './index';\n"],"names":["getIndex","arr","condition","i","length","parseInt","toString","getTemplateFunction","template","content","tempEle","select","tagName","innerHTML","outerHTML","e","compile","getItem","tabs","id","type","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","constants.RIBBON_TOOLTIP","createTooltip","ribbon","beforeTooltipRender","ribbonTooltip","Tooltip","constants.RIBBON_TOOLTIP_TARGET","beforeRender","bind","this","windowCollision","appendTo","destroyTooltip","updateTooltipProp","prop","setCustomAttributes","attributes","key","elementClass","replace","trim","addClass","split","value","setAttribute","ItemOrientation","RibbonItemSize","RibbonItemType","RibbonGroupButtonSelection","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","RibbonButtonSettings","_super","apply","muteOnChange","call","Property","Event","ChildProperty","RibbonCheckBoxSettings","RibbonColorPickerSettings","RibbonComboBoxSettings","Complex","text","groupBy","FieldSettings","RibbonDropDownSettings","Collection","Item","RibbonSplitButtonSettings","RibbonTooltip","RibbonGroupButtonItem","RibbonGroupButtonSettings","RibbonGalleryItem","RibbonGalleryGroup","RibbonGallerySettings","RibbonItem","Medium","Small","Large","Auto","RibbonCollection","RibbonGroup","RibbonTab","FileMenuSettings","MenuItem","MenuAnimationSettings","BackstageBackButton","BackstageItem","BackStageMenu","RibbonContextualTabSettings","RIBBON_CONTROL","RIBBON_POPUP_CONTROL","HIDE_CSS","RIBBON_ITEM","RIBBON_ROW","RIBBON_TOOLTIP","RIBBON_TOOLTIP_TARGET","RIBBON_TOOLTIP_TITLE","RIBBON_TOOLTIP_CONTENT","RIBBON_TOOLTIP_ICON","RIBBON_TOOLTIP_CONTAINER","RIBBON_TEXT_CONTAINER","GROUPOF_BUTTON_ID","RibbonButton","getModuleName","createButton","itemEle","_this","buttonEle","btnSettings","buttonSettings","Button","locale","enableRtl","enablePersistence","iconPosition","activeSize","ITEM_VERTICAL_CENTER","isPrimary","isToggle","created","htmlAttributes","onclick","clicked","addOverFlowEvents","overflowButton","buttonObj","classList","contains","toggle","removeOverFlowEvents","join","click","controlId","updateButton","merge","add","updateButtonSize","RibbonCheckBox","createCheckBox","inputEle","checkBoxSettings","CheckBox","checked","label","labelPosition","change","checkBoxObj","dataBind","updateCheckBox","RibbonColorPicker","createColorPicker","colorPickerSettings","colorPicker","ColorPicker","columns","enableOpacity","mode","modeSwitcher","noColor","presetColors","showButtons","beforeClose","parentElement","remove","beforeOpen","beforeTileRender","open","wrapper","EventHandler","toggleWrapperHover","isAdd","insertBefore","firstChild","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","createPopupOnClick","beforeItemRender","dropdownElement","dropdown","createOverFlowDropDown","name","groupEle","overflowEle","VERTICAL_DDB","cancel","isNullOrUndefined","onkeydown","keyActionHandler","comboBoxEle","controlElements","slice","querySelectorAll","templateElements","concat","comboBoxElements","shiftKey","handleNavigation","updateItemIndex","focusLauncherIcon","launcherIconEle","groupContainer","preventDefault","focus","ribbonItem","removeOverFlowDropDown","getDDBItemElement","dropDown","getDropDownObj","dropDownEle","addItems","Items","removeItems","isUniqueId","dropdownObj","updateDropDown","btnEle","control","updateDropDownSize","push","RibbonSplitButton","createSplitButton","splitButtonSettings","splitbutton","SplitButton","dropdownEle","stopImmediatePropagation","setContent","splitButtonEle","ddbId","popupEle","document","getSplitButtonObj","splitBtnObj","updateSplitButton","updateSplitButtonSize","RibbonGroupButton","isSelected","createGroupButton","itemElement","groupBtnSettings","groupButtonSettings","count","btnContainerEle","groupButtonEle","selection","Single","selected","Multiple","ribbonTooltipSettings","groupButtonClicked","dropdownIcon","activeEleCount","dropDownPopup","addGroupButtonHeader","handleFocusState","handleGroupButtonNavigation","grpBtnSettings","previousItems","selectingItems","selectedItems","eventArgs","beforeClick","grpBtnIndex","n","itemsCount","eventArgs_1","switchGroupButton","containerEle","defaultSelectedBtn","itemID","groupButtonHeader","targetEle","isOverflowPopup","isIconOnly","children","destroyDropDown","updateGroupButtonSize","RibbonGallery","isAdded","galleryItemsIndex","registeredTemplate","ref","setValue","createGallery","gallerySettings","renderGalleryItems","createPopup","popup","Popup","popupID","isPopup","galleryContainerEle","galleryEle","isCollapsible","galleryWrapper","this_1","isHeightDefined","itemHeight","attrs","tabindex","itemEventArgs","selectedItemIndex","setActiveState","currentTarget","onmouseover","hoverEventArgs","itemHover","itemWidth","style","height","paddingTop","paddingBottom","flexFlow","popupTemplate","iconEle","createGalleryTemplate","createGalleryPopupTemplate","itemCount","headerEle","isReact","portals","undefined","setWrapperWidth","itemsWidth","isWidthApplied","galleryItemEle","offsetWidth","itemStyles","window","getComputedStyle","paddingWidth","parseFloat","paddingLeft","paddingRight","marginWidth","marginLeft","marginRight","checkAvailableHeight","activeContent","galleryWrapperItems","simplifiedItemsCount","isHeight","galleryWrapperHeight","offsetHeight","itemsValues","marginTop","marginBottom","checkCollision","offsetValue","windowWidth","innerWidth","screenWidth","Math","abs","paddingStyles","popupContainerItems","forEach","isCollideOccurs","popupItemStyles","round","setGalleryPopupHeight","top","popupTop","innerHeight","popupContainer","gallerypopupElement","body","relateTo","collision","X","Y","actionOnScroll","targetType","position","hide","switchGalleryItems","galleryIcons","galleryContainer","selectedTab","popupButton","groupIconCss","popupContainerEle_1","setFoucsToFirstItem","popupEvents","formatUnit","galleryDDBEle","isInteracted","previousItem","currentItem","selctedGalleryItem","popupGalleryItem","galleryItemPopup","galleryItem","getElementById","selectingEventArgs","beforeSelect","startsWith","selectedEventArgs","galleryPopupItems","isOpen","popupEventArgs","popupOpen","popupClose","show","buttonPosition","getBoundingClientRect","left","offsetX","showGalleryPopup","hideGalleryPopup","isDropdown","handleGalleryPopupNavigation","galleryPopupEle","code","templateName","templateFunction","isStringTemplate","Ribbon","options","Ribbon_1","Inject","render","initialize","preRender","keysPress","idIndex","initialPropsData","hiddenElements","keyTipElements","hiddenGroups","itemsModel","targetTabs","isAddRemove","isUpdateItems","keyConfigs","leftarrow","rightarrow","shiftTab","getPersistData","addOnPersist","requiredModules","modules","member","canInjectColorPickerModule","canInjectGalleryModule","Gallery","backStageMenu","visible","fileMenu","menuItems","contextualTabs","enableKeyTips","getUniqueID","renderTabs","ribbonContextualTabModule","addContextualTabs","ribbonFileMenuModule","createFileMenu","ribbonBackstageModule","createBackStage","createHelpPaneTemplate","refreshOverflow","addTabOverflowKeyTip","isKeytipOpen","wireEvents","wireKeyboardEvent","currentControlIndex","resizeHandler","keytipActionHandler","mouseEventHandler","keyboardModuleRibbon","KeyboardEvents","keyAction","eventName","galleryElements","ribbonControls","action","prevGroupId","prevGroupContainer","elem","checkOverflow","scrollModule","scrollEle","scrollStep","activePopup","getInstance","ribbonKeyTipModule","removeKeytip","isKeyTipPresent","keyPress","altKey","backstagePopup","hideBackstage","createKeytip","keyTipItems","toLowerCase","keytipPress","checkKeyTipPresent","keyTip","keyTipItem","addKeyTip","isKeyTipExist","keys","keytipData","tabsInternal","checkID","tabEle","validateItemSize","tabItems","createTabItems","Tab","selectedItem","overflowMode","tabCreated","ribbonTabSelected","selecting","ribbonTabSelecting","animation","tabAnimation","setProperty","toolbarEle","Toolbar","isMinimized","minimize","val","trigger","display","refreshLayout","toggleLayout","switchLayout","hideLayoutSwitcher","addExpandCollapse","renderInitialTab","preventFocus","selectedTabId","selectedIndex","selectedContent","elements","createGroups","isContextual","isContextualTab","updateSelectedState","previousIndex","calculateHiddenElementsWidth","updateItem","splice","ribbonGalleryModule","overflowTarget","ofTabContainer","activeTab","constants.HIDE_CSS","checkOverflowHiddenItems","tabID","tabContent","isOverFlow","isBreak","checkGroupShrinking","createOverflowDropdown","checkSimplifiedItemShrinking","createSimplfiedOverflow","HScroll","destroyScroll","removeOverflowDropdown","checkGroupExpanding","removeSimplfiedOverflow","checkSimplifiedItemExpanding","tabOverflow","allowedSizes","itemContainer","setItemSize","valString","removeAttribute","orderedGroups","getGroupResizeOrder","isGroupUpdated","collectionEle","Overflow","groupHidden","itemHidden","isAllItemHidden","isEmptyCollection_1","groupItems","i_1","indexOf","calculateOverflowItemsWidth","calculateMediumDataWidth","i_2","createOverflowPopup","DropDown","GroupButton","updatePopupItems","constants.RIBBON_ITEM","itemsLength","checkEmptyCollection","isEmptyCollection","isGroupOF","isMenu","isLeft","removeProperty","isClear","flag","overflowtarget","overflowDDBEle","groupItemEle","isGroupHidden","widthDifference","checkWidthDifference","removeOverflowEvent","groupElement","childElementCount","isHeaderVisible","removeOverflowButton","ofGroupContainer","groupId","isHidden","isItemHidden","overflowTab","groupTabContainer","groupHeader","isResize","addOverflowButton","overflowBtnTarget","overflowHeader","groupHeader_1","createGroupContainer","createOfTabContainer","collapseButton","addOverflowEvents","ribbonButtonModule","ribbonSplitButtonModule","ribbonCheckBoxModule","ribbonColorPickerModule","ribbonComboBoxModule","ribbonGroupButtonModule","isLarge","checkLargeToMedium","checkMediumToSmall","checkValidCollectionLength","ind","checkClassicCollection","isIncrement","checkClassicItem","shouldSkip","isCollapsed","canReduceCollection","canReduceItem","createShrinkEle","firstItem","start","end","shrinkEle","constants.RIBBON_ROW","data-start","data-end","moveItemToColumn","moveCollectionToColumn","orientation","Column","m","shrinkColumns","reduceItemsToSmall","middle","reduce","ele_1","reduceCollectionsToSmall","ele_2","setWidth","classicItems","shrinkColumn","isSmall","checkSmallToMedium","checkMediumToLarge","shouldClear","expandItemToMedium","parentEle","ele_4","expandCollectionsToMedium","ele_5","Row","expandItemsToLarge","container","ele_6","insertAdjacentElement","expandCollectionsToLarge","ele_7","handleContentSize","isRemoveOverflow","Template","createTemplateContent","collapseOrder","groupOverFlow","constants.RIBBON_GROUP_OVERFLOW","i_3","expandOrder","this_2","state_1","removeDropdown","isCollapse","isUndefined","sort","a","priority","reverse","clearOverflowDropDown","nextTabId","selectingItem","previousTabId","nextIndex","selectedTabContent","this_3","ribbonTab","ondblclick","btnId","constants.DROPDOWNBUTTON_HIDE","ribbonArgs","constants.RIBBON_POPUP_CONTROL","isGroupOf","upDownKeyHandler","templateEle","getElementsByClassName","findDisabledItem","currentItemIndex","itemType","controlItem","checkBoxEle","checkBox","isIncrease","ofGroupHeader","constants.RIBBON_COLLAPSE_BUTTON","aria-label","role","layoutSwitcherKeyTip","removeExpandCollapse","reRenderTabs","_i","_a","isNewTab","destroyTabItems","innerText","_b","groups_1","_c","_d","_e","_f","destroyFunction","groupList","i_4","alignType","i_5","groupContent","groupCollection","itemList","itemEle_1","size","createItems","i_6","ele_8","itemsize","createLauncherIcon","launcherIcon","constants.RIBBON_LAUNCHER_ICON_ELE","launcherIconCss","launcherIconClicked","launcherIconKeyTip","groupElements","showLauncherIcon","createCollection","isItemsHidden","initialProps","updateGroupProps","disabledGroups","collectionList","ribbonitem","sizeVal","collectionElements","createRibbonItem","itemElements","i_7","hiddenItems","helpPaneTemplate","clearTemplate","ribbonTempEle","after","renderReactTemplates","constants.RIBBON_TEMPLATE","renderItemTemplate","list","initId","listitem","htmlAttrID","hasHtmlAtrrID","listItem","setCommonProperties","getItemModuleName","i_8","i_9","removeLauncherIcon","containerId","this_4","groupButtonID_1","galleryPopupBtn","clearOverflowResize","selectTab","tabId","showTab","showHideTab","hideTab","contextualTab_1","isTabHidden","this_5","index_1","enableTab","enableDisableTab","disableTab","tbItems","addTab","isAfter","tabItem","removeTab","groups_2","addGroup","ribbonGroups","removeGroup","removeItemElement","groupID","hideGroup","showHideGroup","showGroup","updateHiddenElements","updateInitialProps","grpContainer","checkHiddenElements","checkHiddenItems","hiddenProps","updateItemsSimplifiedWidth","out_i_1","this_6","hiddenEle","hiddenWidth","mediumDataItems","overflowItems","selectedOFTab","ofTab","hasAttribute","groupOFButton","i_10","previousWidth","hiddenItem","i_11","disableGroup","enableDisableGroup","enableGroup","isDisabled","addCollection","ribbonCollections","collection_1","removeCollection","collectionId","ribbonGroup","addItem","ribbonItems","item_1","removeItem","itemId","ribbonCollection","hideItem","showHideItem","showItem","isInsert","checkOverflowItems","updateTab","groups_3","updateGroup","removeCss","match","removeClass","ribbongroup","updateCollection","ribboncollection","enableDisableItem","enableItem","disableItem","isUpdated","isOverflow","toggleAttribute","unwireEvents","refreshing","onPropertyChanged","newProp","oldProp","toolbarItem","updateContextualTabs","updateFileMenu","updateBackStageMenu","TabAnimationSettings","NotifyPropertyChanges","Component","RibbonFileMenu","fileMenuDDB","destroyDDB","fileMenuOptions","ddbElement","ddbBeforeEvent","ddbAfterEvent","createRibbonMenu","refreshActiveTabBorder","addFileMenuTooltip","addFileMenuKeytip","cloneMenuItem","itemsList","separator","url","menuOptions","ulElem","menuctrl","Menu","animationSettings","showItemOnClick","menuBeforeEvent","onClose","menuAfterEvent","onOpen","menuSelect","parentItem","destroyMenu","removeFileMenuTooltip","removeFileMenuKeytip","insertAfter","enableItems","disableItems","setItem","refresh","RibbonBackstage","backstageButton","backStageOptions","backstageButtonEle","createBackStagePopup","createBackStageTemplate","footerItemCount","isFooter","createBackstageMenu","menuCtrl","checkMenuItems","footerMenuCtrl","stopPropagation","showBackstage","popupHTMLElement","menuItem","menuWrapper","firstMenuEle","menuIndex","isCloseBtn","createBackStageContent","addBackStageMenuTooltip","addBackStageMenuKeyTip","onClickEvent","backStageItems","HTMLElement","updatePopupPositionOnRtl","closeBtnEle","arrowUp","arrowDown","popupStyle","right","backButton","closeBtn","isBackButtonClicked","itemsWrapperEle","ulFooterElem","ulMenuElem","cloneFooterMenuItem","backstageContentEle","backstageTempEle","contentItem","isBackButton","backStageItemClick","removeBackstageMenuTooltip","removeBackstageMenuKeyTip","addBackstageItems","backstageItems","item1","removeBackstageItems","RibbonContextualTab","contextualTab","RibbonKeyTip","isKeytipPopupOpen","createKeyTipElement","popupKeyTipData","backstageKeyTipData","calculateItemPosition","isMethod","xOffset","yOffset","isTab","isPopUpItem","splitBtnID","keyEle","isPopUpPresent","offsetParent","keytipElement","calculateKeyTipPosition","isKeytipPresent","toUpperCase","setTimeout","galleryID","clickItems","commonItemsKeyTipPress","isGroupItems","isInteractableElement","isKeyPressed","keytipData_1","keyText","showKeyTips","hideKeyTips","index.RibbonButton","index.RibbonDropDown","index.RibbonSplitButton","index.RibbonCheckBox","index.RibbonColorPicker","index.RibbonComboBox","index.RibbonGroupButton","index.RibbonFileMenu","index.RibbonBackstage","index.RibbonKeyTip","index.RibbonContextualTab","index.RibbonGallery"],"mappings":"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"}
|