Sign up (with export icon)

MediaEmbedConfig

Api-interface iconinterface

The configuration of the media embed features.

Read more about configuring the media embed feature.

ClassicEditor
	.create( {
			mediaEmbed: ... // Media embed feature options.
	} )
	.then( ... )
	.catch( ... );
Copy code

See all editor options.

Properties

  • Chevron-right icon

    elementName : string | undefined

    Overrides the element name used for "semantic" data.

    This is not relevant if config.mediaEmbed.previewsInData is set to true.

    When not set, the feature produces the <oembed> tag:

    <figure class="media">
    	<oembed url="https://url"></oembed>
    </figure>
    
    Copy code

    To override the element name with, for instance, the o-embed name:

    mediaEmbed: {
    	elementName: 'o-embed'
    }
    
    Copy code

    This will produce semantic data with the <o-embed> tag:

    <figure class="media">
    	<o-embed url="https://url"></o-embed>
    </figure>
    
    Copy code

    Defaults to 'oembed'

  • Chevron-right icon

    extraProviders : Array<MediaEmbedProvider> | undefined

    The additional media providers supported by the editor. This configuration helps extend the default providers.

    ClassicEditor
    	.create( {
    		plugins: [ MediaEmbed, ... ],
    		mediaEmbed: {
    			extraProviders: [
    				{
    					 name: 'extraProvider',
    					 url: /^example\.com/media/(\w+)/,
    					 html: match => '...'
    				},
    				...
    				]
    		}
    	} )
    	.then( ... )
    	.catch( ... );
    
    Copy code

    See the provider syntax to learn more.

  • Chevron-right icon

    previewsInData : boolean | undefined

    Controls the data format produced by the feature.

    When false (default), the feature produces "semantic" data, i.e. it does not include the preview of the media, just the <oembed> tag with the url attribute:

    <figure class="media">
    	<oembed url="https://url"></oembed>
    </figure>
    
    Copy code

    When true, the media is represented in the output in the same way it looks in the editor, i.e. the media preview is saved to the database:

    <figure class="media">
    	<div data-oembed-url="https://url">
    		<iframe src="https://preview"></iframe>
    	</div>
    </figure>
    
    Copy code

    Note: Media without preview are always represented in the data using the "semantic" markup regardless of the value of the previewsInData. Learn more about different kinds of media in the config.mediaEmbed.providers configuration description.

    Defaults to false

  • Chevron-right icon

    providers : Array<MediaEmbedProvider> | undefined

    The default media providers supported by the editor.

    The names of providers with rendering functions (previews):

    • "dailymotion",
    • "spotify",
    • "youtube",
    • "vimeo"

    The names of providers without rendering functions:

    • "instagram",
    • "twitter",
    • "googleMaps",
    • "flickr",
    • "facebook"

    See the provider syntax to learn more about different kinds of media and media providers.

    Note: The default media provider configuration may not support all possible media URLs, only the most common are included.

    Media without rendering functions are always represented in the data using the "semantic" markup. See config.mediaEmbed.previewsInData to learn more about possible data outputs.

    The priority of media providers corresponds to the order of configuration. The first provider to match the URL is always used, even if there are other providers that support a particular URL. The URL is never matched against the remaining providers.

    To discard all default media providers, simply override this configuration with your own definitions:

    ClassicEditor
    	.create( {
    		plugins: [ MediaEmbed, ... ],
    		mediaEmbed: {
    			providers: [
    				{
    					 name: 'myProvider',
    					 url: /^example\.com/media/(\w+)/,
    					 html: match => '...'
    				},
    				...
    				]
    		}
    	} )
    	.then( ... )
    	.catch( ... );
    
    Copy code

    You can take inspiration from the default configuration of this feature which you can find in: https://github.com/ckeditor/ckeditor5-media-embed/blob/master/src/mediaembedediting.js

    To extend the list of default providers, use config.mediaEmbed.extraProviders.

    To remove certain providers, use config.mediaEmbed.removeProviders.

  • Chevron-right icon

    removeProviders : Array<string> | undefined

    The list of media providers that should not be used despite being available in config.mediaEmbed.providers and config.mediaEmbed.extraProviders

    mediaEmbed: {
    	removeProviders: [ 'youtube', 'twitter' ]
    }
    
    Copy code
  • Chevron-right icon

    styles : MediaStyleConfig | undefined

    The media embed style feature configuration.

    Available out of the box: five built-in alignment styles — 'alignLeft', 'alignBlockLeft', 'alignCenter' (default), 'alignBlockRight', 'alignRight'.

    Restrict the set to a subset of built-ins:

    mediaEmbed: {
    	styles: {
    		options: [ 'alignBlockLeft', 'alignCenter', 'alignBlockRight' ]
    	}
    }
    
    Copy code

    Override fields of a built-in by re-declaring with the same name:

    mediaEmbed: {
    	styles: {
    		options: [
    			{ name: 'alignCenter', title: 'Center' },
    			'alignLeft',
    			'alignRight'
    		]
    	}
    }
    
    Copy code

    Register a custom (e.g. semantical) style by supplying a complete definition:

    import sideIcon from 'path/to/icon.svg';
    
    mediaEmbed: {
    	styles: {
    		options: [
    			'alignCenter',
    			{
    				name: 'side',
    				title: 'Side media',
    				icon: sideIcon,
    				className: 'media-style-side'
    			}
    		]
    	}
    }
    
    Copy code

    When omitted, all five built-in styles are available.

  • Chevron-right icon

    Items to be placed in the media embed toolbar. This option requires adding MediaEmbedToolbar to the plugin list.

    Each entry is one of:

    • a component name (string) — including the built-in alignment buttons (e.g. 'mediaEmbed:alignCenter') and built-in dropdowns ('mediaEmbed:wrapText', 'mediaEmbed:breakText'),
    • a custom split-button media style dropdown definition (object) following the MediaStyleDropdownDefinition shape — registered alongside the built-in dropdowns and inheriting the same auto-skip / fallback-defaultItem behavior,
    • a generic nested toolbar grouping ({ label, items }) — same shape as in config.toolbar.
    mediaEmbed: {
    	toolbar: [
    		'mediaEmbed:alignCenter',
    		{
    			name: 'mediaEmbed:myAlignments',
    			title: 'Alignment',
    			items: [ 'mediaEmbed:alignBlockLeft', 'mediaEmbed:alignBlockRight' ],
    			defaultItem: 'mediaEmbed:alignBlockLeft'
    		}
    	]
    }
    
    Copy code