/** * wp.media.view.Embed * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var View = require( './view.js' ), EmbedImage = require( './embed/image.js' ), EmbedLink = require( './embed/link.js' ), EmbedUrl = require( './embed/url.js' ), Embed; Embed = View.extend({ className: 'media-embed', initialize: function() { /** * @member {wp.media.view.EmbedUrl} */ this.url = new EmbedUrl({ controller: this.controller, model: this.model.props }).render(); this.views.set([ this.url ]); this.refresh(); this.listenTo( this.model, 'change:type', this.refresh ); this.listenTo( this.model, 'change:loading', this.loading ); }, /** * @param {Object} view */ settings: function( view ) { if ( this._settings ) { this._settings.remove(); } this._settings = view; this.views.add( view ); }, refresh: function() { var type = this.model.get('type'), constructor; if ( 'image' === type ) { constructor = EmbedImage; } else if ( 'link' === type ) { constructor = EmbedLink; } else { return; } this.settings( new constructor({ controller: this.controller, model: this.model.props, priority: 40 }) ); }, loading: function() { this.$el.toggleClass( 'embed-loading', this.model.get('loading') ); } }); module.exports = Embed;