/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function (_, Backbone, Drupal) { Drupal.quickedit.FieldModel = Drupal.quickedit.BaseModel.extend({ defaults: { el: null, fieldID: null, id: null, entity: null, metadata: null, acceptStateChange: null, logicalFieldID: null, state: 'inactive', isChanged: false, inTempStore: false, html: null, htmlForOtherViewModes: null }, initialize: function initialize(options) { this.set('html', options.el.outerHTML); this.get('entity').get('fields').add(this); this.set('logicalFieldID', this.get('fieldID').split('/').slice(0, 4).join('/')); Drupal.quickedit.BaseModel.prototype.initialize.call(this, options); }, destroy: function destroy(options) { if (this.get('state') !== 'inactive') { throw new Error('FieldModel cannot be destroyed if it is not inactive state.'); } Drupal.quickedit.BaseModel.prototype.destroy.call(this, options); }, sync: function sync() {}, validate: function validate(attrs, options) { var current = this.get('state'); var next = attrs.state; if (current !== next) { if (_.indexOf(this.constructor.states, next) === -1) { return '"' + next + '" is an invalid state'; } if (!this.get('acceptStateChange')(current, next, options, this)) { return 'state change not accepted'; } } }, getEntityID: function getEntityID() { return this.get('fieldID').split('/').slice(0, 2).join('/'); }, getViewMode: function getViewMode() { return this.get('fieldID').split('/').pop(); }, findOtherViewModes: function findOtherViewModes() { var currentField = this; var otherViewModes = []; Drupal.quickedit.collections.fields.where({ logicalFieldID: currentField.get('logicalFieldID') }).forEach(function (field) { if (field !== currentField && field.get('fieldID') !== currentField.get('fieldID')) { otherViewModes.push(field.getViewMode()); } }); return otherViewModes; } }, { states: ['inactive', 'candidate', 'highlighted', 'activating', 'active', 'changed', 'saving', 'saved', 'invalid'], followsStateSequence: function followsStateSequence(from, to) { return _.indexOf(this.states, from) < _.indexOf(this.states, to); } }); Drupal.quickedit.FieldCollection = Backbone.Collection.extend({ model: Drupal.quickedit.FieldModel }); })(_, Backbone, Drupal);