| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- /**
- * @module media-embed/converters
- */
- import ViewRange from '@ckeditor/ckeditor5-engine/src/view/range';
- import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
- /**
- * Returns a function that converts the model "url" attribute to the view representation.
- *
- * Depending on the configuration, the view representation can be "semantic" (for the data pipeline):
- *
- * <figure class="media">
- * <oembed url="foo"></oembed>
- * </figure>
- *
- * or "non-semantic" (for the editing view pipeline):
- *
- * <figure class="media">
- * <div data-oembed-url="foo">[ non-semantic media preview for "foo" ]</div>
- * </figure>
- *
- * **Note:** Changing the model "url" attribute replaces the entire content of the
- * `<figure>` in the view.
- *
- * @param {module:media-embed/mediaregistry~MediaRegistry} registry The registry providing
- * the media and their content.
- * @param {Object} options
- * @param {String} [options.renderMediaPreview] When `true`, the converter will create the view in the non-semantic form.
- * @param {String} [options.renderForEditingView] When `true`, the converter will create a view specific for the
- * editing pipeline (e.g. including CSS classes, content placeholders).
- * @returns {Function}
- */
- export function modelToViewUrlAttributeConverter( registry, options ) {
- return dispatcher => {
- dispatcher.on( 'attribute:url:media', converter );
- };
- function converter( evt, data, conversionApi ) {
- if ( !conversionApi.consumable.consume( data.item, evt.name ) ) {
- return;
- }
- const url = data.attributeNewValue;
- const viewWriter = conversionApi.writer;
- const figure = conversionApi.mapper.toViewElement( data.item );
- // TODO: removing it and creating it from scratch is a hack. We can do better than that.
- viewWriter.remove( ViewRange.createIn( figure ) );
- const mediaViewElement = registry.getMediaViewElement( viewWriter, url, options );
- viewWriter.insert( ViewPosition.createAt( figure, 0 ), mediaViewElement );
- }
- }
|