/** * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md. */ /* globals ClassicEditor, console, window, document */ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud-services-config'; function AddTargetToExternalLinks( editor ) { editor.conversion.for( 'downcast' ).add( dispatcher => { dispatcher.on( 'attribute:linkHref', ( evt, data, conversionApi ) => { const viewWriter = conversionApi.writer; const viewSelection = viewWriter.document.selection; const viewElement = viewWriter.createAttributeElement( 'a', { target: '_blank' }, { priority: 5 } ); if ( data.attributeNewValue.match( /ckeditor\.com/ ) ) { viewWriter.unwrap( conversionApi.mapper.toViewRange( data.range ), viewElement ); } else { if ( data.item.is( 'selection' ) ) { viewWriter.wrap( viewSelection.getFirstRange(), viewElement ); } else { viewWriter.wrap( conversionApi.mapper.toViewRange( data.range ), viewElement ); } } }, { priority: 'low' } ); } ); } ClassicEditor .create( document.querySelector( '#snippet-link-external' ), { cloudServices: CS_CONFIG, extraPlugins: [ AddTargetToExternalLinks ], toolbar: { viewportTopOffset: window.getViewportTopOffsetConfig() } } ) .then( editor => { window.editor = editor; } ) .catch( err => { console.error( err.stack ); } );