Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function (Drupal, Backbone) { Chris@0: Drupal.contextualToolbar.StateModel = Backbone.Model.extend({ Chris@0: defaults: { Chris@0: isViewing: true, Chris@0: Chris@0: isVisible: false, Chris@0: Chris@0: contextualCount: 0, Chris@0: Chris@0: tabbingContext: null Chris@0: }, Chris@0: Chris@0: initialize: function initialize(attrs, options) { Chris@0: this.listenTo(options.contextualCollection, 'reset remove add', this.countContextualLinks); Chris@0: this.listenTo(options.contextualCollection, 'add', this.lockNewContextualLinks); Chris@0: Chris@0: this.listenTo(this, 'change:contextualCount', this.updateVisibility); Chris@0: Chris@0: this.listenTo(this, 'change:isViewing', function (model, isViewing) { Chris@0: options.contextualCollection.each(function (contextualModel) { Chris@0: contextualModel.set('isLocked', !isViewing); Chris@0: }); Chris@0: }); Chris@0: }, Chris@0: countContextualLinks: function countContextualLinks(contextualModel, contextualCollection) { Chris@0: this.set('contextualCount', contextualCollection.length); Chris@0: }, Chris@0: lockNewContextualLinks: function lockNewContextualLinks(contextualModel, contextualCollection) { Chris@0: if (!this.get('isViewing')) { Chris@0: contextualModel.set('isLocked', true); Chris@0: } Chris@0: }, Chris@0: updateVisibility: function updateVisibility() { Chris@0: this.set('isVisible', this.get('contextualCount') > 0); Chris@0: } Chris@0: }); Chris@0: })(Drupal, Backbone);