82 /******/ |
82 /******/ |
83 /******/ // Load entry module and return exports |
83 /******/ // Load entry module and return exports |
84 /******/ return __webpack_require__(__webpack_require__.s = 0); |
84 /******/ return __webpack_require__(__webpack_require__.s = 0); |
85 /******/ }) |
85 /******/ }) |
86 /************************************************************************/ |
86 /************************************************************************/ |
87 /******/ ([ |
87 /******/ ({ |
88 /* 0 */ |
88 |
89 /***/ (function(module, exports, __webpack_require__) { |
89 /***/ "+RYg": |
90 |
|
91 module.exports = __webpack_require__(1); |
|
92 |
|
93 |
|
94 /***/ }), |
|
95 /* 1 */ |
|
96 /***/ (function(module, exports, __webpack_require__) { |
|
97 |
|
98 /** |
|
99 * @output wp-includes/js/media-audiovideo.js |
|
100 */ |
|
101 |
|
102 var media = wp.media, |
|
103 baseSettings = window._wpmejsSettings || {}, |
|
104 l10n = window._wpMediaViewsL10n || {}; |
|
105 |
|
106 /** |
|
107 * |
|
108 * Defines the wp.media.mixin object. |
|
109 * |
|
110 * @mixin |
|
111 * |
|
112 * @since 4.2.0 |
|
113 */ |
|
114 wp.media.mixin = { |
|
115 mejsSettings: baseSettings, |
|
116 |
|
117 /** |
|
118 * Pauses and removes all players. |
|
119 * |
|
120 * @since 4.2.0 |
|
121 * |
|
122 * @return {void} |
|
123 */ |
|
124 removeAllPlayers: function() { |
|
125 var p; |
|
126 |
|
127 if ( window.mejs && window.mejs.players ) { |
|
128 for ( p in window.mejs.players ) { |
|
129 window.mejs.players[p].pause(); |
|
130 this.removePlayer( window.mejs.players[p] ); |
|
131 } |
|
132 } |
|
133 }, |
|
134 |
|
135 /** |
|
136 * Removes the player. |
|
137 * |
|
138 * Override the MediaElement method for removing a player. |
|
139 * MediaElement tries to pull the audio/video tag out of |
|
140 * its container and re-add it to the DOM. |
|
141 * |
|
142 * @since 4.2.0 |
|
143 * |
|
144 * @return {void} |
|
145 */ |
|
146 removePlayer: function(t) { |
|
147 var featureIndex, feature; |
|
148 |
|
149 if ( ! t.options ) { |
|
150 return; |
|
151 } |
|
152 |
|
153 // Invoke features cleanup. |
|
154 for ( featureIndex in t.options.features ) { |
|
155 feature = t.options.features[featureIndex]; |
|
156 if ( t['clean' + feature] ) { |
|
157 try { |
|
158 t['clean' + feature](t); |
|
159 } catch (e) {} |
|
160 } |
|
161 } |
|
162 |
|
163 if ( ! t.isDynamic ) { |
|
164 t.node.remove(); |
|
165 } |
|
166 |
|
167 if ( 'html5' !== t.media.rendererName ) { |
|
168 t.media.remove(); |
|
169 } |
|
170 |
|
171 delete window.mejs.players[t.id]; |
|
172 |
|
173 t.container.remove(); |
|
174 t.globalUnbind('resize', t.globalResizeCallback); |
|
175 t.globalUnbind('keydown', t.globalKeydownCallback); |
|
176 t.globalUnbind('click', t.globalClickCallback); |
|
177 delete t.media.player; |
|
178 }, |
|
179 |
|
180 /** |
|
181 * |
|
182 * Removes and resets all players. |
|
183 * |
|
184 * Allows any class that has set 'player' to a MediaElementPlayer |
|
185 * instance to remove the player when listening to events. |
|
186 * |
|
187 * Examples: modal closes, shortcode properties are removed, etc. |
|
188 * |
|
189 * @since 4.2.0 |
|
190 */ |
|
191 unsetPlayers : function() { |
|
192 if ( this.players && this.players.length ) { |
|
193 _.each( this.players, function (player) { |
|
194 player.pause(); |
|
195 wp.media.mixin.removePlayer( player ); |
|
196 } ); |
|
197 this.players = []; |
|
198 } |
|
199 } |
|
200 }; |
|
201 |
|
202 /** |
|
203 * Shortcode modeling for playlists. |
|
204 * |
|
205 * @since 4.2.0 |
|
206 */ |
|
207 wp.media.playlist = new wp.media.collection({ |
|
208 tag: 'playlist', |
|
209 editTitle : l10n.editPlaylistTitle, |
|
210 defaults : { |
|
211 id: wp.media.view.settings.post.id, |
|
212 style: 'light', |
|
213 tracklist: true, |
|
214 tracknumbers: true, |
|
215 images: true, |
|
216 artists: true, |
|
217 type: 'audio' |
|
218 } |
|
219 }); |
|
220 |
|
221 /** |
|
222 * Shortcode modeling for audio. |
|
223 * |
|
224 * `edit()` prepares the shortcode for the media modal. |
|
225 * `shortcode()` builds the new shortcode after an update. |
|
226 * |
|
227 * @namespace |
|
228 * |
|
229 * @since 4.2.0 |
|
230 */ |
|
231 wp.media.audio = { |
|
232 coerce : wp.media.coerce, |
|
233 |
|
234 defaults : { |
|
235 id : wp.media.view.settings.post.id, |
|
236 src : '', |
|
237 loop : false, |
|
238 autoplay : false, |
|
239 preload : 'none', |
|
240 width : 400 |
|
241 }, |
|
242 |
|
243 /** |
|
244 * Instantiates a new media object with the next matching shortcode. |
|
245 * |
|
246 * @since 4.2.0 |
|
247 * |
|
248 * @param {string} data The text to apply the shortcode on. |
|
249 * @return {wp.media} The media object. |
|
250 */ |
|
251 edit : function( data ) { |
|
252 var frame, shortcode = wp.shortcode.next( 'audio', data ).shortcode; |
|
253 |
|
254 frame = wp.media({ |
|
255 frame: 'audio', |
|
256 state: 'audio-details', |
|
257 metadata: _.defaults( shortcode.attrs.named, this.defaults ) |
|
258 }); |
|
259 |
|
260 return frame; |
|
261 }, |
|
262 |
|
263 /** |
|
264 * Generates an audio shortcode. |
|
265 * |
|
266 * @since 4.2.0 |
|
267 * |
|
268 * @param {Array} model Array with attributes for the shortcode. |
|
269 * @return {wp.shortcode} The audio shortcode object. |
|
270 */ |
|
271 shortcode : function( model ) { |
|
272 var content; |
|
273 |
|
274 _.each( this.defaults, function( value, key ) { |
|
275 model[ key ] = this.coerce( model, key ); |
|
276 |
|
277 if ( value === model[ key ] ) { |
|
278 delete model[ key ]; |
|
279 } |
|
280 }, this ); |
|
281 |
|
282 content = model.content; |
|
283 delete model.content; |
|
284 |
|
285 return new wp.shortcode({ |
|
286 tag: 'audio', |
|
287 attrs: model, |
|
288 content: content |
|
289 }); |
|
290 } |
|
291 }; |
|
292 |
|
293 /** |
|
294 * Shortcode modeling for video. |
|
295 * |
|
296 * `edit()` prepares the shortcode for the media modal. |
|
297 * `shortcode()` builds the new shortcode after update. |
|
298 * |
|
299 * @since 4.2.0 |
|
300 * |
|
301 * @namespace |
|
302 */ |
|
303 wp.media.video = { |
|
304 coerce : wp.media.coerce, |
|
305 |
|
306 defaults : { |
|
307 id : wp.media.view.settings.post.id, |
|
308 src : '', |
|
309 poster : '', |
|
310 loop : false, |
|
311 autoplay : false, |
|
312 preload : 'metadata', |
|
313 content : '', |
|
314 width : 640, |
|
315 height : 360 |
|
316 }, |
|
317 |
|
318 /** |
|
319 * Instantiates a new media object with the next matching shortcode. |
|
320 * |
|
321 * @since 4.2.0 |
|
322 * |
|
323 * @param {string} data The text to apply the shortcode on. |
|
324 * @return {wp.media} The media object. |
|
325 */ |
|
326 edit : function( data ) { |
|
327 var frame, |
|
328 shortcode = wp.shortcode.next( 'video', data ).shortcode, |
|
329 attrs; |
|
330 |
|
331 attrs = shortcode.attrs.named; |
|
332 attrs.content = shortcode.content; |
|
333 |
|
334 frame = wp.media({ |
|
335 frame: 'video', |
|
336 state: 'video-details', |
|
337 metadata: _.defaults( attrs, this.defaults ) |
|
338 }); |
|
339 |
|
340 return frame; |
|
341 }, |
|
342 |
|
343 /** |
|
344 * Generates an video shortcode. |
|
345 * |
|
346 * @since 4.2.0 |
|
347 * |
|
348 * @param {Array} model Array with attributes for the shortcode. |
|
349 * @return {wp.shortcode} The video shortcode object. |
|
350 */ |
|
351 shortcode : function( model ) { |
|
352 var content; |
|
353 |
|
354 _.each( this.defaults, function( value, key ) { |
|
355 model[ key ] = this.coerce( model, key ); |
|
356 |
|
357 if ( value === model[ key ] ) { |
|
358 delete model[ key ]; |
|
359 } |
|
360 }, this ); |
|
361 |
|
362 content = model.content; |
|
363 delete model.content; |
|
364 |
|
365 return new wp.shortcode({ |
|
366 tag: 'video', |
|
367 attrs: model, |
|
368 content: content |
|
369 }); |
|
370 } |
|
371 }; |
|
372 |
|
373 media.model.PostMedia = __webpack_require__( 2 ); |
|
374 media.controller.AudioDetails = __webpack_require__( 3 ); |
|
375 media.controller.VideoDetails = __webpack_require__( 4 ); |
|
376 media.view.MediaFrame.MediaDetails = __webpack_require__( 5 ); |
|
377 media.view.MediaFrame.AudioDetails = __webpack_require__( 6 ); |
|
378 media.view.MediaFrame.VideoDetails = __webpack_require__( 7 ); |
|
379 media.view.MediaDetails = __webpack_require__( 8 ); |
|
380 media.view.AudioDetails = __webpack_require__( 9 ); |
|
381 media.view.VideoDetails = __webpack_require__( 10 ); |
|
382 |
|
383 |
|
384 /***/ }), |
|
385 /* 2 */ |
|
386 /***/ (function(module, exports) { |
90 /***/ (function(module, exports) { |
387 |
91 |
388 /** |
92 /** |
389 * wp.media.model.PostMedia |
93 * wp.media.model.PostMedia |
390 * |
94 * |
428 |
132 |
429 module.exports = PostMedia; |
133 module.exports = PostMedia; |
430 |
134 |
431 |
135 |
432 /***/ }), |
136 /***/ }), |
433 /* 3 */ |
137 |
|
138 /***/ "/4UI": |
|
139 /***/ (function(module, exports) { |
|
140 |
|
141 /* global MediaElementPlayer */ |
|
142 var AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay, |
|
143 $ = jQuery, |
|
144 MediaDetails; |
|
145 |
|
146 /** |
|
147 * wp.media.view.MediaDetails |
|
148 * |
|
149 * @memberOf wp.media.view |
|
150 * |
|
151 * @class |
|
152 * @augments wp.media.view.Settings.AttachmentDisplay |
|
153 * @augments wp.media.view.Settings |
|
154 * @augments wp.media.View |
|
155 * @augments wp.Backbone.View |
|
156 * @augments Backbone.View |
|
157 */ |
|
158 MediaDetails = AttachmentDisplay.extend(/** @lends wp.media.view.MediaDetails.prototype */{ |
|
159 initialize: function() { |
|
160 _.bindAll(this, 'success'); |
|
161 this.players = []; |
|
162 this.listenTo( this.controller.states, 'close', wp.media.mixin.unsetPlayers ); |
|
163 this.on( 'ready', this.setPlayer ); |
|
164 this.on( 'media:setting:remove', wp.media.mixin.unsetPlayers, this ); |
|
165 this.on( 'media:setting:remove', this.render ); |
|
166 this.on( 'media:setting:remove', this.setPlayer ); |
|
167 |
|
168 AttachmentDisplay.prototype.initialize.apply( this, arguments ); |
|
169 }, |
|
170 |
|
171 events: function(){ |
|
172 return _.extend( { |
|
173 'click .remove-setting' : 'removeSetting', |
|
174 'change .content-track' : 'setTracks', |
|
175 'click .remove-track' : 'setTracks', |
|
176 'click .add-media-source' : 'addSource' |
|
177 }, AttachmentDisplay.prototype.events ); |
|
178 }, |
|
179 |
|
180 prepare: function() { |
|
181 return _.defaults({ |
|
182 model: this.model.toJSON() |
|
183 }, this.options ); |
|
184 }, |
|
185 |
|
186 /** |
|
187 * Remove a setting's UI when the model unsets it |
|
188 * |
|
189 * @fires wp.media.view.MediaDetails#media:setting:remove |
|
190 * |
|
191 * @param {Event} e |
|
192 */ |
|
193 removeSetting : function(e) { |
|
194 var wrap = $( e.currentTarget ).parent(), setting; |
|
195 setting = wrap.find( 'input' ).data( 'setting' ); |
|
196 |
|
197 if ( setting ) { |
|
198 this.model.unset( setting ); |
|
199 this.trigger( 'media:setting:remove', this ); |
|
200 } |
|
201 |
|
202 wrap.remove(); |
|
203 }, |
|
204 |
|
205 /** |
|
206 * |
|
207 * @fires wp.media.view.MediaDetails#media:setting:remove |
|
208 */ |
|
209 setTracks : function() { |
|
210 var tracks = ''; |
|
211 |
|
212 _.each( this.$('.content-track'), function(track) { |
|
213 tracks += $( track ).val(); |
|
214 } ); |
|
215 |
|
216 this.model.set( 'content', tracks ); |
|
217 this.trigger( 'media:setting:remove', this ); |
|
218 }, |
|
219 |
|
220 addSource : function( e ) { |
|
221 this.controller.lastMime = $( e.currentTarget ).data( 'mime' ); |
|
222 this.controller.setState( 'add-' + this.controller.defaults.id + '-source' ); |
|
223 }, |
|
224 |
|
225 loadPlayer: function () { |
|
226 this.players.push( new MediaElementPlayer( this.media, this.settings ) ); |
|
227 this.scriptXhr = false; |
|
228 }, |
|
229 |
|
230 setPlayer : function() { |
|
231 var src; |
|
232 |
|
233 if ( this.players.length || ! this.media || this.scriptXhr ) { |
|
234 return; |
|
235 } |
|
236 |
|
237 src = this.model.get( 'src' ); |
|
238 |
|
239 if ( src && src.indexOf( 'vimeo' ) > -1 && ! ( 'Vimeo' in window ) ) { |
|
240 this.scriptXhr = $.getScript( 'https://player.vimeo.com/api/player.js', _.bind( this.loadPlayer, this ) ); |
|
241 } else { |
|
242 this.loadPlayer(); |
|
243 } |
|
244 }, |
|
245 |
|
246 /** |
|
247 * @abstract |
|
248 */ |
|
249 setMedia : function() { |
|
250 return this; |
|
251 }, |
|
252 |
|
253 success : function(mejs) { |
|
254 var autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; |
|
255 |
|
256 if ( 'flash' === mejs.pluginType && autoplay ) { |
|
257 mejs.addEventListener( 'canplay', function() { |
|
258 mejs.play(); |
|
259 }, false ); |
|
260 } |
|
261 |
|
262 this.mejs = mejs; |
|
263 }, |
|
264 |
|
265 /** |
|
266 * @return {media.view.MediaDetails} Returns itself to allow chaining. |
|
267 */ |
|
268 render: function() { |
|
269 AttachmentDisplay.prototype.render.apply( this, arguments ); |
|
270 |
|
271 setTimeout( _.bind( function() { |
|
272 this.scrollToTop(); |
|
273 }, this ), 10 ); |
|
274 |
|
275 this.settings = _.defaults( { |
|
276 success : this.success |
|
277 }, wp.media.mixin.mejsSettings ); |
|
278 |
|
279 return this.setMedia(); |
|
280 }, |
|
281 |
|
282 scrollToTop: function() { |
|
283 this.$( '.embed-media-settings' ).scrollTop( 0 ); |
|
284 } |
|
285 },/** @lends wp.media.view.MediaDetails */{ |
|
286 instances : 0, |
|
287 /** |
|
288 * When multiple players in the DOM contain the same src, things get weird. |
|
289 * |
|
290 * @param {HTMLElement} elem |
|
291 * @return {HTMLElement} |
|
292 */ |
|
293 prepareSrc : function( elem ) { |
|
294 var i = MediaDetails.instances++; |
|
295 _.each( $( elem ).find( 'source' ), function( source ) { |
|
296 source.src = [ |
|
297 source.src, |
|
298 source.src.indexOf('?') > -1 ? '&' : '?', |
|
299 '_=', |
|
300 i |
|
301 ].join(''); |
|
302 } ); |
|
303 |
|
304 return elem; |
|
305 } |
|
306 }); |
|
307 |
|
308 module.exports = MediaDetails; |
|
309 |
|
310 |
|
311 /***/ }), |
|
312 |
|
313 /***/ 0: |
|
314 /***/ (function(module, exports, __webpack_require__) { |
|
315 |
|
316 module.exports = __webpack_require__("pMD9"); |
|
317 |
|
318 |
|
319 /***/ }), |
|
320 |
|
321 /***/ "6pp6": |
434 /***/ (function(module, exports) { |
322 /***/ (function(module, exports) { |
435 |
323 |
436 var State = wp.media.controller.State, |
324 var State = wp.media.controller.State, |
437 l10n = wp.media.view.l10n, |
325 l10n = wp.media.view.l10n, |
438 AudioDetails; |
326 AudioDetails; |
467 |
355 |
468 module.exports = AudioDetails; |
356 module.exports = AudioDetails; |
469 |
357 |
470 |
358 |
471 /***/ }), |
359 /***/ }), |
472 /* 4 */ |
360 |
|
361 /***/ "Bdio": |
473 /***/ (function(module, exports) { |
362 /***/ (function(module, exports) { |
474 |
363 |
475 /** |
364 var MediaDetails = wp.media.view.MediaFrame.MediaDetails, |
476 * wp.media.controller.VideoDetails |
365 MediaLibrary = wp.media.controller.MediaLibrary, |
477 * |
366 |
478 * The controller for the Video Details state |
367 l10n = wp.media.view.l10n, |
479 * |
368 AudioDetails; |
480 * @memberOf wp.media.controller |
369 |
|
370 /** |
|
371 * wp.media.view.MediaFrame.AudioDetails |
|
372 * |
|
373 * @memberOf wp.media.view.MediaFrame |
481 * |
374 * |
482 * @class |
375 * @class |
483 * @augments wp.media.controller.State |
376 * @augments wp.media.view.MediaFrame.MediaDetails |
484 * @augments Backbone.Model |
377 * @augments wp.media.view.MediaFrame.Select |
485 */ |
378 * @augments wp.media.view.MediaFrame |
486 var State = wp.media.controller.State, |
379 * @augments wp.media.view.Frame |
487 l10n = wp.media.view.l10n, |
380 * @augments wp.media.View |
|
381 * @augments wp.Backbone.View |
|
382 * @augments Backbone.View |
|
383 * @mixes wp.media.controller.StateMachine |
|
384 */ |
|
385 AudioDetails = MediaDetails.extend(/** @lends wp.media.view.MediaFrame.AudioDetails.prototype */{ |
|
386 defaults: { |
|
387 id: 'audio', |
|
388 url: '', |
|
389 menu: 'audio-details', |
|
390 content: 'audio-details', |
|
391 toolbar: 'audio-details', |
|
392 type: 'link', |
|
393 title: l10n.audioDetailsTitle, |
|
394 priority: 120 |
|
395 }, |
|
396 |
|
397 initialize: function( options ) { |
|
398 options.DetailsView = wp.media.view.AudioDetails; |
|
399 options.cancelText = l10n.audioDetailsCancel; |
|
400 options.addText = l10n.audioAddSourceTitle; |
|
401 |
|
402 MediaDetails.prototype.initialize.call( this, options ); |
|
403 }, |
|
404 |
|
405 bindHandlers: function() { |
|
406 MediaDetails.prototype.bindHandlers.apply( this, arguments ); |
|
407 |
|
408 this.on( 'toolbar:render:replace-audio', this.renderReplaceToolbar, this ); |
|
409 this.on( 'toolbar:render:add-audio-source', this.renderAddSourceToolbar, this ); |
|
410 }, |
|
411 |
|
412 createStates: function() { |
|
413 this.states.add([ |
|
414 new wp.media.controller.AudioDetails( { |
|
415 media: this.media |
|
416 } ), |
|
417 |
|
418 new MediaLibrary( { |
|
419 type: 'audio', |
|
420 id: 'replace-audio', |
|
421 title: l10n.audioReplaceTitle, |
|
422 toolbar: 'replace-audio', |
|
423 media: this.media, |
|
424 menu: 'audio-details' |
|
425 } ), |
|
426 |
|
427 new MediaLibrary( { |
|
428 type: 'audio', |
|
429 id: 'add-audio-source', |
|
430 title: l10n.audioAddSourceTitle, |
|
431 toolbar: 'add-audio-source', |
|
432 media: this.media, |
|
433 menu: false |
|
434 } ) |
|
435 ]); |
|
436 } |
|
437 }); |
|
438 |
|
439 module.exports = AudioDetails; |
|
440 |
|
441 |
|
442 /***/ }), |
|
443 |
|
444 /***/ "LX3m": |
|
445 /***/ (function(module, exports) { |
|
446 |
|
447 var MediaDetails = wp.media.view.MediaDetails, |
|
448 AudioDetails; |
|
449 |
|
450 /** |
|
451 * wp.media.view.AudioDetails |
|
452 * |
|
453 * @memberOf wp.media.view |
|
454 * |
|
455 * @class |
|
456 * @augments wp.media.view.MediaDetails |
|
457 * @augments wp.media.view.Settings.AttachmentDisplay |
|
458 * @augments wp.media.view.Settings |
|
459 * @augments wp.media.View |
|
460 * @augments wp.Backbone.View |
|
461 * @augments Backbone.View |
|
462 */ |
|
463 AudioDetails = MediaDetails.extend(/** @lends wp.media.view.AudioDetails.prototype */{ |
|
464 className: 'audio-details', |
|
465 template: wp.template('audio-details'), |
|
466 |
|
467 setMedia: function() { |
|
468 var audio = this.$('.wp-audio-shortcode'); |
|
469 |
|
470 if ( audio.find( 'source' ).length ) { |
|
471 if ( audio.is(':hidden') ) { |
|
472 audio.show(); |
|
473 } |
|
474 this.media = MediaDetails.prepareSrc( audio.get(0) ); |
|
475 } else { |
|
476 audio.hide(); |
|
477 this.media = false; |
|
478 } |
|
479 |
|
480 return this; |
|
481 } |
|
482 }); |
|
483 |
|
484 module.exports = AudioDetails; |
|
485 |
|
486 |
|
487 /***/ }), |
|
488 |
|
489 /***/ "MT9K": |
|
490 /***/ (function(module, exports) { |
|
491 |
|
492 var MediaDetails = wp.media.view.MediaDetails, |
488 VideoDetails; |
493 VideoDetails; |
489 |
494 |
490 VideoDetails = State.extend(/** @lends wp.media.controller.VideoDetails.prototype */{ |
495 /** |
491 defaults: { |
496 * wp.media.view.VideoDetails |
492 id: 'video-details', |
497 * |
493 toolbar: 'video-details', |
498 * @memberOf wp.media.view |
494 title: l10n.videoDetailsTitle, |
499 * |
495 content: 'video-details', |
500 * @class |
496 menu: 'video-details', |
501 * @augments wp.media.view.MediaDetails |
497 router: false, |
502 * @augments wp.media.view.Settings.AttachmentDisplay |
498 priority: 60 |
503 * @augments wp.media.view.Settings |
499 }, |
504 * @augments wp.media.View |
500 |
505 * @augments wp.Backbone.View |
501 initialize: function( options ) { |
506 * @augments Backbone.View |
502 this.media = options.media; |
507 */ |
503 State.prototype.initialize.apply( this, arguments ); |
508 VideoDetails = MediaDetails.extend(/** @lends wp.media.view.VideoDetails.prototype */{ |
|
509 className: 'video-details', |
|
510 template: wp.template('video-details'), |
|
511 |
|
512 setMedia: function() { |
|
513 var video = this.$('.wp-video-shortcode'); |
|
514 |
|
515 if ( video.find( 'source' ).length ) { |
|
516 if ( video.is(':hidden') ) { |
|
517 video.show(); |
|
518 } |
|
519 |
|
520 if ( ! video.hasClass( 'youtube-video' ) && ! video.hasClass( 'vimeo-video' ) ) { |
|
521 this.media = MediaDetails.prepareSrc( video.get(0) ); |
|
522 } else { |
|
523 this.media = video.get(0); |
|
524 } |
|
525 } else { |
|
526 video.hide(); |
|
527 this.media = false; |
|
528 } |
|
529 |
|
530 return this; |
504 } |
531 } |
505 }); |
532 }); |
506 |
533 |
507 module.exports = VideoDetails; |
534 module.exports = VideoDetails; |
508 |
535 |
509 |
536 |
510 /***/ }), |
537 /***/ }), |
511 /* 5 */ |
538 |
|
539 /***/ "RQe2": |
512 /***/ (function(module, exports) { |
540 /***/ (function(module, exports) { |
513 |
541 |
514 var Select = wp.media.view.MediaFrame.Select, |
542 var Select = wp.media.view.MediaFrame.Select, |
515 l10n = wp.media.view.l10n, |
543 l10n = wp.media.view.l10n, |
516 MediaDetails; |
544 MediaDetails; |
642 |
670 |
643 module.exports = MediaDetails; |
671 module.exports = MediaDetails; |
644 |
672 |
645 |
673 |
646 /***/ }), |
674 /***/ }), |
647 /* 6 */ |
675 |
|
676 /***/ "Xcj4": |
648 /***/ (function(module, exports) { |
677 /***/ (function(module, exports) { |
649 |
678 |
650 var MediaDetails = wp.media.view.MediaFrame.MediaDetails, |
679 /** |
651 MediaLibrary = wp.media.controller.MediaLibrary, |
680 * wp.media.controller.VideoDetails |
652 |
681 * |
|
682 * The controller for the Video Details state |
|
683 * |
|
684 * @memberOf wp.media.controller |
|
685 * |
|
686 * @class |
|
687 * @augments wp.media.controller.State |
|
688 * @augments Backbone.Model |
|
689 */ |
|
690 var State = wp.media.controller.State, |
653 l10n = wp.media.view.l10n, |
691 l10n = wp.media.view.l10n, |
654 AudioDetails; |
692 VideoDetails; |
655 |
693 |
656 /** |
694 VideoDetails = State.extend(/** @lends wp.media.controller.VideoDetails.prototype */{ |
657 * wp.media.view.MediaFrame.AudioDetails |
|
658 * |
|
659 * @memberOf wp.media.view.MediaFrame |
|
660 * |
|
661 * @class |
|
662 * @augments wp.media.view.MediaFrame.MediaDetails |
|
663 * @augments wp.media.view.MediaFrame.Select |
|
664 * @augments wp.media.view.MediaFrame |
|
665 * @augments wp.media.view.Frame |
|
666 * @augments wp.media.View |
|
667 * @augments wp.Backbone.View |
|
668 * @augments Backbone.View |
|
669 * @mixes wp.media.controller.StateMachine |
|
670 */ |
|
671 AudioDetails = MediaDetails.extend(/** @lends wp.media.view.MediaFrame.AudioDetails.prototype */{ |
|
672 defaults: { |
695 defaults: { |
673 id: 'audio', |
696 id: 'video-details', |
674 url: '', |
697 toolbar: 'video-details', |
675 menu: 'audio-details', |
698 title: l10n.videoDetailsTitle, |
676 content: 'audio-details', |
699 content: 'video-details', |
677 toolbar: 'audio-details', |
700 menu: 'video-details', |
678 type: 'link', |
701 router: false, |
679 title: l10n.audioDetailsTitle, |
702 priority: 60 |
680 priority: 120 |
|
681 }, |
703 }, |
682 |
704 |
683 initialize: function( options ) { |
705 initialize: function( options ) { |
684 options.DetailsView = wp.media.view.AudioDetails; |
706 this.media = options.media; |
685 options.cancelText = l10n.audioDetailsCancel; |
707 State.prototype.initialize.apply( this, arguments ); |
686 options.addText = l10n.audioAddSourceTitle; |
|
687 |
|
688 MediaDetails.prototype.initialize.call( this, options ); |
|
689 }, |
|
690 |
|
691 bindHandlers: function() { |
|
692 MediaDetails.prototype.bindHandlers.apply( this, arguments ); |
|
693 |
|
694 this.on( 'toolbar:render:replace-audio', this.renderReplaceToolbar, this ); |
|
695 this.on( 'toolbar:render:add-audio-source', this.renderAddSourceToolbar, this ); |
|
696 }, |
|
697 |
|
698 createStates: function() { |
|
699 this.states.add([ |
|
700 new wp.media.controller.AudioDetails( { |
|
701 media: this.media |
|
702 } ), |
|
703 |
|
704 new MediaLibrary( { |
|
705 type: 'audio', |
|
706 id: 'replace-audio', |
|
707 title: l10n.audioReplaceTitle, |
|
708 toolbar: 'replace-audio', |
|
709 media: this.media, |
|
710 menu: 'audio-details' |
|
711 } ), |
|
712 |
|
713 new MediaLibrary( { |
|
714 type: 'audio', |
|
715 id: 'add-audio-source', |
|
716 title: l10n.audioAddSourceTitle, |
|
717 toolbar: 'add-audio-source', |
|
718 media: this.media, |
|
719 menu: false |
|
720 } ) |
|
721 ]); |
|
722 } |
708 } |
723 }); |
709 }); |
724 |
710 |
725 module.exports = AudioDetails; |
711 module.exports = VideoDetails; |
726 |
712 |
727 |
713 |
728 /***/ }), |
714 /***/ }), |
729 /* 7 */ |
715 |
|
716 /***/ "m85o": |
730 /***/ (function(module, exports) { |
717 /***/ (function(module, exports) { |
731 |
718 |
732 var MediaDetails = wp.media.view.MediaFrame.MediaDetails, |
719 var MediaDetails = wp.media.view.MediaFrame.MediaDetails, |
733 MediaLibrary = wp.media.controller.MediaLibrary, |
720 MediaLibrary = wp.media.controller.MediaLibrary, |
734 l10n = wp.media.view.l10n, |
721 l10n = wp.media.view.l10n, |
865 |
852 |
866 module.exports = VideoDetails; |
853 module.exports = VideoDetails; |
867 |
854 |
868 |
855 |
869 /***/ }), |
856 /***/ }), |
870 /* 8 */ |
857 |
871 /***/ (function(module, exports) { |
858 /***/ "pMD9": |
872 |
859 /***/ (function(module, exports, __webpack_require__) { |
873 /* global MediaElementPlayer */ |
860 |
874 var AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay, |
861 /** |
875 $ = jQuery, |
862 * @output wp-includes/js/media-audiovideo.js |
876 MediaDetails; |
863 */ |
877 |
864 |
878 /** |
865 var media = wp.media, |
879 * wp.media.view.MediaDetails |
866 baseSettings = window._wpmejsSettings || {}, |
880 * |
867 l10n = window._wpMediaViewsL10n || {}; |
881 * @memberOf wp.media.view |
868 |
882 * |
869 /** |
883 * @class |
870 * |
884 * @augments wp.media.view.Settings.AttachmentDisplay |
871 * Defines the wp.media.mixin object. |
885 * @augments wp.media.view.Settings |
872 * |
886 * @augments wp.media.View |
873 * @mixin |
887 * @augments wp.Backbone.View |
874 * |
888 * @augments Backbone.View |
875 * @since 4.2.0 |
889 */ |
876 */ |
890 MediaDetails = AttachmentDisplay.extend(/** @lends wp.media.view.MediaDetails.prototype */{ |
877 wp.media.mixin = { |
891 initialize: function() { |
878 mejsSettings: baseSettings, |
892 _.bindAll(this, 'success'); |
|
893 this.players = []; |
|
894 this.listenTo( this.controller.states, 'close', wp.media.mixin.unsetPlayers ); |
|
895 this.on( 'ready', this.setPlayer ); |
|
896 this.on( 'media:setting:remove', wp.media.mixin.unsetPlayers, this ); |
|
897 this.on( 'media:setting:remove', this.render ); |
|
898 this.on( 'media:setting:remove', this.setPlayer ); |
|
899 |
|
900 AttachmentDisplay.prototype.initialize.apply( this, arguments ); |
|
901 }, |
|
902 |
|
903 events: function(){ |
|
904 return _.extend( { |
|
905 'click .remove-setting' : 'removeSetting', |
|
906 'change .content-track' : 'setTracks', |
|
907 'click .remove-track' : 'setTracks', |
|
908 'click .add-media-source' : 'addSource' |
|
909 }, AttachmentDisplay.prototype.events ); |
|
910 }, |
|
911 |
|
912 prepare: function() { |
|
913 return _.defaults({ |
|
914 model: this.model.toJSON() |
|
915 }, this.options ); |
|
916 }, |
|
917 |
879 |
918 /** |
880 /** |
919 * Remove a setting's UI when the model unsets it |
881 * Pauses and removes all players. |
920 * |
882 * |
921 * @fires wp.media.view.MediaDetails#media:setting:remove |
883 * @since 4.2.0 |
922 * |
884 * |
923 * @param {Event} e |
885 * @return {void} |
924 */ |
886 */ |
925 removeSetting : function(e) { |
887 removeAllPlayers: function() { |
926 var wrap = $( e.currentTarget ).parent(), setting; |
888 var p; |
927 setting = wrap.find( 'input' ).data( 'setting' ); |
889 |
928 |
890 if ( window.mejs && window.mejs.players ) { |
929 if ( setting ) { |
891 for ( p in window.mejs.players ) { |
930 this.model.unset( setting ); |
892 window.mejs.players[p].pause(); |
931 this.trigger( 'media:setting:remove', this ); |
893 this.removePlayer( window.mejs.players[p] ); |
932 } |
894 } |
933 |
895 } |
934 wrap.remove(); |
|
935 }, |
896 }, |
936 |
897 |
937 /** |
898 /** |
938 * |
899 * Removes the player. |
939 * @fires wp.media.view.MediaDetails#media:setting:remove |
900 * |
|
901 * Override the MediaElement method for removing a player. |
|
902 * MediaElement tries to pull the audio/video tag out of |
|
903 * its container and re-add it to the DOM. |
|
904 * |
|
905 * @since 4.2.0 |
|
906 * |
|
907 * @return {void} |
940 */ |
908 */ |
941 setTracks : function() { |
909 removePlayer: function(t) { |
942 var tracks = ''; |
910 var featureIndex, feature; |
943 |
911 |
944 _.each( this.$('.content-track'), function(track) { |
912 if ( ! t.options ) { |
945 tracks += $( track ).val(); |
|
946 } ); |
|
947 |
|
948 this.model.set( 'content', tracks ); |
|
949 this.trigger( 'media:setting:remove', this ); |
|
950 }, |
|
951 |
|
952 addSource : function( e ) { |
|
953 this.controller.lastMime = $( e.currentTarget ).data( 'mime' ); |
|
954 this.controller.setState( 'add-' + this.controller.defaults.id + '-source' ); |
|
955 }, |
|
956 |
|
957 loadPlayer: function () { |
|
958 this.players.push( new MediaElementPlayer( this.media, this.settings ) ); |
|
959 this.scriptXhr = false; |
|
960 }, |
|
961 |
|
962 setPlayer : function() { |
|
963 var src; |
|
964 |
|
965 if ( this.players.length || ! this.media || this.scriptXhr ) { |
|
966 return; |
913 return; |
967 } |
914 } |
968 |
915 |
969 src = this.model.get( 'src' ); |
916 // Invoke features cleanup. |
970 |
917 for ( featureIndex in t.options.features ) { |
971 if ( src && src.indexOf( 'vimeo' ) > -1 && ! ( 'Vimeo' in window ) ) { |
918 feature = t.options.features[featureIndex]; |
972 this.scriptXhr = $.getScript( 'https://player.vimeo.com/api/player.js', _.bind( this.loadPlayer, this ) ); |
919 if ( t['clean' + feature] ) { |
973 } else { |
920 try { |
974 this.loadPlayer(); |
921 t['clean' + feature](t); |
975 } |
922 } catch (e) {} |
|
923 } |
|
924 } |
|
925 |
|
926 if ( ! t.isDynamic ) { |
|
927 t.node.remove(); |
|
928 } |
|
929 |
|
930 if ( 'html5' !== t.media.rendererName ) { |
|
931 t.media.remove(); |
|
932 } |
|
933 |
|
934 delete window.mejs.players[t.id]; |
|
935 |
|
936 t.container.remove(); |
|
937 t.globalUnbind('resize', t.globalResizeCallback); |
|
938 t.globalUnbind('keydown', t.globalKeydownCallback); |
|
939 t.globalUnbind('click', t.globalClickCallback); |
|
940 delete t.media.player; |
976 }, |
941 }, |
977 |
942 |
978 /** |
943 /** |
979 * @abstract |
944 * |
|
945 * Removes and resets all players. |
|
946 * |
|
947 * Allows any class that has set 'player' to a MediaElementPlayer |
|
948 * instance to remove the player when listening to events. |
|
949 * |
|
950 * Examples: modal closes, shortcode properties are removed, etc. |
|
951 * |
|
952 * @since 4.2.0 |
980 */ |
953 */ |
981 setMedia : function() { |
954 unsetPlayers : function() { |
982 return this; |
955 if ( this.players && this.players.length ) { |
983 }, |
956 _.each( this.players, function (player) { |
984 |
957 player.pause(); |
985 success : function(mejs) { |
958 wp.media.mixin.removePlayer( player ); |
986 var autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; |
959 } ); |
987 |
960 this.players = []; |
988 if ( 'flash' === mejs.pluginType && autoplay ) { |
961 } |
989 mejs.addEventListener( 'canplay', function() { |
962 } |
990 mejs.play(); |
963 }; |
991 }, false ); |
964 |
992 } |
965 /** |
993 |
966 * Shortcode modeling for playlists. |
994 this.mejs = mejs; |
967 * |
|
968 * @since 4.2.0 |
|
969 */ |
|
970 wp.media.playlist = new wp.media.collection({ |
|
971 tag: 'playlist', |
|
972 editTitle : l10n.editPlaylistTitle, |
|
973 defaults : { |
|
974 id: wp.media.view.settings.post.id, |
|
975 style: 'light', |
|
976 tracklist: true, |
|
977 tracknumbers: true, |
|
978 images: true, |
|
979 artists: true, |
|
980 type: 'audio' |
|
981 } |
|
982 }); |
|
983 |
|
984 /** |
|
985 * Shortcode modeling for audio. |
|
986 * |
|
987 * `edit()` prepares the shortcode for the media modal. |
|
988 * `shortcode()` builds the new shortcode after an update. |
|
989 * |
|
990 * @namespace |
|
991 * |
|
992 * @since 4.2.0 |
|
993 */ |
|
994 wp.media.audio = { |
|
995 coerce : wp.media.coerce, |
|
996 |
|
997 defaults : { |
|
998 id : wp.media.view.settings.post.id, |
|
999 src : '', |
|
1000 loop : false, |
|
1001 autoplay : false, |
|
1002 preload : 'none', |
|
1003 width : 400 |
995 }, |
1004 }, |
996 |
1005 |
997 /** |
1006 /** |
998 * @return {media.view.MediaDetails} Returns itself to allow chaining. |
1007 * Instantiates a new media object with the next matching shortcode. |
|
1008 * |
|
1009 * @since 4.2.0 |
|
1010 * |
|
1011 * @param {string} data The text to apply the shortcode on. |
|
1012 * @return {wp.media} The media object. |
999 */ |
1013 */ |
1000 render: function() { |
1014 edit : function( data ) { |
1001 AttachmentDisplay.prototype.render.apply( this, arguments ); |
1015 var frame, shortcode = wp.shortcode.next( 'audio', data ).shortcode; |
1002 |
1016 |
1003 setTimeout( _.bind( function() { |
1017 frame = wp.media({ |
1004 this.scrollToTop(); |
1018 frame: 'audio', |
1005 }, this ), 10 ); |
1019 state: 'audio-details', |
1006 |
1020 metadata: _.defaults( shortcode.attrs.named, this.defaults ) |
1007 this.settings = _.defaults( { |
1021 }); |
1008 success : this.success |
1022 |
1009 }, wp.media.mixin.mejsSettings ); |
1023 return frame; |
1010 |
1024 }, |
1011 return this.setMedia(); |
1025 |
1012 }, |
|
1013 |
|
1014 scrollToTop: function() { |
|
1015 this.$( '.embed-media-settings' ).scrollTop( 0 ); |
|
1016 } |
|
1017 },/** @lends wp.media.view.MediaDetails */{ |
|
1018 instances : 0, |
|
1019 /** |
1026 /** |
1020 * When multiple players in the DOM contain the same src, things get weird. |
1027 * Generates an audio shortcode. |
1021 * |
1028 * |
1022 * @param {HTMLElement} elem |
1029 * @since 4.2.0 |
1023 * @return {HTMLElement} |
1030 * |
|
1031 * @param {Array} model Array with attributes for the shortcode. |
|
1032 * @return {wp.shortcode} The audio shortcode object. |
1024 */ |
1033 */ |
1025 prepareSrc : function( elem ) { |
1034 shortcode : function( model ) { |
1026 var i = MediaDetails.instances++; |
1035 var content; |
1027 _.each( $( elem ).find( 'source' ), function( source ) { |
1036 |
1028 source.src = [ |
1037 _.each( this.defaults, function( value, key ) { |
1029 source.src, |
1038 model[ key ] = this.coerce( model, key ); |
1030 source.src.indexOf('?') > -1 ? '&' : '?', |
1039 |
1031 '_=', |
1040 if ( value === model[ key ] ) { |
1032 i |
1041 delete model[ key ]; |
1033 ].join(''); |
|
1034 } ); |
|
1035 |
|
1036 return elem; |
|
1037 } |
|
1038 }); |
|
1039 |
|
1040 module.exports = MediaDetails; |
|
1041 |
|
1042 |
|
1043 /***/ }), |
|
1044 /* 9 */ |
|
1045 /***/ (function(module, exports) { |
|
1046 |
|
1047 var MediaDetails = wp.media.view.MediaDetails, |
|
1048 AudioDetails; |
|
1049 |
|
1050 /** |
|
1051 * wp.media.view.AudioDetails |
|
1052 * |
|
1053 * @memberOf wp.media.view |
|
1054 * |
|
1055 * @class |
|
1056 * @augments wp.media.view.MediaDetails |
|
1057 * @augments wp.media.view.Settings.AttachmentDisplay |
|
1058 * @augments wp.media.view.Settings |
|
1059 * @augments wp.media.View |
|
1060 * @augments wp.Backbone.View |
|
1061 * @augments Backbone.View |
|
1062 */ |
|
1063 AudioDetails = MediaDetails.extend(/** @lends wp.media.view.AudioDetails.prototype */{ |
|
1064 className: 'audio-details', |
|
1065 template: wp.template('audio-details'), |
|
1066 |
|
1067 setMedia: function() { |
|
1068 var audio = this.$('.wp-audio-shortcode'); |
|
1069 |
|
1070 if ( audio.find( 'source' ).length ) { |
|
1071 if ( audio.is(':hidden') ) { |
|
1072 audio.show(); |
|
1073 } |
1042 } |
1074 this.media = MediaDetails.prepareSrc( audio.get(0) ); |
1043 }, this ); |
1075 } else { |
1044 |
1076 audio.hide(); |
1045 content = model.content; |
1077 this.media = false; |
1046 delete model.content; |
1078 } |
1047 |
1079 |
1048 return new wp.shortcode({ |
1080 return this; |
1049 tag: 'audio', |
1081 } |
1050 attrs: model, |
1082 }); |
1051 content: content |
1083 |
1052 }); |
1084 module.exports = AudioDetails; |
1053 } |
1085 |
1054 }; |
1086 |
1055 |
1087 /***/ }), |
1056 /** |
1088 /* 10 */ |
1057 * Shortcode modeling for video. |
1089 /***/ (function(module, exports) { |
1058 * |
1090 |
1059 * `edit()` prepares the shortcode for the media modal. |
1091 var MediaDetails = wp.media.view.MediaDetails, |
1060 * `shortcode()` builds the new shortcode after update. |
1092 VideoDetails; |
1061 * |
1093 |
1062 * @since 4.2.0 |
1094 /** |
1063 * |
1095 * wp.media.view.VideoDetails |
1064 * @namespace |
1096 * |
1065 */ |
1097 * @memberOf wp.media.view |
1066 wp.media.video = { |
1098 * |
1067 coerce : wp.media.coerce, |
1099 * @class |
1068 |
1100 * @augments wp.media.view.MediaDetails |
1069 defaults : { |
1101 * @augments wp.media.view.Settings.AttachmentDisplay |
1070 id : wp.media.view.settings.post.id, |
1102 * @augments wp.media.view.Settings |
1071 src : '', |
1103 * @augments wp.media.View |
1072 poster : '', |
1104 * @augments wp.Backbone.View |
1073 loop : false, |
1105 * @augments Backbone.View |
1074 autoplay : false, |
1106 */ |
1075 preload : 'metadata', |
1107 VideoDetails = MediaDetails.extend(/** @lends wp.media.view.VideoDetails.prototype */{ |
1076 content : '', |
1108 className: 'video-details', |
1077 width : 640, |
1109 template: wp.template('video-details'), |
1078 height : 360 |
1110 |
1079 }, |
1111 setMedia: function() { |
1080 |
1112 var video = this.$('.wp-video-shortcode'); |
1081 /** |
1113 |
1082 * Instantiates a new media object with the next matching shortcode. |
1114 if ( video.find( 'source' ).length ) { |
1083 * |
1115 if ( video.is(':hidden') ) { |
1084 * @since 4.2.0 |
1116 video.show(); |
1085 * |
|
1086 * @param {string} data The text to apply the shortcode on. |
|
1087 * @return {wp.media} The media object. |
|
1088 */ |
|
1089 edit : function( data ) { |
|
1090 var frame, |
|
1091 shortcode = wp.shortcode.next( 'video', data ).shortcode, |
|
1092 attrs; |
|
1093 |
|
1094 attrs = shortcode.attrs.named; |
|
1095 attrs.content = shortcode.content; |
|
1096 |
|
1097 frame = wp.media({ |
|
1098 frame: 'video', |
|
1099 state: 'video-details', |
|
1100 metadata: _.defaults( attrs, this.defaults ) |
|
1101 }); |
|
1102 |
|
1103 return frame; |
|
1104 }, |
|
1105 |
|
1106 /** |
|
1107 * Generates an video shortcode. |
|
1108 * |
|
1109 * @since 4.2.0 |
|
1110 * |
|
1111 * @param {Array} model Array with attributes for the shortcode. |
|
1112 * @return {wp.shortcode} The video shortcode object. |
|
1113 */ |
|
1114 shortcode : function( model ) { |
|
1115 var content; |
|
1116 |
|
1117 _.each( this.defaults, function( value, key ) { |
|
1118 model[ key ] = this.coerce( model, key ); |
|
1119 |
|
1120 if ( value === model[ key ] ) { |
|
1121 delete model[ key ]; |
1117 } |
1122 } |
1118 |
1123 }, this ); |
1119 if ( ! video.hasClass( 'youtube-video' ) && ! video.hasClass( 'vimeo-video' ) ) { |
1124 |
1120 this.media = MediaDetails.prepareSrc( video.get(0) ); |
1125 content = model.content; |
1121 } else { |
1126 delete model.content; |
1122 this.media = video.get(0); |
1127 |
1123 } |
1128 return new wp.shortcode({ |
1124 } else { |
1129 tag: 'video', |
1125 video.hide(); |
1130 attrs: model, |
1126 this.media = false; |
1131 content: content |
1127 } |
1132 }); |
1128 |
1133 } |
1129 return this; |
1134 }; |
1130 } |
1135 |
1131 }); |
1136 media.model.PostMedia = __webpack_require__( "+RYg" ); |
1132 |
1137 media.controller.AudioDetails = __webpack_require__( "6pp6" ); |
1133 module.exports = VideoDetails; |
1138 media.controller.VideoDetails = __webpack_require__( "Xcj4" ); |
|
1139 media.view.MediaFrame.MediaDetails = __webpack_require__( "RQe2" ); |
|
1140 media.view.MediaFrame.AudioDetails = __webpack_require__( "Bdio" ); |
|
1141 media.view.MediaFrame.VideoDetails = __webpack_require__( "m85o" ); |
|
1142 media.view.MediaDetails = __webpack_require__( "/4UI" ); |
|
1143 media.view.AudioDetails = __webpack_require__( "LX3m" ); |
|
1144 media.view.VideoDetails = __webpack_require__( "MT9K" ); |
1134 |
1145 |
1135 |
1146 |
1136 /***/ }) |
1147 /***/ }) |
1137 /******/ ]); |
1148 |
|
1149 /******/ }); |