/**
  * Return an Ajax dialog command for editing a referenced entity.
  *
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *   An entity being edited.
  *
  * @return \Drupal\Core\Ajax\AjaxResponse
  *   An Ajax response with a command for opening or closing the dialog
  *   containing the edit form.
  */
 public function entityBrowserEdit(EntityInterface $entity)
 {
     // Build the entity edit form.
     $form_object = $this->entityManager()->getFormObject($entity->getEntityTypeId(), 'edit');
     $form_object->setEntity($entity);
     $form_state = (new FormState())->setFormObject($form_object)->disableRedirect();
     // Building the form also submits.
     $form = $this->formBuilder()->buildForm($form_object, $form_state);
     // Return a response, depending on whether it's successfully submitted.
     if (!$form_state->isExecuted()) {
         // Return the form as a modal dialog.
         $form['#attached']['library'][] = 'core/drupal.dialog.ajax';
         $title = $this->t('Edit entity @entity', ['@entity' => $entity->label()]);
         $response = AjaxResponse::create()->addCommand(new OpenModalDialogCommand($title, $form, ['width' => 800]));
         return $response;
     } else {
         // Return command for closing the modal.
         return AjaxResponse::create()->addCommand(new CloseModalDialogCommand());
     }
 }