text: /**
   * @license Copyright (c) 2003-2021, 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 ],
  		ui: {
  			viewportOffset: {
  				top: window.getViewportTopOffsetConfig()
  			}
  		}
  	} )
  	.then( editor => {
  		window.editor = editor;
  	} )
  	.catch( err => {
  		console.error( err.stack );
  	} );
  