/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function ($, _, Backbone, Drupal) { var reload = false; Drupal.quickedit.AppView = Backbone.View.extend({ initialize: function initialize(options) { this.activeFieldStates = ['activating', 'active']; this.singleFieldStates = ['highlighted', 'activating', 'active']; this.changedFieldStates = ['changed', 'saving', 'saved', 'invalid']; this.readyFieldStates = ['candidate', 'highlighted']; this.listenTo(options.entitiesCollection, 'change:state', this.appStateChange); this.listenTo(options.entitiesCollection, 'change:isActive', this.enforceSingleActiveEntity); this.listenTo(options.fieldsCollection, 'change:state', this.editorStateChange); this.listenTo(options.fieldsCollection, 'change:html', this.renderUpdatedField); this.listenTo(options.fieldsCollection, 'change:html', this.propagateUpdatedField); this.listenTo(options.fieldsCollection, 'add', this.rerenderedFieldToCandidate); this.listenTo(options.fieldsCollection, 'destroy', this.teardownEditor); }, appStateChange: function appStateChange(entityModel, state) { var app = this; var entityToolbarView = void 0; switch (state) { case 'launching': reload = false; entityToolbarView = new Drupal.quickedit.EntityToolbarView({ model: entityModel, appModel: this.model }); entityModel.toolbarView = entityToolbarView; entityModel.get('fields').each(function (fieldModel) { app.setupEditor(fieldModel); }); _.defer(function () { entityModel.set('state', 'opening'); }); break; case 'closed': entityToolbarView = entityModel.toolbarView; entityModel.get('fields').each(function (fieldModel) { app.teardownEditor(fieldModel); }); if (entityToolbarView) { entityToolbarView.remove(); delete entityModel.toolbarView; } if (reload) { reload = false; window.location.reload(); } break; } }, acceptEditorStateChange: function acceptEditorStateChange(from, to, context, fieldModel) { var accept = true; if (context && (context.reason === 'stop' || context.reason === 'rerender')) { if (from === 'candidate' && to === 'inactive') { accept = true; } } else { if (!Drupal.quickedit.FieldModel.followsStateSequence(from, to)) { accept = false; if (_.indexOf(this.activeFieldStates, from) !== -1 && to === 'candidate') { accept = true; } else if ((from === 'changed' || from === 'invalid') && to === 'candidate') { accept = true; } else if (from === 'highlighted' && to === 'candidate') { accept = true; } else if (from === 'saved' && to === 'candidate') { accept = true; } else if (from === 'invalid' && to === 'saving') { accept = true; } else if (from === 'invalid' && to === 'activating') { accept = true; } } if (accept) { var activeField = void 0; var activeFieldState = void 0; if ((this.readyFieldStates.indexOf(from) !== -1 || from === 'invalid') && this.activeFieldStates.indexOf(to) !== -1) { activeField = this.model.get('activeField'); if (activeField && activeField !== fieldModel) { activeFieldState = activeField.get('state'); if (this.activeFieldStates.indexOf(activeFieldState) !== -1) { activeField.set('state', 'candidate'); } else if (activeFieldState === 'changed' || activeFieldState === 'invalid') { activeField.set('state', 'saving'); } if (from === 'invalid') { this.model.set('activeField', fieldModel); accept = false; } } } else if (_.indexOf(this.activeFieldStates, from) !== -1 && to === 'candidate') { if (context && context.reason === 'mouseleave') { accept = false; } } else if ((from === 'changed' || from === 'invalid') && to === 'candidate') { if (context && context.reason === 'mouseleave') { accept = false; } else if (context && context.confirmed) { accept = true; } } } } return accept; }, setupEditor: function setupEditor(fieldModel) { var entityModel = fieldModel.get('entity'); var entityToolbarView = entityModel.toolbarView; var fieldToolbarRoot = entityToolbarView.getToolbarRoot(); var editorName = fieldModel.get('metadata').editor; var editorModel = new Drupal.quickedit.EditorModel(); var editorView = new Drupal.quickedit.editors[editorName]({ el: $(fieldModel.get('el')), model: editorModel, fieldModel: fieldModel }); var toolbarView = new Drupal.quickedit.FieldToolbarView({ el: fieldToolbarRoot, model: fieldModel, $editedElement: $(editorView.getEditedElement()), editorView: editorView, entityModel: entityModel }); var decorationView = new Drupal.quickedit.FieldDecorationView({ el: $(editorView.getEditedElement()), model: fieldModel, editorView: editorView }); fieldModel.editorView = editorView; fieldModel.toolbarView = toolbarView; fieldModel.decorationView = decorationView; }, teardownEditor: function teardownEditor(fieldModel) { if (typeof fieldModel.editorView === 'undefined') { return; } fieldModel.toolbarView.remove(); delete fieldModel.toolbarView; fieldModel.decorationView.remove(); delete fieldModel.decorationView; fieldModel.editorView.remove(); delete fieldModel.editorView; }, confirmEntityDeactivation: function confirmEntityDeactivation(entityModel) { var that = this; var discardDialog = void 0; function closeDiscardDialog(action) { discardDialog.close(action); that.model.set('activeModal', null); if (action === 'save') { entityModel.set('state', 'committing', { confirmed: true }); } else { entityModel.set('state', 'deactivating', { confirmed: true }); if (entityModel.get('reload')) { reload = true; entityModel.set('reload', false); } } } if (!this.model.get('activeModal')) { var $unsavedChanges = $('