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, debounce, CKEDITOR, $, displace, AjaxCommands) { Chris@0: Drupal.editors.ckeditor = { Chris@0: attach: function attach(element, format) { Chris@0: this._loadExternalPlugins(format); Chris@0: Chris@0: format.editorSettings.drupal = { Chris@0: format: format.format Chris@0: }; Chris@0: Chris@0: var label = $('label[for=' + element.getAttribute('id') + ']').html(); Chris@17: format.editorSettings.title = Drupal.t('Rich Text Editor, !label field', { Chris@17: '!label': label Chris@17: }); Chris@0: Chris@0: return !!CKEDITOR.replace(element, format.editorSettings); Chris@0: }, Chris@0: detach: function detach(element, format, trigger) { Chris@0: var editor = CKEDITOR.dom.element.get(element).getEditor(); Chris@0: if (editor) { Chris@0: if (trigger === 'serialize') { Chris@0: editor.updateElement(); Chris@0: } else { Chris@0: editor.destroy(); Chris@0: element.removeAttribute('contentEditable'); Chris@0: } Chris@0: } Chris@0: return !!editor; Chris@0: }, Chris@0: onChange: function onChange(element, callback) { Chris@0: var editor = CKEDITOR.dom.element.get(element).getEditor(); Chris@0: if (editor) { Chris@0: editor.on('change', debounce(function () { Chris@0: callback(editor.getData()); Chris@0: }, 400)); Chris@0: Chris@0: editor.on('mode', function () { Chris@0: var editable = editor.editable(); Chris@0: if (!editable.isInline()) { Chris@0: editor.on('autoGrow', function (evt) { Chris@0: var doc = evt.editor.document; Chris@0: var scrollable = CKEDITOR.env.quirks ? doc.getBody() : doc.getDocumentElement(); Chris@0: Chris@0: if (scrollable.$.scrollHeight < scrollable.$.clientHeight) { Chris@0: scrollable.setStyle('overflow-y', 'hidden'); Chris@0: } else { Chris@0: scrollable.removeStyle('overflow-y'); Chris@0: } Chris@0: }, null, null, 10000); Chris@0: } Chris@0: }); Chris@0: } Chris@0: return !!editor; Chris@0: }, Chris@0: attachInlineEditor: function attachInlineEditor(element, format, mainToolbarId, floatedToolbarId) { Chris@0: this._loadExternalPlugins(format); Chris@0: Chris@0: format.editorSettings.drupal = { Chris@0: format: format.format Chris@0: }; Chris@0: Chris@0: var settings = $.extend(true, {}, format.editorSettings); Chris@0: Chris@0: if (mainToolbarId) { Chris@0: var settingsOverride = { Chris@0: extraPlugins: 'sharedspace', Chris@0: removePlugins: 'floatingspace,elementspath', Chris@0: sharedSpaces: { Chris@0: top: mainToolbarId Chris@0: } Chris@0: }; Chris@0: Chris@0: var sourceButtonFound = false; Chris@0: for (var i = 0; !sourceButtonFound && i < settings.toolbar.length; i++) { Chris@0: if (settings.toolbar[i] !== '/') { Chris@0: for (var j = 0; !sourceButtonFound && j < settings.toolbar[i].items.length; j++) { Chris@0: if (settings.toolbar[i].items[j] === 'Source') { Chris@0: sourceButtonFound = true; Chris@0: Chris@0: settings.toolbar[i].items[j] = 'Sourcedialog'; Chris@0: settingsOverride.extraPlugins += ',sourcedialog'; Chris@0: settingsOverride.removePlugins += ',sourcearea'; Chris@0: } Chris@0: } Chris@0: } Chris@0: } Chris@0: Chris@0: settings.extraPlugins += ',' + settingsOverride.extraPlugins; Chris@0: settings.removePlugins += ',' + settingsOverride.removePlugins; Chris@0: settings.sharedSpaces = settingsOverride.sharedSpaces; Chris@0: } Chris@0: Chris@0: element.setAttribute('contentEditable', 'true'); Chris@0: Chris@0: return !!CKEDITOR.inline(element, settings); Chris@0: }, Chris@0: _loadExternalPlugins: function _loadExternalPlugins(format) { Chris@0: var externalPlugins = format.editorSettings.drupalExternalPlugins; Chris@0: Chris@0: if (externalPlugins) { Chris@14: Object.keys(externalPlugins || {}).forEach(function (pluginName) { Chris@14: CKEDITOR.plugins.addExternal(pluginName, externalPlugins[pluginName], ''); Chris@14: }); Chris@0: delete format.editorSettings.drupalExternalPlugins; Chris@0: } Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.ckeditor = { Chris@0: saveCallback: null, Chris@0: Chris@0: openDialog: function openDialog(editor, url, existingValues, saveCallback, dialogSettings) { Chris@0: var $target = $(editor.container.$); Chris@0: if (editor.elementMode === CKEDITOR.ELEMENT_MODE_REPLACE) { Chris@0: $target = $target.find('.cke_contents'); Chris@0: } Chris@0: Chris@0: $target.css('position', 'relative').find('.ckeditor-dialog-loading').remove(); Chris@0: Chris@0: var classes = dialogSettings.dialogClass ? dialogSettings.dialogClass.split(' ') : []; Chris@0: classes.push('ui-dialog--narrow'); Chris@0: dialogSettings.dialogClass = classes.join(' '); Chris@0: dialogSettings.autoResize = window.matchMedia('(min-width: 600px)').matches; Chris@0: dialogSettings.width = 'auto'; Chris@0: Chris@0: var $content = $('