acquia_dam-1.0.0-rc1/js/ckeditor5_plugins/mediaRevisions/src/ui.js
js/ckeditor5_plugins/mediaRevisions/src/ui.js
import { Plugin } from 'ckeditor5/src/core'; import { ButtonView } from 'ckeditor5/src/ui'; export default class MediaRevisionsUI extends Plugin { /** * @inheritdoc */ static get requires() { return ['DrupalMediaEditing']; } /** * @inheritdoc */ static get pluginName() { return 'MediaRevisionsUI'; } init() { const { editor } = this; const options = this.editor.config.get('drupalMedia'); const { dialogSettings = {} } = options; editor.ui.componentFactory.add('openMediaRevision', (locale) => { const button = new ButtonView(locale); const command = editor.commands.get('updateMediaRevision'); button.set({ label: Drupal.t('Update media'), withText: true, }) button.bind('isEnabled', 'isVisible').to(command, 'isEnabled', 'isEnabled') const { mediaRevisionDialogUrl } = editor.config.get('drupalMedia'); this.listenTo(button, 'execute', () => { const selectedDrupalMedia = editor.model.document.selection.getSelectedElement(); // @todo use `openDialog` after it allows passing existing values. // @see https://www.drupal.org/project/drupal/issues/3303191. const classes = dialogSettings.dialogClass ? dialogSettings.dialogClass.split(' ') : [] classes.push('ui-dialog--narrow'); dialogSettings.dialogClass = classes.join(' '); dialogSettings.autoResize = window.matchMedia('(min-width: 600px)').matches; dialogSettings.width = 'auto'; const ckeditorAjaxDialog = Drupal.ajax({ dialog: dialogSettings, dialogType: 'modal', selector: '.ckeditor5-dialog-loading-link', url: mediaRevisionDialogUrl, progress: { type: 'fullscreen' }, submit: { editor_object: { attributes: { 'data-entity-uuid': selectedDrupalMedia.getAttribute('drupalMediaEntityUuid'), 'data-entity-revision': selectedDrupalMedia.getAttribute('entityRevision'), 'data-embed-code-id': selectedDrupalMedia.getAttribute('drupalElementStyleMediaEmbedCode') } }, }, }); ckeditorAjaxDialog.execute(); // Store the save callback to be executed when this dialog is closed. Drupal.ckeditor5.saveCallback = (data) => { editor.execute('updateMediaRevision', { entityRevision: data.attributes['data-entity-revision'] }); }; }); return button; }); } }