all files / document-editor-container/ribbon/ribbon-base/ ribbon-state-manager.js

96.1% Statements 74/77
85.71% Branches 30/35
100% Functions 8/8
96.1% Lines 74/77
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119   14×   334×     334× 334× 334×       334×     335×     335× 334× 3675× 3675× 3675× 13027× 13027×     334× 334×   11× 11× 11× 11× 11× 11×   10×       27× 27×                                                      
define(["require", "exports", "./ribbon-constants", "@syncfusion/ej2-base"], function (require, exports, ribbon_constants_1, ej2_base_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var RibbonStateManager = (function () {
        function RibbonStateManager(container) {
            this.container = container;
        }
        RibbonStateManager.prototype.updateRibbonState = function (ribbon) {
            Iif (!ribbon) {
                return;
            }
            var isProtectedDocument = this.container.documentEditor.documentHelper.protectionType !== 'NoProtection';
            var isSelectionInProtectedRegion = this.container.documentEditor.editorModule.restrictEditing;
            Iif (isProtectedDocument) {
                this.enableDisableRibbonItem(ribbon, !isSelectionInProtectedRegion);
            }
            else {
                this.enableDisableRibbonItem(ribbon, !isProtectedDocument);
            }
        };
        RibbonStateManager.prototype.enableDisableRibbonItem = function (ribbon, enable) {
            Iif (!ribbon.tabs || !ribbon.tabs.length) {
                return;
            }
            if (enable) {
                for (var _i = 0, _a = ribbon.tabs; _i < _a.length; _i++) {
                    var tab = _a[_i];
                    ribbon.enableTab(tab.id);
                    for (var _b = 0, _c = tab.groups; _b < _c.length; _b++) {
                        var group = _c[_b];
                        ribbon.enableGroup(group.id);
                    }
                }
                this.container.ribbon.toggleTrackChanges();
                return;
            }
            for (var _d = 0, _e = ribbon.tabs; _d < _e.length; _d++) {
                var tab = _e[_d];
                var tabId = tab.id;
                var isViewTab = tabId.indexOf('view') !== -1;
                var isHomeTab = tabId.indexOf('home') !== -1;
                var isReviewTab = tabId.indexOf('review') !== -1;
                if (isReviewTab) {
                    ribbon.enableTab(tabId);
                    this.handleReviewTabProtection(ribbon, tab);
                }
                else if (isViewTab) {
                    ribbon.enableTab(tabId);
                    ribbon.disableGroup(this.container.element.id + ribbon_constants_1.RIBBON_ID + '_showGroup');
                }
                else if (isHomeTab) {
                    ribbon.enableTab(tabId);
                    this.handleHomeTabProtection(ribbon, tab);
                }
                else {
                    for (var _f = 0, _g = tab.groups; _f < _g.length; _f++) {
                        var group = _g[_f];
                        ribbon.disableGroup(group.id);
                    }
                }
            }
        };
        RibbonStateManager.prototype.handleHomeTabProtection = function (ribbon, tab) {
            var homeGroups = tab.groups;
            for (var _i = 0, homeGroups_1 = homeGroups; _i < homeGroups_1.length; _i++) {
                var group = homeGroups_1[_i];
                var isFindGroup = group.id.indexOf('find') !== -1;
                if (isFindGroup) {
                    ribbon.enableGroup(group.id);
                    this.enableOnlyFindItems(ribbon, group);
                }
                else {
                    ribbon.disableGroup(group.id);
                }
            }
        };
        RibbonStateManager.prototype.enableOnlyFindItems = function (ribbon, group) {
            for (var _i = 0, _a = group.collections || []; _i < _a.length; _i++) {
                var collection = _a[_i];
                for (var _b = 0, _c = collection.items || []; _b < _c.length; _b++) {
                    var item = _c[_b];
                    var itemId = item.id;
                    if (itemId && itemId.indexOf('find') !== -1) {
                        ribbon.enableItem(itemId);
                    }
                    else {
                        ribbon.disableItem(itemId);
                    }
                }
            }
        };
        RibbonStateManager.prototype.handleReviewTabProtection = function (ribbon, tab) {
            var reviewGroups = tab.groups;
            for (var _i = 0, reviewGroups_1 = reviewGroups; _i < reviewGroups_1.length; _i++) {
                var group = reviewGroups_1[_i];
                var isRestrictedGroup = group.id.indexOf('comments') !== -1 ||
                    group.id.indexOf('tracking') !== -1;
                if (group.id.indexOf('comments') !== -1) {
                    var documentEditor = this.container.documentEditor;
                    var enable = false;
                    Eif (!ej2_base_1.isNullOrUndefined(documentEditor) && (documentEditor.isReadOnly ||
                        documentEditor.documentHelper.isDocumentProtected)) {
                        enable = documentEditor.documentHelper.isCommentOnlyMode || !documentEditor.isReadOnlyMode;
                    }
                    this.container.ribbon.enableDisableInsertComment(enable);
                }
                else if (isRestrictedGroup) {
                    ribbon.disableGroup(group.id);
                }
                else {
                    ribbon.enableGroup(group.id);
                }
            }
        };
        return RibbonStateManager;
    }());
    exports.RibbonStateManager = RibbonStateManager;
});